All protocols
Application over 29-bit CAN

SAE J1939

Heavy-duty CAN application layer for trucks and buses.

Bitrate
250 / 500 kbit/s
Topology
CAN bus
Introduced
1994

Overview

J1939 standardizes Parameter Group Numbers (PGNs) and Suspect Parameter Numbers (SPNs) on top of 29-bit CAN. It is the backbone of trucks, agricultural and construction equipment.

Frame format

FieldBitsDescription
Priority3Message priority (0 highest)
PGN18Parameter Group Number
Source Addr8Source ECU address
Data0–64PGN-specific payload

Byte structure — request & response

SAE J1939 (over 29-bit CAN)

Frame template
[Priority:3b][R:1b][DP:1b][PF:8b][PS:8b][SA:8b] = 29-bit CAN ID + [Data:0–8B]
Request
OffSizeFieldValueDescription
03 bitPriority0b110 (6)0 = highest, 7 = lowest.
1 bitReserved0Reserved bit.
1 bitData Page0Selects PGN page 0/1.
8 bitPDU Format (PF)0xEA0xEA = PGN 59904 Request.
8 bitPDU Specific (PS)0x00Destination address (0x00 = engine ECU).
8 bitSource Addr0xF9Tester source address.
0–23 BRequested PGN00 EE 00Little-endian PGN being requested (0x00EE00 = Address Claim).
Response
OffSizeFieldValueDescription
03 bitPriority0b110Same priority class.
8 bitPF0xEE0xEE → response PGN 60928 Address Claim.
8 bitPS0xFFBroadcast.
8 bitSA0x00Engine ECU source.
0–78 BData00 00 40 7D 00 00 00 00Address-claim NAME field.

J1939 frames always use the 29-bit CAN ID. The 'Request' PGN (59904) lets nodes ask any other node for any PGN.

Use cases

  • · Trucks
  • · Buses
  • · Agricultural machinery
  • · Marine

Pros

  • Standardized PGN/SPN catalog
  • Plug-and-play across vendors

Cons

  • Inherits CAN bandwidth limits

Request / Response examples

Engine speed PGN 61444 (0xF004)

Request
ID:0x0CF00400Data:FFFFFF007D00FFFF
Response
(broadcast)

Bytes 3–4 = 0x007D = 125 → 1000 RPM (factor 0.125).