• admin@embedclogic.com

Bus Arbitration and Message Identification

Bus Arbitration

Arbitration is the process which decides the owner of CAN bus if two nodes started message broadcasting at the same time .

what would happen if more than one node will start transmission at a time on CAN bus?

As per CAN standard, two fields of data or remote frame decides the arbitration of CAN message over CAN line –

  1. Identifier(11-bit)
  2. RTR (1-bit)

Example:

Let’s understand with an example –

ECU1 with identifier 0x234 and ECU2 with Identifier 0x352 transmit data frame at a time. who will transmit data first?

Ans: ECU2 will win the arbitration first as CAN bus follow wired And logic.

Arbitration Process for CAN

So as you can see that 3rd bit of identifier is dominant(0) of ECU1 while recessive in ECU2. as we know the final value at CAN will decide through wired And logic so final value is ‘0’.Every node which transmits its data at CAN Bus read it back to verify the correct transmission and it is called “Bit Monitoring”.if the data read is not same as transmitted then it will detect the transmission error and stop transmission. So if we relate this theory with above example then ECU2 will not read exactly what it transmitted because the final value is 0 at CAN line and that’s why it will stop transmission and ECU1 will continue its transmission.so its the concept of arbitration.

ECU1 with identifier 0x234 transmit data frame while ECU2 with same Identifier 0x234 transmit a remote frame at a time. who will win arbitration?

Ans: Data Frame because of Dominant(0) RTR bit.

Message Identification

As per CAN standard any node can transmit a message on CAN line and every node present on CAN line including transmitter itself can listen to this message but the who can accept the broadcasted messages decided by a field of the transmitted frame which is known as Identifier.

Identifier must be unique for each message otherwise arbitration will not win by any node and cause a transmission error.

Message Identifier field has the following two main significance –

  1. First, decides the message priority on CAN line.
  2. Second, tells that transmitted message relevant to which node?

There are two more components in CAN controller of every node which filtered unwanted messages from receiving-

Acceptance filter is a CAN ID which is allowed to receive at Node. Every Message with this CANId will receive at this node if mask register is correctly configured.

Mask register is a numerical bit code in which bit 1 means that bit of receive CANID must be same as Acceptance Filter.

So through above example you can understand that Acceptance filter holds the CANID which node wants to receive while mask filter make sure that which bit position in receive message ID is acceptable with change and without change reference to acceptance filter.