Skip to content

General

J1939 is an SAE standard which defines a higher layer protocol for the CAN bus. J1939 is widely used in heavy-duty vehicles, e.g. buses and trucks. It specifies exactly how information is exchanged between Electronic Control Units (ECUs) in a vehicle.

The J1939 standard includes several documents that specify different layers. The main documents are:

  • J1939-11 Physical Layer
  • J1939-21 Data Link and Transport Layer
  • J1939-31 Network Layer
  • J1939-71 Vehicle Application Layer
  • J1939-73 Application Layer - Diagnostics
  • J1939-81 Network Management

For more detailed information, go to the official SAE J1939 webpage.

How J1939 Works: Key Concepts

To understand how data is organized and transmitted on a J1939 network, it is helpful to know these core concepts:

  • PGN (Parameter Group Number): Think of this as the message identifier. It groups related signals together. For example, a specific PGN might be dedicated to "Electronic Engine Controller 1".
  • SPN (Suspect Parameter Number): This is the specific data signal inside the PGN. Following the previous example, SPNs within that PGN would include specific values like "Engine Speed" or "Engine Torque".
  • Source Address (SA): A unique number identifying exactly which ECU on the network sent the message.
  • Destination Address (DA): Identifies which ECU the message is intended for (used in Peer-to-Peer messaging). If the message is a broadcast, this is replaced by a Group Extension.

CANtrace J1939 Features

CANtrace features built-in support for the J1939 protocol. When analyzing a J1939 network, you can enable J1939 interpretation in the Trace tab to interpret the message ID and/or associate the included TKE_J1939 database file to interpret the signals. CANtrace also assembles J1939 transport protocol frames and will show the combined long frame in the trace window.

Interpretation

29 Bit CAN extended identifier has the below structure in the J1939 protocol:

Figure: 29 Bit CAN extended identifier structure

  • When PDU Format < 0xF0, the message is Peer-to-Peer and PDU Specific contains the destination address.
  • When PDU Format >= 0xF0, the message is Broadcast and PDU Specific contains the group extension.

CANtrace interpretation fields for the J1939 protocol are:

  • PGN means PGN
  • Src means Source Address
  • Prio means Priority
  • DP means DP, Data Page
  • PDU form means PDU Format
  • PDU spec means PDU Specific

Example

Figure: J1939 Interpretation Example

For example, the message with ID 0xCFEE5E6x is a 29-bit extended CAN identifier. "x" means it's an extended identifier.

  • PGN field is 0xFEE5
  • Source address is 0xE6
  • Priority field is 0x3
  • DP field is 0x0
  • PDU Format is 0xFE, which means this is a broadcast message.
  • Therefore, the PDU Specific contains the Group Extension which value is 0xE5.