CAN bus (Controller Area Network)

The Controller Area Network, universally called the CAN bus, was created to tame the explosion of wiring inside automobiles. As cars gained electronic control units for the engine, brakes, transmission, and dashboard, connecting each pair of units with dedicated wires became impossibly heavy and complex. Robert Bosch GmbH developed CAN in the 1980s, introducing it publicly in 1986, to replace that wiring harness with a single shared serial bus that every controller could read from and write to. The Bosch CAN specification, published as Version 2.0, is the foundational document for the protocol and is reproduced in vendor reference manuals such as the one hosted by NXP.

CAN’s defining choice is that it is message-based rather than address-based. A node does not send a message to a particular destination; instead every message carries an identifier describing its content, and that identifier is broadcast to all nodes on the bus. Each receiving node decides through filtering whether the message is relevant to it. The Bosch specification defines the message frame with this identifier field, a control field giving the data length, a data field of zero to eight bytes, and a CRC field for error detection, all transmitted most-significant-bit first.

The identifier does double duty as a priority. Because CAN uses a wired, dominant-and-recessive signaling scheme on its differential pair, when two nodes begin transmitting at the same instant they arbitrate bit by bit: a node sending a dominant bit overrides one sending a recessive bit, and the node with the numerically lower identifier wins while the other backs off and retries. This arbitration is non-destructive, meaning the winning message is not corrupted by the collision and suffers no delay, which is what lets CAN guarantee that the most urgent message always gets through first. Version 2.0 defines both the original 11-bit identifier (Part A) and an extended 29-bit identifier (Part B) that can share the same bus.

Robustness is the other half of CAN’s reputation. The specification builds in five complementary error-detection mechanisms, including the CRC, bit monitoring, and frame-format checks, and it adds a fault-confinement scheme in which a node that detects too many errors progressively backs off and can ultimately take itself off the bus, preventing a single failing controller from jamming the whole network. The differential two-wire physical layer, where the signal is read as the difference between the two lines, gives strong immunity to the electrical noise that fills an engine bay.

Those properties carried CAN far beyond the car. It was standardized internationally as ISO 11898 and became standard equipment in vehicles, where the OBD-II diagnostic port that mechanics plug into typically speaks CAN. The same determinism, priority, and noise immunity made it popular in factory automation, medical equipment, agricultural machinery, and building control, and it remains a defining example of how a well-chosen embedded bus can outlive the specific problem it was built to solve.

Sources

Last verified June 8, 2026