통합 차량 관제 시스템 용어 사전
통신·신호CAN · FlexCAN · CAN 버스

CAN

차량용 표준 필드버스. 차동 2선에 여러 노드가 붙고, ID 가 작을수록 아비트레이션에서 이긴다.

Controller Area Network. 이 시스템의 노드 간 주 통신 수단이다.

UART 와 결정적으로 다른 점

UARTCAN
연결점대점 (1:1)버스 (여러 노드)
주소없음메시지 ID
프레임 경계직접 만들어야 함하드웨어가 준다
오류 검출직접CRC·ACK 내장
충돌 처리없음비파괴 아비트레이션
노이즈약함 (단선 기준)강함 (차동 신호)

차동 신호라 노이즈에 강하다

CAN_H 와 CAN_L 두 선의 전압 차이로 비트를 읽는다. 외부 노이즈는 두 선에 똑같이 실리므로 차이를 빼면 상쇄된다. 모터·인버터가 돌아가는 차량 환경에서 이게 결정적이다.

비파괴 아비트레이션

여러 노드가 동시에 송신하면 ID 를 비트 단위로 비교해 작은 쪽이 그대로 버스를 가져간다. 진 쪽은 물러났다가 다시 시도한다. 이더넷의 충돌 재전송과 달리 이긴 프레임은 손상되지 않는다.

그래서 ID 배정이 곧 우선순위 설계가 된다 — pinch_event0x010 에 두는 이유(CAN ID 우선순위 참고).

이 프로젝트의 구성

Central ↔ Power Window / Function / Sensing    CAN
Central ↔ ESP32                                TBD-001 (CAN 후보)
Sensing ↔ Raspberry Pi                         UART/SPI (TBD-003)

버스 부하는 500 kbps 기준 약 2.8 % 로 대단히 여유롭다. CAN FD 가 필요 없다는 근거가 된다.

CRC 가 있는데 왜 E2E 를 또 하나

CAN CRC 는 버스 구간만 보호한다. 송신 앱 → 송신 버퍼, 수신 버퍼 → 수신 앱 구간의 메모리 손상·인코딩 실수는 못 잡는다. 그래서 E2E 보호를 애플리케이션 레벨에서 따로 얹는다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 노드 간 인터페이스 — 신호 목록·CAN 프레임·E2E·버스 부하