CAN (Controller Area Network) is a communication protocol enabling electronic control units (ECUs) to exchange real-time data without requiring a central computer. The system uses two twisted wires, CAN High and CAN Low, to minimize electromagnetic interference.
Voltage Behavior
In recessive mode, both wires sit at 2.5V. In dominant mode, CAN High rises to 3.75V while CAN Low drops to 1.25V.
Decoding CAN Messages: A Practical Example
Using a John Deere 6105R tractor as an example, the process involves identifying engine speed transmitted via the CAN Bus at 500 kb/s.
Step 1: Identify the message ID
The engine speed parameter uses message ID 0CF00400.
Step 2: Convert to PGN
The Parameter Group Number (F004 hex) converts to 61444 in decimal.
Step 3: Locate the data bytes
Engine speed occupies the fourth and fifth bytes (C6 and 26 in hex).
Step 4: Apply little-endian formatting
Byte concatenation yields 26C6 (hex) = 9926 (decimal).
Step 5: Apply the scaling factor
Multiply by 0.125 to get 1240 RPM. The engine speed parameter (SPN 190 per SAE J1939-17) transmits every 100 milliseconds, providing continuous monitoring across a range of 0 to 8,031.875 RPM.
Implementation via CustomCAN
Configuration requires:
- Baud rate: 500 kb/s
- Message type: J1939 (for extended CAN IDs)
- Interface: CAN1
- Destination: CustomCAN IO device
The logical analyzer visualization shows how signal states represent binary data: high signals indicate dominant mode (bit 0), while low signals represent recessive mode (bit 1).

