dominant vs recessive bits in CAN

Thread Starter

Embededd

Joined Jun 4, 2025
131
Hi all,
I’m trying to understand about CAN bus and I’m a bit confused about this “dominant” and “recessive” terminology. In my basic digital logic understanding, logic high = around 5 V (logic 1) and logic low = 0 V (logic 0). But in CAN, I see people say dominant = 0 and recessive = 1, and that the bus works with CAN-High and CAN-Low lines.

https://en.wikipedia.org/wiki/CAN_bus

Suppose we have:
  • Pin 2: CAN-Low (CAN−)
  • Pin 3: GND (ground)
  • Pin 7: CAN-High (CAN+)
  • Pin 9: CAN V+ (power)

What I don’t get is: how does a “dominant 0” or a “recessive 1” actually show up on CANH and CANL? Why not just call it high/low like in normal logic? I’m mixing this up with the usual 0 V and 5 V way of thinking. so any simple explanation (maybe with example voltages) would help me a lot.
 

Ya’akov

Joined Jan 27, 2019
10,226
The terms dominant and recessive are in reference to the transmitters on the bus—in particular their attempt to seize control of the bus.

The arbitration mechanism that determines who has control of the bus is based in the fact that the dominant state overrides the recessive one. CAN bus is a differential one, but instead of using a scheme like RS-422 and similar protocols, it depends on the fact that a logical 1 is created by letting CAN+ float at 2.5V and CAN- at -2.5V resulting in ~0V differential. This is the recessive state.

A logical 0 on the other hand is achiever boy a node actively driving CAN+ to ~3.5V and CAN- to ~1.5V for a ~2V differential. This is the dominant state. The 2V dominates the bus and any node trying to start using it will back off in the presence of the voltage.

This video seems to have a reasonable explanation.

 

Ian0

Joined Aug 7, 2020
13,097
CAN is an open-collector bus. A zero is when the output device is ON an a 1 is when it is off. Therefore a zero overrides a 1. So zero is dominant and 1 is recessive.
However, it is a balanced bus. A zero is when the CAN-L line is driven LOW, but at the same time the CAN-H line is driven HIGH, to keep it in balance, but it is still called a zero.
 

John P

Joined Oct 14, 2008
2,051
My explanation:

CAN isn't the same as other digital systems, where the logic levels are Gnd or some voltage relative to Gnd. With CAN, the two lines are left floating during the inactive time, but there are resistors between the two wires which pull them to the same voltage. That's a key point, that it doesn't matter what the voltage on the two lines is, but they're equal. That's the recessive condition, or a logic 1.

A dominant or logic 0 condition is when any node on the bus pulls the CANH line high and the CANL line low, within the voltage range between that node's power supply and ground. But when that signal is received by another node, it doesn't matter what the actual voltages are, within a fairly wide range. What counts is that CANH is higher than CANL. This allows for situations where different nodes on the bus have local ground voltages which are different, which would mean that signaling using a voltage relative to Gnd might not be received correctly. So that's how CANH and CANL are used.

CAN tolerates a condition where two nodes try to transmit at the same time, and there's an elaborate system of arbitration to decide which unit wins a conflict. Fortunately you can use CAN without needing to understand how it works! But you do have to be aware that data transmission via CAN may take an unpredictable time to complete, based on how much traffic the bus is carrying. That can be a concern for some designs.
 
Top