dominant와 recessive는 CAN 버스가 가질 수 있는 두 논리 상태이고, dominant는 논리 0, recessive는 논리 1을 나타낸다.[1] ISO 11898-2:2026은 PMA(Physical Medium Attachment)가 중재 모드에 있을 때 여러 노드가 같은 비트 시간에 dominant와 recessive를 함께 내면 버스가 dominant가 된다고 정한다.[2]
Bosch CAN 2.0 규격은 버스를 wired-AND로 구현하는 경우를 예로 들어, 이때 dominant를 논리 0, recessive를 논리 1로 둔다.[3]
물리 표현
dominant와 recessive는 버스 상태의 이름이고, 논리 0·1과의 대응은 데이터 링크 계층 표준인 ISO 11898-1:2024가 정한다.[1]
고속 CAN에서 recessive는 두 선의 차동 전압이 거의 0인 상태이고, dominant는 트랜시버가 두 선을 차동으로 구동해 CAN_H를 CAN_L보다 높게 벌린 상태다.[4] 전기적 값과 모드에 따른 바이어스는 CAN 물리 계층에서 다룬다.
고속 트랜시버가 Normal 모드에 있을 때, recessive에서는 두 선이 모두 약 0.5 VCC(2~3 V)에 있다.[4][5] 저속 내결함성 CAN 트랜시버도 dominant와 recessive 두 상태로 구동하지만, recessive에서는 CAN_L이 CAN_H보다 높아 전압 배치가 다르다. TJA1055의 recessive 출력은 , 이다.[6]
트랜시버 모드와 버스 상태
ISO 11898-1:2024는 dominant와 recessive를 트랜시버 모드와 상관없이 MAC(Medium Access Control) 프레임의 비트 값 이름으로 둔다.[1]
버스 위의 상태는 PMA 모드에 따라 이름이 갈린다. ISO 11898-2:2026은 PMA가 중재 모드일 때의 버스 상태를 dominant와 recessive로, 그 밖의 모드일 때의 버스 상태를 level_0(논리 0)과 level_1(논리 1)로 정의한다. FAST TX 모드의 PMA는 버스를 level_0과 level_1로 구동하는데, 두 상태를 함께 구동하면 결과가 정해지지 않는다.[2]
저속 내결함성 CAN을 규정하는 ISO 11898-3:2006도 버스 값을 dominant와 recessive로 두고, 둘을 함께 보내면 버스 값이 dominant가 된다고 정한다.[7]
버스가 비어 있을 때
아무도 송신하지 않을 때 버스는 idle이고 recessive다.[1] 프레임은 dominant 비트 하나인 SOF(Start of Frame)로 시작하고, 노드는 idle 중 recessive에서 dominant로 바뀌는 에지로 프레임의 시작을 알고 거기에 동기를 맞춘다.[3]
프로토콜이 기대는 곳
- 중재: 식별자를 겨룰 때 recessive를 보냈는데 dominant를 읽은 노드는 중재에서 지고 물러난다.
- ACK: 송신 노드는 ACK 슬롯에 recessive를 내고, 메시지를 제대로 받은 노드가 그 위에 dominant를 덮어쓴다.
- 오류 프레임: error active 노드는 dominant 6비트로 된 active 오류 플래그를 낸다. 이 플래그는 비트 스터핑 규칙을 어기거나 ACK 필드와 EOF(End of Frame)의 고정된 모양을 깨서 진행 중인 프레임을 무너뜨린다. error passive 노드의 오류 플래그는 recessive 6비트라, 다른 노드가 낸 dominant 비트를 바꾸지 못하고 오히려 그 비트에 덮어쓰인다.[3]