J1939 Protocol Stack


The J1939 Protocol Stack (in ANSI-C) is a complete implementation of the SAE J1939 protocol. By providing all communication mechanisms defined in the SAE J1939 specification the stack allows the developer to focus solely on the implementation of the application.

Beside the proven can4linux driver, the following microcontroller drivers are available:

  • Atmel 89c51cc01/02/03
  • Atmel AT90CAN32/64/128
  • Beck IPC SC1x3
  • Freescale MC56F8323
  • Freescale MC9S12DG128
  • Infineon C166/C167
  • Infineon Tricore
  • Janz CB-USB
  • NEC PD70F3476
  • NXP LPC2129
  • Silabs C8051F040
  • ST Microelectronics ST10F269
  • ST Microelectronics STR7
  • ST Microelectronics STM32F10x

as well as for the stand-alone CAN-controller:
  • Philips SJA1000
  • Microchip MCP2510

An adaption to other target systems can be performed easily within a few days due to the modular structure of the J1939 Protocol Stack based on the OSI layer model.


The ANSI-C compliant J1939 Protocol Stack provides the following features:

  • Transmission and reception of application-specific messages
  • Pre-filtering of messages according to PGN and source address
  • Support for the transport protocols TP-BAM and TP-CM to transmit larger blocks of data
  • parallel communication with several consumers
  • Support of "Address Claiming" for dynamic address assignment
  • Multi-CAN version supports multiple CAN lines

The complete and detailed reference manual and the ready-to-run examples allowa fast access to the J1939 Protocol Stack with a minimum of time.

To integrate the J1939 Protocol Stack into an existing project its files have to be added to the application. The stack can be adopted to the requirements of the application by simple configuration files, which are included in the project. Thereby the required amount of memory can be optimally adjusted to the application. Further required hardware resources for the stack are a CAN interrupt and a cyclic timer interrupt.

Scope of delivery

  • J1939 Protocol Stack with separate driver interface
  • CPU/CAN driver
  • numerous, immediately compilable examples
  • reference manual containing descriptions of all API functions, including parameters and return values
  • support by E-Mail and update service free of charge within the support period

Development Tools

The CAN-Analyzer CAN-REport is an efficient and versatile tool for analysis and starting of CAN-based networks like J1939. The J1939-specific interpretation of CAN messages is provided by a supplementary software module.

This extension interprets and visualizes J1939 messages. Furthermore it provides functions to send J1939 messages by the CAN-REport.

To connect the CAN-REport to the CAN network various PC-CAN interfaces are available for e.g. USB, RS232, PC-Card, PCI and PCI-Express interfaces.