Automotive

CAN bus fundamentals

Why two twisted wires replaced a loom, how dominant and recessive bits let modules arbitrate without a master, what the 120 ohm terminators are for, and the handful of measurements that tell you whether a network is healthy.

IntermediateAutomotive

Standards referencedISO 11898-1ISO 11898-2ISO 15765-2SAE J1939

A modern vehicle has forty or more modules that need to share the same handful of facts — road speed, engine torque, whether a door is open. Wiring each one to each other directly is impossible, and by the late 1980s looms were becoming the heaviest and least reliable thing on the car. CAN replaced them with two twisted wires that every module listens to.

An oscilloscope on a workshop trolley showing two CAN bus traces, the CAN high line switching up from a resting level and the CAN low line switching down as mirror images of it, with back-probe leads running from the scope into a vehicle diagnostic connector under a dashboard.
The two traces are mirror images about a common resting level. That symmetry is the health check — when one line stops mirroring the other, you have found the fault without unwrapping any tape.

Two wires, and why they are twisted

A diagram of the CAN physical layer and arbitration. On the left, CAN high and CAN low are drawn as a twisted pair with a 120 ohm resistor at each end, showing the recessive state with both lines resting near 2.5 volts and no difference between them, and the dominant state with CAN high driven to about 3.5 volts and CAN low to about 1.5 volts, giving a two volt difference. Beneath, an interfering spike is shown coupling equally into both wires and cancelling when the receiver subtracts one from the other. On the right, three nodes begin transmitting at the same instant and their identifier bits are compared column by column, with each node reading back the bus as it writes. The node sending a recessive bit where the bus reads dominant drops out and becomes a listener, so the lowest numbered identifier wins and its message continues without being corrupted or resent.
Dominant beats recessive on the wire. Everything else about CAN arbitration follows from that one electrical asymmetry.

The pair is differential. Neither wire carries the signal on its own — the receiver looks at CAN high minus CAN low:

State CAN high CAN low Difference Logical
Recessive ~2.5 V ~2.5 V ~0 V 1
Dominant ~3.5 V ~1.5 V ~2 V 0

Two things fall out of this.

Noise immunity. Anything that couples into one conductor couples into the other almost equally, because they are twisted together and run side by side. Subtract them and the interference disappears. This is why a CAN pair survives being routed beside injector wiring that would destroy a single-ended analogue signal.

Dominant overrides recessive. A recessive bit is simply the bus resting. A dominant bit is actively driven. If one node drives dominant while another leaves the bus recessive, dominant wins — physically, not by agreement. That asymmetry is the foundation of everything below.

Arbitration without a master

There is no bus master and no schedule. Any node may start transmitting when the bus is idle, and two often do at the same instant. What happens then is the elegant part:

  1. Each transmitting node writes a bit and simultaneously reads the bus back.
  2. If it wrote recessive and reads back dominant, someone else is driving harder. It stops immediately and becomes a listener.
  3. The node that never loses a bit carries on and finishes its message.

This is non-destructive. The winning frame is not corrupted and does not need resending — the loser simply withdrew before doing any damage. Because the comparison runs across the identifier, which is sent first, the frame with the numerically lowest identifier always wins. Priority is therefore designed in when the identifiers are allocated: engine torque gets a low number, a door lock request gets a high one.

Termination

A diagram of the CAN data frame and the workshop tests that go with it. The top shows a frame laid out field by field — start of frame, the eleven bit identifier used for arbitration, the control field, up to eight data bytes, the fifteen bit CRC, the acknowledge slot which every receiving node drives dominant, and the end of frame. Callouts mark that the transmitter sends the acknowledge slot recessive and expects it to be overwritten, so an unacknowledged frame means nobody heard it. Below, a table of resistance measurements taken across CAN high and CAN low with the network asleep gives the meaning of each — about sixty ohms for a healthy bus with both terminators, about one hundred and twenty ohms for one terminator missing, a very low reading for a short between the wires, and an open circuit for a broken pair. A final panel lists the error confinement states, error active, error passive and bus off, with the counter thresholds and the reason a node removes itself.
Sixty ohms across the pair with the network asleep is the fastest useful measurement on a vehicle. It proves two terminators and a continuous pair in one reading.

