Protocol Stacks

Protocol Stack


Symbolic image of Lego bricks for J1939 FD

The J1939 protocol stack offers the complete functionality for integration of the SAE J1939 standard into your devices. Versatile configuration options facilitate individual customization to a target product. Example codes facilitate the startup phase, enabling the user to focus on the implementation of their own application. The open CAN driver (CANpie) provides the flexibility to use any CAN controller available on the market.

The bridge function to the CANopen Slave protocol stack facilitates realization of devices with multi protocol capability. In addition, less development time is needed for the implementation of parameters as these are addressed by all protocols in the same way.

Truck with ECU and Logo SAE J1939


  • Functionality according to SAE specification J1939
  • Modular software structure with versatile configuration options
  • Adjustment to target product without affecting the code structures
  • Optimized for low resource requirements (ROM / RAM)
  • Wide range of supported CAN controllers
  • Standardized interface for the CAN driver (CANpie FD)
  • Cyclic transmission and reception of J1939 messages
  • Transport protocols (TP.DT and TP.BAM) for transmission of large data volumes
  • Setting of node address via address claiming
  • Supervision of timeouts for J1939 messages
  • Bridge function for the CANopen Slave protocol stack

Scope of Delivery

  • J1939 protocol stack as C99 source code
  • Ready-to-run examples for various demo boards
  • Manual in English (online documentation at Github)
  • Site-related company licence without royalty fees
  • 12 months technical support by email or telephone

Fair Partnership policy offers company licence and free support service

J1939 protocol stack - fair partnership with MicroControl

Users of MicroControl protocol stacks benefit from 12 months free support service from date of purchase. A subsequent optional maintenance agreement will also contain automatic updates of the software.

You would like to get more information?

MicroControl team member on the phone

+49 2241 - 25 65 9 - 0

Write an email or give us a call.

Ordering Information

Item no.
J1939 Protocol Stack

Protocol stack as C99 source code, example programs and documentation in English provided by download link

CANpie FD Driver

API for the CAN implementation for the respective microcontroller

Logo J1939

To complement the Microcontrol product portfolio, we also offer J1939 workshops, software tools as well as technical advice and support in the development of your application.

More about J1939

J1939 is a standard that is widely used in the automotive and commercial vehicle industry and enables communication between the various systems of a vehicle. The J1939 protocol was developed by the Society of Automotive Engineers (SAE).

Basics of the J1939 Protocol

J1939 provides a reliable and standardised method of communication between the control units in commercial vehicles via the CAN bus. Within J1939, the control units are referred to as Electronic Control Units (ECUs). Up to 254 ECUs can be addressed logically in a network. The original J1939 version uses the Classic Extended Frame Format (CEFF) with a 29-bit identifier, which means that only 8 bytes can be transmitted in the user data. J1939 offers both a connection-orientated (Connection Mode Data Transfer) and a connectionless (Broadcast Announce Message) transport protocol for transferring larger data volumes. The maximum data size is limited to 1785 bytes for both transport protocols.

All signals within the J1939 specification are assigned to a parameter group (PG), each parameter group has a unique number (Parameter Group Number, PGN). The PGN is an 18-bit value and is transmitted within the 29-bit identifier of the CAN message.

The bit rates 250 kBit/s and 500 kBit/s are specified on the CAN physical layer.

Technical Specifications

The J1939 specification is divided into various documents and is available for purchase via the SAE website ( The following documents are required to get started:

  • SAE J1939-21 (Data Link Layer): in contrary to what the title suggests, the protocols are defined here
  • SAE J1939-71 (Vehicle Application Layer): details of the powertrain in the vehicle
  • SAE J1939DA (Digital Annex): Excel table showing all parameter group numbers (PGN) and signals.


J1939 in Vehicle Diagnostics

The SAE J1939-73 specification (Application Layer – Diagnostics) is used in the field of vehicle diagnostics. The PGNs known as Diagnostic Message (DM) largely correspond to the functional scope of the Unified Diagnostic Service (UDS). In contrast to UDS, however, the J1939 diagnostic messages are sent independently by the ECU. The diagnostic messages contain a so-called Diagnostic Trouble Code (DTC) which helps detecting the affected signal, the cause of the fault and the number of faults. The use of DM messages enables fast and accurate fault detection and is therefore essential in modern vehicle maintenance.

Implementation of J1939 in various Industries

The protocol is not only used in commercial vehicles, but also in other areas such as agriculture or maritime applications. The connecting element in the development of these standards was always the powertrain (diesel engine).

The ISO 11783 specification (tractors and machinery for agriculture and forestry) defines the communication in agricultural vehicles, i.e. between the tractor and the implemented devices. The ISO 11783 standard features an extension of the J1939 transport protocol for large data amounts.

The NMEA 2000 standard is used in maritime applications. The Fast Packet Protocol is able to transmit larger data amounts than the J1939 transport protocol. This standard also has a heartbeat mechanism for ECU monitoring.

The ISO 11992 specification (Road vehicles – Interchange of digital information on electrical connections between towing and towed vehicles) defines the message exchange between tractor and trailer in road vehicles. The standard is based on the J1939 protocol, but uses a bit rate of 125 kbit/s on the physical layer.

J1939 in Safety Applications

The SAE J1939-76 specification (Functional Safety Communications Protocol) was developed for use in safety-critical applications. For the transmission of safety-critical data, an additional message (Safety Header Message, SHM) is sent prior to the message containing the critical data (Safety Data Message, SDM). The two messages SHM and SDM then form a Safety Data Group (SDG).

Currently, the use of SAE J1939-76 is not recommended as certification in accordance with the standards for functional safety is not possible because the CRC polynomial is too weak.

Future of J1939

SAE J1939-22 was published in March 2022 (CAN FD Data Link Layer). This allows transmission of up to 64 bytes in a CAN message. In addition, this new standard makes facilitates the use of both 29-bit identifiers (frame format FEFF) and 11-bit identifiers (format FBFF). With the spread of CAN FD in the commercial vehicle industry, the importance of SAE J1939-22 will also increase.


Can J1939 and CANopen protocols be used in one application?

Yes, the J1939 and CANopen protocols can be used together in the same network. This is explicitly stated in SAE J1939-21. When integrating the system, please note that CANopen messages (11-bit identifiers) have a higher priority during the arbitration phase.

Is it possible to access a CANopen object dictionary via J1939?

For devices that have to support both the J1939 and CANopen protocols, there is a standardized interface for accessing a CANopen object dictionary using J1939 messages. The parameter groups CAM11 and CAM21 define the SDO access, the CANopen Emergency message is supported via the parameter group EMCY. The parameter groups are listed in J1939DA, the specification is defined in CiA 510.


J1939 protocol stack
Online documentation


MicroControl Flyer Protocol Stacks
PDF [715 KB]

Any questions?

Send inquiry for J1939 protocol stack

+49 2241 – 25 65 9 – 0

Write an email or give us a call.