Software Products
J1939
Protocol
Stack
There are two J1939 software packages available: ssJ1939-Full and ssJ1939-Light. ssJ1939-Full handles reception and transmission of standard single frame and multi-frame (i.e. Transport Protocol) J1939 messages. Also, ssJ1939-Full handles address claim arbitration specified by the network management layer. ssJ1939-Light is identical to ssJ1939-Full without support for the transport protocol which is used for multi-frame messages. If you have questions about our software, please see our J1939 Protocol Stack FAQ for possible answers.
J1939 Protocol Stack Details:
- J1939-82 compliant
- MISRA C compliant
- ANSI C source code
- Use with or without an RTOS
- Use with 8, 16, 32, or 64-bit CPU
- J1939-21 and J1939-22 (CAN-FD)
- Complete user’s reference manual
7.7x
lower CPU cycles per message
Approx. for HCS12 CPU
2.6x
smaller
code size
Approx. for HCS12 CPU
SAE J1939
Introduction
This article is intended to give engineers a brief overview of the SAE J1939 protocol. For details on the specification itself, please visit the Society of Automotive Engineers. Here is a printable version of this J1939 introduction and Bosch CAN specification.
SAE J1939 is a replacement for the SAE J1587/J1708 network which has been used for medium and heavy duty commercial vehicles for the past 20 years. Today SAE J1939 is used as the standard communications bus for commercial vehicle’s diagnostic and control applications. Due to its popularity and success, it has been adopted by the agricultural (ISO 11789) and marine industries (NMEA 2000).
J1939 Overview
SAE J1939 is a high level communications protocol, which operates on a Controller Area Network (CAN) bus. SAE J1939 specifies exactly how information (e.g. engine RPM) is exchanged between electronic control units (ECUs) on a vehicle.
It defines the data’s priority, size, scaling, and offset. For example, J1939 specifies engine RPM to have a default priority of 3, to have a size of 16-bits, a resolution of 0.125 rpm/bit, and an offset of 0.
The standard goes on to define many other aspects, including message timeouts, how large messages are fragmented and reassembled, the network speed, the physical layer, and how applications acquire network addresses.
J1939
Specifications
- SAE J1939 Parent Document
- SAE J1939-11 Physical Layer, 250 Kbps
- SAE J1939-13 Off-Board Diagnostic Connector
- SAE J1939-14 Physical Layer, 500 Kbps
- SAE J1939-15 Reduced Physical Layer, 250 Kbps
- SAE J1939-17 CAN FD Physical Layer 500 Kbps/2 Mbps
- SAE J1939-21 Data Link Layer
- SAE J1939-22 CAN FD Data Link Layer
- SAE J1939-31 Network Layer
- SAE J1939-71 Vehicle Application Layer
- SAE J1939-73 Vehicle Diagnostic Layer
- SAE J1939-74 Application – Configurable Messaging
- SAE J1939-75 Application Layer – Generator Sets and Industrial
- SAE J1939-81 Network Management
- SAE J1939-82 Compliance – Truck and Bus
- SAE J1939 Protocol Description
Ports
Our real-time SAE J1939 protocol stack is completely platform independent and written in the ANSI C programming language. It is the CAN device driver, ssCAN, that is target specific and incorporates the details for a given microcontroller.
Together ssJ1939 and ssCAN form a complete ported system allowing customers to be up and running almost immediately. Our ssCAN device driver has been ported to over 40 different microcontrollers. Below is the list of available ports. Please contact us if you are interested in a port or device driver for a hardware platform that is not listed.
See our full list of available ports.
Texas Instruments
- Texas Instruments RM4x (DCAN)
- Texas Instruments LM3Sx
- Texas Instruments TMS470x
- Texas Instruments TMS470Mx
- Texas Instruments TMS570x
- Texas Instruments Tiva TM4C
- Texas Instruments F28M35xx
- Texas Instruments TMS320F280x
- Texas Instruments TMS320F281x
- Texas Instruments TMS320F282x
- Texas Instruments TMS320F283x
- Texas Instruments AM3x – Sitara
- Texas Instruments DM8x – DaVinci
- Texas Instruments MSPM0
- Texas Instruments MSPM0G
STMicro
- STMicro ST7
- STMicro ST10
- STMicro STR7
- STMicro STM8
- STMicro SPC56
- STMicro STM32L4x
- STMicro STM32G0x
- STMicro STM32G4x
- STMicro STM32F0x
- STMicro STM32F1x
- STMicro STM32F2x
- STMicro STM32F3x
- STMicro STM32F4x
- STMicro STM32F7x
Microchip
- Microchip PIC18
- Microchip PIC24
- Microchip PIC32
- Microchip dsPIC30
- Microchip dsPIC33F
- Microchip dsPIC33E
- Microchip dsPIC33CK
- Microchip MCP2515
NXP
- NXP S32
- NXP LPC11xx
- NXP LPC17xx
- NXP LPC21xx
- NXP LPC23xx
- NXP SJA1000
- NXP KS22
- NXP HCS08
- NXP HCS12
- NXP HCS12X
- NXP MC68xxx
- NXP MCF5xxx
- NXP MPC5xxx
- NXP 56F83xxx
- NXP Kinetis Kxx
Miscellaneous
- Linux
- Windows XP/7/Embedded
- Atmel SAM7
- Atmel AT90
- Infineon C16x
- Infineon TriCore
- Intel 82527
- Silicon Labs C8051
- Xilinx LogiCORE AXI (axi_can)
Talk to us
Please contact us if you are interested in a port or device driver for a hardware platform that is not listed.
Experience Summary
1000
Global
Customers
500
Protocol
Stacks
300
CAN
Device Drivers
75
Flash
Bootloaders
60
Microcontrollers
& DSPs
10
Real Time Operating Systems