2026-06-12 · CAN · automotive · embedded · fieldbus

Why the car chose CAN

In the early 1980s a Mercedes S-Class had a problem that had nothing to do with engines: the wiring loom. Every new function — ABS, electronic ignition, climate control — needed its own dedicated copper runs between modules. Looms were approaching two kilometers of wire and tens of kilograms, and the connector count was becoming a warranty nightmare. Bosch’s answer, presented at SAE in 1986, was the Controller Area Network. The 1991 S-Class (W140) shipped it; thirty-five years later there is no car on sale without it.

Two top-view car outlines compared: a 1985 car where six modules are connected point-to-point by fifteen crossing wires, and a 1992 car where the same six modules hang as short stubs off a single CAN twisted pair terminated with 120 ohms at both ends. Figure 1 — The problem statement. With point-to-point wiring, links grow as n·(n−1)/2; with a bus, adding a module is adding a stub.

The cast: what actually runs in a car today

CAN didn’t stay alone. Each network in a modern vehicle is a price/performance decision:

ProtocolRateWiresTopologyTypical duty
LIN19.2 kbit/s1single masterwindow lifts, mirrors, seat motors
CAN125 k – 1 Mbit/s2 (diff.)multi-master buspowertrain, body, chassis backbone
CAN FDup to 5–8 Mbit/s data phase2multi-master bussame buses, bigger payloads (64 B)
FlexRay2 × 10 Mbit/s2 or 4time-triggeredactive suspension, steer/brake-by-wire
Automotive Ethernet100 M – 10 Gbit/s2switched point-to-pointcameras, ADAS, infotainment, OTA

The pattern: LIN below CAN, Ethernet above it. LIN exists because a window lift doesn’t deserve a CAN transceiver’s cost — one wire, one master, done. Ethernet exists because a camera stream doesn’t fit in anything else. CAN holds the middle: everything that controls the car.

Top view of a modern vehicle showing five networks in different colors and line styles: a white powertrain CAN to engine and transmission, an amber dashed body CAN to the door module with green dashed LIN twigs to mirror and window, a salmon dash-dot FlexRay to brakes and steering, and cyan automotive Ethernet to camera, radar and head unit, all meeting in a central gateway. Figure 2 — One car, five networks, one gateway routing between them. The OBD-II port is just another CAN node.

Why CAN won: the arbitration trick

Plenty of buses could replace wires. CAN won because of how it decides who talks — and to see it you only need one electrical fact: the bus has a dominant state (logical 0, driven) and a recessive state (logical 1, idle). If any node drives dominant, the whole bus reads dominant. Electrically, the bus is a giant AND gate.

Every frame starts with its identifier, sent MSB first. Colliding nodes transmit and listen at the same time:

Three CAN nodes arbitrating, each waveform in its own color: node C sends recessive at bit ID10 while the bus stays dominant and drops out first; node A survives until ID5 and drops out the same way; node B's frame continues untouched, and the green bus trace at the bottom equals node B's transmission exactly. Figure 3 — Bitwise arbitration. Losers discover they lost by reading the bus; the winner never even notices the collision.

A node that writes a recessive 1 but reads back a dominant 0 has just learned that someone with a more important message is talking — it stops transmitting and becomes a receiver, mid-bit, with no damage done. Compare the era’s alternative: Ethernet of the 1980s detected collisions, destroyed both frames, and made everyone retry after a random backoff. In a car, where the airbag module shares a wire with the seat heater, “random backoff” is not an answer:

  • Arbitration is lossless. The winning frame goes through on the first try — a collision costs zero bus time.
  • Priority is the identifier. Lower ID = more important, by construction. The brake message cannot be delayed by the climate control chatter. Worst-case latency of the highest-priority message is one frame length (~130 µs at 500 kbit/s) — you can put that number in a safety calculation.
  • It’s multi-master. No token to lose, no central scheduler to fail. Any node can initiate whenever the bus idles.

The frame and the wire

