10

I am reading data sheets on the LIN bus, but apparently the same terminology is used for CAN.

What does "recessive" and "dominant" stand for, e.g http://hw-server.com/products/rs_optika/prevodniky_optika.html ?

How relate these terms to "low" and "high", or 0 and 1?

poseid
  • 353
  • 1
  • 3
  • 18
  • 1
    In order to understand this, you need to understand [CSMA/CA](http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_avoidance). – Lundin Jul 01 '14 at 07:56

2 Answers2

14

Dominant is 0. Recessive is 1. Dominant applies to 0 because if two arbitration ID's are being transmitted at the same time and the first 4 bits are the same and the fifth is 0 for one of them and 1 for the other, the ID with the 0 will end up being transmitted. Transmission of the message with the larger arbitration ID will be tried again after the other message is done.

Solitz
  • 295
  • 3
  • 5
12

In addition to the perfectly accurate answer given elsewhere, it may also be useful to consider the lower level meanings of the phrases dominant and recessive. In both CAN and LIN at the physical layer the bus "floats" to a particular state when no nodes are communicating. This is the recessive state. Any node which drives a dominant bit will override this state (hence the word "dominant").

This is used within the protocol to allow non-destructive arbitration to occur, where the node with the lowest id "wins". This is due to the decision to signify a logic low by a dominant bit.

(The standards could have been written the other way around. There's nothing that demands a dominant bit is interpreted as a zero in any other context.)

Martin Thompson
  • 8,439
  • 1
  • 23
  • 44
  • 6
    Also, CAN bus is Wire-ANDed... And in AND operation, 0 will "dominate" the 1. – Swanand May 28 '14 at 11:48
  • that is nice shortcut to remember – poseid May 28 '14 at 12:52
  • This is a more correct answer than the flagged one. Dominant and recessive states are used in many bus protocols or logic, not only in LIN or CAN. Open collector outputs are commonly used to create these states. – Max Kielland May 12 '15 at 07:49
  • Is this "floating" to the recessive state any different from how a pull-up/down resistor is used for choosing the default (undriven) voltage level (and hence logic level) of the bus? E.G. Some buses will default to logic high via pull-ups if not being driven down. Would this mean that logic high is recessive and logic low is dominant? – Nicholas Miller Jun 17 '16 at 14:30
  • 1
    @NickMiller: it's just the same (see Swanand's comment also) - just that because CAN is differential, there are two wires which need to be pulled to the recessive level (or in CAN's case "together" to the same voltage) – Martin Thompson Jun 17 '16 at 18:32