Software Products


Our SAE J1939 protocol stack was designed by Simma Software, a nationally recognized CAN bus expert, to meet the demanding needs of the high speed Controller Area Network (CAN and CAN-FD). Our source code uses a high performance modular design and has a simple API. Benchmarks have shown the stack to be 800% more efficient than other commercially available J1939 software solutions. The software protocol stack is well documented and has been used in more than a quarter of a milliion embedded systems.

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:

lower CPU cycles per message

Approx. for HCS12 CPU

code size

Approx. for HCS12 CPU

SAE J1939


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.



  • 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


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 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 PIC18
  • Microchip PIC24
  • Microchip PIC32
  • Microchip dsPIC30
  • Microchip dsPIC33F
  • Microchip dsPIC33E
  • Microchip dsPIC33CK
  • Microchip MCP2515
  • 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
  • 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






Device Drivers




& DSPs


Real Time Operating Systems

Our Customers

Customer Logos

Our Partners

TI Partner Logo Infineon Partner Logo Microchip Partner Logo ST Partner Logo NXP Partner Logo
    Your Cart
    Your cart is emptyReturn to Store