A twisted pair at 500 kbit/s is a transmission line, and an unterminated end reflects the signal back along itself. Those reflections arrive during later bits and corrupt them. The fix is a 120 Ω resistor at each physical end of the bus, matching the characteristic impedance of the cable so the energy is absorbed instead.

The diagnostic consequence is the single most useful measurement on a vehicle network. With the ignition off and the network asleep, measure resistance across CAN high and CAN low:

Reading Means
~60 Ω Both terminators present and the pair continuous — healthy
~120 Ω One terminator missing, or the pair broken beyond one of them
Very low Short between CAN high and CAN low
Open The pair is broken on both sides of where you are measuring

The frame, and the acknowledge bit

A classic CAN data frame carries, in order: a start bit, the identifier (11 bits, or 29 in extended format), a control field giving the data length, up to 8 data bytes, a 15-bit CRC, an acknowledge slot, and an end-of-frame.

The acknowledge slot deserves attention. The transmitter sends it recessive and expects any node that received the frame correctly to overwrite it dominant. So the transmitter learns, within the same frame, whether anybody at all heard it. An unacknowledged frame is the classic signature of a module transmitting into a broken pair — and it is why a module can set a communication fault about itself.

Error confinement

Every node keeps a transmit and a receive error counter. They rise on failure and fall on success.

  • Error-active — normal. The node flags errors it detects and expects to be listened to.
  • Error-passive — past 127. The node still works but flags errors much less assertively.
  • Bus-off — past 255. The node stops transmitting altogether and removes itself.

This is deliberate containment. A faulty module that transmits nonsense continuously would destroy every frame on the network for everyone, so the protocol makes it quarantine itself. Losing one function beats losing the vehicle.

Speeds, and what came next

High-speed CAN (ISO 11898-2) runs at 500 kbit/s on powertrain networks and 125–250 kbit/s on comfort networks. Low-speed fault-tolerant CAN runs slower and keeps working with one wire down by design.

CAN FD — flexible data rate — keeps the arbitration phase at the original speed, so priority still works exactly as above, then switches to a higher rate for the data field and allows up to 64 bytes instead of 8. Keeping the arbitration phase compatible is precisely what allowed it to be adopted gradually rather than all at once.

What to take away

  • The pair is differential and twisted, so induced noise cancels at the receiver.
  • Dominant beats recessive on the wire. That one asymmetry gives non-destructive arbitration.
  • The lowest identifier wins, and an identifier names content, not a destination.
  • 120 Ω at each end; 60 Ω across the pair with the network asleep proves both.
  • Every receiver drives the acknowledge bit, so a transmitter knows when nobody heard it.
  • Bus-off is a node removing itself so it cannot jam the network.
  • CAN FD raises the payload to 64 bytes and speeds up only the data phase.

CAN is not the only network on a vehicle, and it is deliberately not used for everything — see LIN, FlexRay, Ethernet and ECU architecture.

Check your understanding

10 questions. Nothing is recorded — this is just for you.

1CAN uses differential signalling on a twisted pair. What does that buy?
2In CAN terminology, what does dominant mean?
3Two modules begin transmitting at the same instant. How is the conflict resolved?
4What are the two 120 ohm resistors at the ends of a high-speed CAN bus for?
5With the ignition off and the network asleep, a meter across CAN high and CAN low reads about 60 ohms. What does that tell you?
6Why is a CAN identifier not an address?
7A module transmits a frame and then detects that no other node acknowledged it. What does it conclude?
8What happens when a node accumulates too many transmit errors?
9Why does a single wire shorted to earth often still leave a high-speed CAN bus partly working?
10CAN FD was introduced to address which limitation?

#vehicle systems#CAN bus#networking#arbitration#termination#differential signalling#ISO 11898#diagnostics