CAN 버스에 연결된 각 ECU, 즉 CAN node는 기능적으로 마이크로컨트롤러·CAN 컨트롤러·CAN 트랜시버 세 구성요소로 나뉜다. 이 구분은 Bus Networking에서 다룬 OSI 계층 대응과 그대로 맞물린다 — 마이크로컨트롤러는 Application Layer를, CAN 컨트롤러는 Data Link Layer와 물리 계층의 비트 인코딩 부분을, CAN 트랜시버는 물리 계층의 나머지(매체 접속)를 담당한다[1].
마이크로컨트롤러는 ECU의 애플리케이션 소프트웨어를 실행하는 호스트로, 버스로 보낼 메시지가 생기면 CAN 컨트롤러에 전달을 요청한다. CAN 컨트롤러는 이 데이터를 완전한 CAN 메시지로 완성하고 버스 액세스와 비트 타이밍을 제어하며, 병렬 데이터를 직렬 비트스트림으로 변환해 트랜시버로 넘긴다(수신 시에는 역방향으로 동작한다)[1]. CAN 트랜시버는 이 비트스트림을 실제 버스 전압 레벨로 바꿔 송신하고, 수신 시에는 버스의 전압 레벨을 샘플링해 컨트롤러가 해석할 수 있는 논리 레벨로 되돌린다 — 전압이 어떤 논리값으로 인코딩되는지는 Differential Signaling에서 다룬다.
CAN 컨트롤러가 처리하는 데이터 링크 계층의 작업(프레이밍·주소 지정·버스 액세스 등)은 Bus Networking에서 다루며, 이 세 구성요소로의 분할과 각자의 규격 범위는 ISO 11898 표준이 파트별로 나누어 규정한다.
참고문헌
[1]
S. Corrigan, “SLOA101B — Introduction to the Controller Area Network (CAN)”, 2016.