Course contentsShow
← Embedded Systems & Computer Architecture
Lesson 383 of 9365. Communication Protocols and Data TransferFree lesson

CAN Bus Dominant and Recessive States

Identify how the bus logic levels operate where a dominant state overwrites a recessive state to facilitate non-destructive bitwise arbitration.

In this lesson, you will learn how the CAN bus utilizes the physical interaction between dominant and recessive states to manage data flow and perform non-destructive bitwise arbitration.

The Logical Tug-of-War

Unlike the protocols we have discussed previously, where nodes might collide or require a central arbiter to resolve who talks, the CAN bus is designed to allow multiple nodes to communicate simultaneously without destroying the data. This is achieved through a "Wired-AND" logic structure.

On the CAN bus, we define two logic states:

  • Recessive (Logical 1): The bus stays at a neutral, idle voltage level. Think of this as the "default" state.
  • Dominant (Logical 0): A node actively drives the bus to a different voltage level.

How Arbitration Works

Because a Dominant state is physically stronger than a Recessive state, it "overwrites" the bus. If one node sends a Recessive (1) and another node sends a Dominant (0), the resulting state on the physical wire is Dominant (0).

This behavior is the secret sauce for non-destructive arbitration. When two nodes start transmitting at the same time, they both monitor the bus while they send their bits.

// Conceptual logic of CAN Arbitration
if (node_output == RECESSIVE && bus_state == DOMINANT) {
    // We lost arbitration! 
    // Another node is sending a higher-priority bit (0).
    stop_transmitting();
}

If a node sends a 1 (Recessive) but reads back a 0 (Dominant) from the bus, it immediately realizes that a higher-priority message is currently occupying the bus. The node that sends the 0 "wins" the arbitration and continues transmitting, while the node that sent the 1 gracefully backs off and waits for the next available window.

This ensures that the message with the lowest numerical ID (which contains the most leading zeros) always gains priority, and no data is corrupted or lost in the collision. The bus naturally resolves the "winner" on a bit-by-bit basis without needing a separate arbitration clock or extra signal lines.

Key Takeaway: The CAN bus uses Dominant states to physically override Recessive states, enabling nodes to detect higher-priority traffic and resolve bus contention automatically through bitwise arbitration.