What is the Difference Between SAE J1939 and NMEA 2000?
After developing and programming multiple SAE J1939 devices over the years, I was curious to determine the difference between SAE J1939 and NMEA 2000. There are some valid reasons why I didn't consider an expansion into NMEA 2000, and they all have to do with the immense costs related to NMEA 2000 development. First of all, you must be a member of NMEA before you can use the term "NMEA 2000" on your website, brochures, or documentation. Membership is affordable, but hardware/software development involves an initial investment of several thousands of dollars for the NMEA 2000 Standard, manufacturer code, product code, and certification.
Nevertheless, NMEA 2000 is an attractive market with great potential, thus looking into the differences between SAE J1939 and NMEA 2000 became more and more appealing.
NMEA 2000, abbreviated to NMEA2k or N2K and standardized as IEC 61162-3, is a plug-and-play communications standard used for connecting sensors and display units in marine applications. NMEA 2000 utilizes Controller Area Network (CAN Bus) as its hardware layer. The higher-level protocol format is based on SAE J1939, a protocol specifically designed for diesel engines (offroad vehicles, trucks, tractors, ships, tanks, trains, etc.). However, NMEA 2000 uses different data (PGN) than SAE J1939, i.e., specific messages for the marine environment. Typical data on an NMEA 2000 network include:
- Position latitude and longitude.
- GPS status.
- Steering commands to autopilots.
- Waypoint lists.
- Wind sensor data.
- Engine sensor data.
- Depth sounder sensor data.
- Battery status data.
Following the SAE J1939 protocol, NMEA 2000 messages are transmitted as packets that consist of a header followed by (typically) eight bytes of data. The header for a message specifies the transmitting device (source address), the receiving device (indicated by the destination address, or all devices through message broadcasting), the message priority, and the PGN (Parameter Group Number). The PGN indicates the nature of the message, and the receiving node(s) determine how to interpret the data bytes.
Any data field longer than eight bytes involves the Transport Protocol (TP), which allows the transmission of up to 1,785 bytes. However, NMEA 2000 also supports a "Fast Packet" to transmit up to 223 bytes. Compared to the Transport Protocol, the Fast Packet does not support handshaking but is faster than TP.
In summary, the major differences between SAE J1939 and NME 2000 are:
- Different data (PGNs)
- NMEA 2000 supports additional Fast Packet
As a side note:
During my research, I found an entry in the Maretron Knowledge Base that states: "In J1939, manufacturers "hard code" the node address for each product connected to the network, whereas NMEA 2000 products negotiate and resolve their node addresses automatically when they are plugged into a network, making NMEA 2000 "plug-and-play" as opposed to J1939, which requires manual intervention whenever a new product is connected to a J1939 network."
This statement is recklessly wrong. Yes, there may be cases where nodes are hard-coded, and thus ignoring SAE J1939 capabilities. The SAE J1939 Standard defines an ingeniously designed address claim procedure to support "plug-and-play," which was also adopted by NMEA 2000. For further information, see Guide To SAE J1939 - Address Claiming Procedure Overview...
Teensy 4.0 NMEA 2000 Board with 480x320 3.5" Touch LCD
The Teensy 4.0 (installed) board comes with a NMEA 2000 connector, and it includes a 480x320 3.5" capacitive touch screen with ILI9488 LCD controller. The connection to the Teensy is established via SPI running at 60 MHz. The board can be powered through the Teensy's USB port or via an external 7 to 24 VDC supply connected to the onboard SMPS (Switch Mode Power Supply).