CAN Arbitration
한 줄 요약
여러 노드가 동시에 전송할 때 메시지 ID로 우선순위를 정하는 비파괴(non-destructive) 중재.
Definition
CAN arbitration은 여러 노드가 동시에 버스 전송을 시작할 때, 충돌 없이 우선순위가 가장 높은 메시지가 전송을 이어가게 하는 메커니즘이다.1
How It Works
각 노드는 전송 중에도 버스를 모니터링한다. dominant 비트(0)가 recessive 비트(1)를 덮어쓰므로, 자신이 보낸 recessive 비트가 dominant로 읽히면 더 높은 우선순위 메시지가 있다고 판단하고 전송을 중단한다. 즉 ID가 낮을수록 우선순위가 높다.2
sequenceDiagram participant A as Node A (ID 0x100) participant B as Node B (ID 0x080) A->>Bus: 전송 시작 B->>Bus: 전송 시작 Note over A,B: 비트 단위 비교 B-->>Bus: 우선순위 승리 (낮은 ID) A--xBus: 전송 중단
흔한 오해
높은 ID가 우선순위가 높다고 착각하기 쉽다. 실제로는 낮은 ID가 우선한다.
Why It Matters
실시간 제어에서 메시지 지연과 우선순위를 결정하므로, 안전 관련 메시지에 낮은 ID를 할당하는 설계가 중요하다.
Examples
- 파워트레인 제어 메시지에 낮은 ID(높은 우선순위)를 할당.