CAN bus explained: nodes, frames and how it works
A plain-English guide to the network behind almost every modern vehicle and machine. What it is, how devices share one pair of wires, and how they take turns without a referee.
CAN bus is a way for the electronic units inside a vehicle or machine to talk to each other over a single shared pair of wires. Instead of running a separate cable between every pair of devices, every device taps the same two wires and takes turns to speak. There is no central computer in charge. Each unit listens to everything, picks out the messages it cares about, and speaks when the bus is free. That simple idea is why one network can tie together an entire vehicle with very little wiring.
| Trait | What it means | Why it matters |
|---|---|---|
| Two-wire bus | All devices share CAN High and CAN Low | Far less wiring than point to point |
| Multi-master | Any node can start a message when the bus is idle | No single point of failure |
| Message-based | Messages carry an identifier, not a destination | One message can inform many nodes |
| Priority-driven | Lower identifier wins access to the bus | Urgent messages are never delayed |
Why CAN exists
As vehicles gained electronics in the 1980s, the wiring needed to connect every module to every other module grew out of control. Bosch developed the Controller Area Network to replace that tangle with one shared bus, cutting both the weight of the harness and the number of connections that could fail.
The idea proved so robust that it spread far beyond cars. Today you find CAN in places that demand reliable, real-time communication between electronic systems, including vehicle diagnostics, fleet telematics, ECU calibration and flashing, medical equipment, and agricultural and off-highway machinery. Wherever sensors and controllers must coordinate in a noisy environment, CAN is a common choice.
Nodes, and the two wires they share
Every device on the network is called a node. A node is anything that can send, receive or listen on the bus: an engine control unit, an anti-lock braking controller, a sensor, an actuator or a data logger. All nodes connect in parallel to the same two signal wires, named CAN High and CAN Low.
Those two wires carry a differential signal, which means the same information is sent as opposite voltage movements on each wire. When CAN High rises, CAN Low falls by the same amount. Each node reads the difference between the two, not their absolute level, so any electrical noise that hits both wires equally cancels out. That is what makes CAN so dependable in a vehicle or a factory.
To keep the signal clean, a 120 ohm resistor sits at each end of the bus. These terminators absorb the signal as it reaches the ends and stop it reflecting back down the wires, which would otherwise corrupt the data, especially at higher speeds.
There is one more thing worth understanding about the bus. A bit on CAN comes in two flavours: recessive, which is the resting state, and dominant. If even one node drives a dominant bit while others are recessive, the whole bus goes dominant. The bus always follows the dominant. Try it below.
Messages, not addresses
CAN does not send a message to a particular device. Every message carries an identifier that describes what the message is, for example engine speed, rather than who it is for. The message is broadcast to the whole bus, and every node hears it.
Each node then decides for itself whether it cares. It checks the identifier, and if the message is relevant it reads the data and acts on it, perhaps storing the latest reading, switching on a fan, or preparing a reply. If the identifier is not relevant, the node simply ignores the message. Because information is shared rather than addressed, one reading can update many nodes at once, and adding a new node does not mean rewiring the others.
How nodes take turns on one wire
If every node shares one bus and any of them can start talking, what happens when two begin at the same instant? On most networks that would be a collision and both messages would be lost. CAN avoids this with a clever process called arbitration, and it never loses a message or wastes a moment.
When nodes start together, they transmit their identifiers bit by bit, most significant bit first, while listening to the bus at the same time. Remember that a dominant 0 always beats a recessive 1. The moment a node sends a recessive 1 but hears a dominant 0 on the bus, it knows another node has a higher priority, so it quietly stops and waits. The node with the lowest identifier value is never overruled, so it wins and keeps transmitting without interruption.
The lowest identifier wins, and the loser simply tries again later.
This means a lower identifier is a higher priority. It also means no time is wasted: the winning message carries straight on, and the nodes that backed off retransmit as soon as the bus is free. Step through it below with three nodes.
Connecting to a CAN bus
There is no single CAN connector. The physical interface depends on the application, and the same two signals, CAN High and CAN Low, appear on very different plugs. A few of the most common are below.
OBD-II
The 16-pin port for automotive diagnostics, found under the dashboard.
Round 5-pin
Rugged circular connectors used in heavy-duty and off-highway vehicles.
M12
Threaded industrial connectors built for automation and harsh sites.
JST
Small board connectors for compact electronics like drones and 3D printers.
This is one reason development and diagnostic tools are built to interface directly with CAN: with the right adapter, a logger can tap any of these and capture real-time data without disturbing the network.
One shared pair of wires, messages by priority, no central boss. That is the whole idea behind CAN bus.
CAN bus FAQ
What is a CAN bus in simple terms?
It is a shared two-wire network that lets the electronic units in a vehicle or machine exchange messages without a central computer. Every unit connects to the same pair of wires and takes turns to communicate.
What is a node in CAN?
A node is any device on the bus that can send, receive or listen to messages. Engine control units, sensors, actuators and data loggers are all nodes. They all connect in parallel to the same two wires.
What are CAN High and CAN Low?
They are the two signal wires of the bus. They carry the same information as opposite voltage movements, a differential signal. Nodes read the difference between the two, which makes the system highly resistant to electrical noise.
How does CAN decide which message goes first?
Through arbitration. Nodes send their message identifiers bit by bit while listening to the bus. A dominant 0 always beats a recessive 1, so the message with the lowest identifier wins and the others wait. Lower identifier means higher priority.
Why are there 120 ohm resistors on a CAN bus?
They are terminators, one at each end of the bus. They absorb the signal at the ends and prevent reflections that would otherwise corrupt data, particularly at higher bus speeds.
Does every device get every message?
Yes. CAN broadcasts every message to the whole bus, and every node receives it. Each node checks the identifier and only acts on the messages relevant to it, ignoring the rest.
Written by the engineering team at Influx Technology. For deeper detail, see our guides to CAN frames and to baud rate and bus load.
Record any CAN bus, without disturbing it
The data loggers from Influx Technology, including the REXGEN and REBEL ranges, connect to a CAN bus and capture every message in real time, non-intrusively. REXDESK configures the logger and decodes the traffic into engineering values for analysis.