CAN 2.0A frame structure with color-coded fields — start of frame, the 11-bit identifier highlighted as the priority field, RTR, control, up to 8 data bytes, the 15-bit CRC and the ACK slot — above a waveform of the CANH and CANL lines in amber and cyan showing recessive bits at 2.5 volts and dominant bits driven to 3.5 and 1.5 volts. Figure 4 — The frame and its physical layer. Recessive: both wires float at 2.5 V. Dominant: the driver forces 2 V of difference between them.

The physical layer is a differential twisted pair, same noise-immunity logic as RS-485: coupled noise hits both wires and cancels in the receiver. What CAN adds is the asymmetric drive — dominant overpowers recessive — which is precisely what makes the wired-AND arbitration possible. High-speed CAN (ISO 11898-2) runs the pair with 120 Ω termination at both ends, 500 kbit/s as the de-facto powertrain rate, 1 Mbit/s max on classic CAN (bounded by the requirement that arbitration bits propagate the whole bus within one bit time — bus length and bit rate trade off directly).

Error handling: the paranoid part

A protocol that carries brake commands needs more than a CRC, and this is where CAN is genuinely over-engineered — five overlapping detection mechanisms:

  1. 15-bit CRC on every frame.
  2. Bit monitoring — every transmitter compares the bus to what it sent.
  3. Stuff-bit checking — after five identical bits the sender inserts the opposite one; a sixth identical bit is a protocol violation by definition.
  4. Form checks on the fixed-format fields.
  5. The ACK slot — every receiver that got a clean frame drives it dominant. If nobody ACKs, the sender knows immediately, not at some timeout.

Any node that spots an error transmits an error frame that deliberately violates stuffing, forcing every other node to discard the frame; the sender retransmits automatically. And the masterstroke: every node keeps error counters, and a node that keeps failing demotes itself — first to error-passive, then bus-off, where it disconnects entirely. A babbling transceiver with a cracked solder joint removes itself from the bus instead of taking the vehicle down. Residual undetected error probability is on the order of 10⁻¹¹ — for practical purposes, a corrupted frame that slips through never happens in the life of the fleet.

Where CAN stops

Honesty section. Classic CAN gives you 8 bytes at 1 Mbit/s shared — that’s it. Three pressures pushed past it:

  • Payload & speed → CAN FD (2012): same arbitration, but after winning the bus the sender switches to a faster data phase and may carry 64 bytes. Most new platforms ship it; the migration pain is that classic-CAN controllers destroy FD frames, so segments must convert wholesale.
  • Determinism → FlexRay: arbitration gives priority, not a guaranteed schedule. Steer-by-wire wanted a time-triggered slot table and a redundant channel. FlexRay delivers exactly that — at roughly 10× the cost, which is why it stayed in the chassis niche.
  • Bandwidth → automotive Ethernet: a single surround-view camera outruns every CAN segment in the car combined. 100/1000BASE-T1 runs full duplex over one twisted pair, and zonal architectures now use it as the spine — with CAN (FD) still doing the last meter of actual control.

The division of labor is stable: Ethernet moves data, CAN moves decisions.

Field notes

  • Plan bus load like a budget. Above ~50% utilization the low-priority tail starts starving; chronic 80% buses produce bugs that only appear on cold mornings when every ECU talks at once.
  • ID allocation is politics. The identifier is the priority — which supplier’s message gets 0x100 is a meeting, not a code review. Document the map.
  • Measure 60 Ω. Power off, multimeter across CANH–CANL: two 120 Ω terminators in parallel read 60 Ω. The number of “intermittent” bus failures that end at a missing or doubled terminator is humbling.
  • Error frames are a symptom, not noise. A counter that climbs on one node points at that node’s connector, crystal tolerance, or sample point setting — not at ghosts.
  • Mind the stub lengths on high-speed segments; the 1 Mbit/s bus is far less forgiving of T-taps than the 125 k body bus that taught your habits.