CAN Bus vs. DoCAN
Comparing 2 standards across 13 specifications. 13 key differences identified.
Controller Area Network (CAN Bus, invented by Robert Bosch GmbH in 1986 and standardized under ISO 11898) is the multi-master, message-broadcast serial bus governing electronic control units (ECUs). Operating at 500 kbps (High-Speed CAN) over a twisted pair with 120-ohm termination resistors, utilizing differential voltage signaling (CAN_H / CAN_L) and non-destructive bitwise arbitration.
Diagnostics on CAN (DoCAN, standardized under ISO 15765-2 and ISO 15765-4) is the network and transport layer protocol that enables diagnostic protocols (such as UDS ISO 14229 and OBD-II ISO 15031) to transmit multi-byte messages (up to 4095 bytes) over 8-byte CAN bus frames. Managing packet segmentation, Flow Control handshakes, and block sizes.
Specification Comparison Table
13 Parameters| Parameter / Spec | ||
|---|---|---|
|
Standardization
|
ISO 11898-2 (High-Speed physical medium) / SAE J2284 | ISO 15765-2 (ISO-TP Network Layer) / ISO 15765-4 (Emissions CAN) |
|
Transmission Speed
|
500 kbps standard for powertrain (Engine, Transmission, ABS, Airbag); 125-250 kbps for body electronics | — |
|
Differential Voltage Levels
|
Recessive state (Logic 1): CAN_H = 2.5V, CAN_L = 2.5V (Diff = 0V) | Dominant state (Logic 0): CAN_H = 3.5V, CAN_L = 1.5V (Diff = 2.0V) | — |
|
Bus Termination
|
Exactly two 120 Ω terminating resistors at opposite physical ends of the bus (total measured resistance between CAN_H & CAN_L = 60.0 Ω) | — |
|
Frame Format (CAN 2.0B)
|
11-bit standard identifier or 29-bit extended identifier with up to 8 data payload bytes | — |
|
Bitwise Arbitration
|
Dominant zero bits overwrite recessive one bits; the lowest numerical CAN ID has the highest priority and never loses arbitration | — |
|
Fault Confinement
|
Hardware error counters automatically transition faulty nodes from Error-Active -> Error-Passive -> Bus-Off isolation | — |
|
Maximum Message Length
|
— | Up to 4,095 bytes (segmented across multiple sequential 8-byte CAN frames) |
|
Single Frame (SF–PCI 0x0_)
|
— | Used when total payload fits in a single frame (up to 7 bytes in Classic CAN; byte 0 indicates data length) |
|
First Frame (FF–PCI 0x1_)
|
— | First frame of a segmented message; bytes 0-1 encode the total 12-bit message length (e.g. 0x10 0x80 = 128 bytes) |
|
Flow Control Frame (FC–PCI 0x3_)
|
— | Receiver sends Flow Status (Clear to Send), Block Size (BS), and Separation Time (STmin) pacing inter-frame delays |
|
Consecutive Frame (CF–PCI 0x2_)
|
— | Transmits remaining data with a 4-bit rolling Sequence Number (0 to 15) to detect dropped packets |
|
Emissions OBD Request IDs
|
— | Standard 11-bit functional broadcast ID: 0x7DF | Standard response IDs: 0x7E8 (Engine ECM), 0x7E9 (TCM) |