목차
- CAN(Controller Area Network) 버스 개요
- CAN 버스 특성
- 제어기(Controller)와 송수신기(Transceiver)
Controller Area Network(CAN)
CAN의 종류
- 1983년에 Benz사의 의뢰로 Bosch에서 개발한 차량 내 장치를 연결하기 위한 직렬 유선통신 네트워크.
- 1991년 CAN 2.0이 발표(ISO 표준 1994년)
- 2012년 CAN-FD 발표(ISO 표준 2015년)
- 2021년 CAN-XL 발표(ISO 표준 2024년)
- CAN은 ISO에서 표준화된 Serial 통신규격이다(ISO 11898-1, 2, 3)
- CAN은 차량 내 다양한 장치들을 모두 함께 연결하는 버스 구조이다.
CAN의 특징
직렬 버스
- 한 번에 1 bit씩 직렬 전송
비차폐 2선 차동 꼬임선(Unshielded Twisted Differential Pair)


- 두 선(CANH / CANL)의 전압 차이로 신호를 전송
- 두 선을 꼬아 배선하며 케이블에 전자파 차폐 층이 없음
- 전기잡음, 온도변화, 전자파, 방사선 등에 매우 강인함
신호의 전송과 감지를 동시에 수행

- Carrier Sense Multiple Access 방식
- 전송 전압과 버스 전압을 비교하여 충돌을 감지(내가 보낸 전압이 버스 전압에 그대로 가고있지 않으면, 충돌을 일으켰다고 인식한다.)
실시간성
- CSMA/CR 방식을 사용하여 실시간성 확보(Soft Real-time, Low Latency)
- 자동차의 안전을 보장하는 가장 중요한 요소임(예를 들어 Break Pedal을 밟았는데 제동까지의 지연이 있다면 위험한 상황이 생길 수 있음.)

저잡음성
- 2선 차동 신호 꼬임선(Differential Twisted Pair) 사용으로 잡음에 매우 강함
고신뢰성
- 다양한 오류 검출(Bit Monitoring, Bit Stuffing, Frame Check, ACK Check, CRC Check 등), 오류 통지 및 재전송 기능이 HW로 구현되어 MCU에 부담이 적다.
- 에러가 많은 노드가 전송을 방해하지 않도록 함(Error Passive/Bus-Off). 에러가 많은 노드는 수동적으로 대응하도록 해서 다른 노드들의 전송 방해를 하지 않도록 한다. 에러가 너무 많은 노드는 일시적으로 Bus에서 Off(제외)시켜 전체 시스템의 안정성을 확보.
상시성 및 유연성
- 모든 Node가 Master라서 언제든지 Unicast(1:1)/Broadcast(1:전부)/Multicast(1:多) 통신 가능
- 차량의 경우 같은 센서 데이터를 동시에 여러 노드에 전송하는 경우가 많음
- 예를들어, 차량의 속도계 데이터를 break도, accelerator도, stiring도, 계기판도 봐야한다. 만일, ADAS로 돌리면서 앞차와의 충돌을 방지하는 AEB를 사용하겠다 하면, 이 기능도 속도계를 봐야한다. 이처럼, 센싱을 한번만 하고 한번에 여러 node에 여러번 보내야하는 상황이 발생한다. 이런 상황에서 1:1밖에 안된다면, 여러번 측정을 하게되며 측정값이 달라지는 문제가 발생한다. 따라서, 센서 데이터를 동시에 여럿에게 전송하는 Broadcast 통신 방식이 중요하다.
- 차량의 경우 같은 센서 데이터를 동시에 여러 노드에 전송하는 경우가 많음
- Node에 Address를 설정할 필요가 없어서 Node의 추가, 변경, 제거가 용이
- Hot Plug-In, Hot Plug-Out : 노드 고장, 불완전 연결선 등에 효과적 대처 가능

저비용
- 직렬 통신이기 때문에 배선 수가 적고 배선 무게도 적음
- MCU + CAN Controller 일체형 저가 칩이 널리 보급
메시지 필터를 통한 쉽고 다양한 송수신 방법
- 전체 노드에 메시지 송신 가능
- 설정된 ID만 필터링하여 수신이 가능
- 정해진 ID 수신, 특정 그룹 수신, 전체 수신 등을 자유롭게 수행
각 메시지마다 우선순위가 존재
- 각 메시지마다 ID가 있으며 낮을수록 우선순위가 높음
- 중요한 메시지일수록 낮은 ID를 부여해 우선순위를 정할 수 있음.
- 안전을 위해 중요한 메시지가 우선적으로 통신할 수 있음
HW 메시지 처리로 프로그래밍이 간편
- 데이터 버퍼에 데이터를 쓰고 전송하면 나머지는 HW가 알아서 처리함
- 사용자가 어플리케이션 프로그램을 작성할 때 매우 간편함
ISO 11898-2, 11898-3 표준으로 규정됨
- ISO 11898-2 : High-Speed CAN(HS CAN), 125Kbps~1Mbps
- ISO 11898-3 : Fault-Tolerant(오류 잘 안나고, 오류나도 금방 복구 가능) Low-Speed(하지만 속도는 느림) CAN(LS FT CAN), ~125Kbps
- 일반적으로 CAN이라 하면 고속 CAN인 ISO 11898-2를 의미
전송 속도 VS 전송 거리

- 선이 짧으면 전송 속도가 빠르고, 선이 길면 전송 속도가 느리다.
- 최고 속도
- 1Mbps@40m
- 최고 거리
- 50Kbps@1km
- 전송 속도
- Class A: 10kbps 미만(전동 거울, 비 탐지, 썬루프 등)
- Class B: 10kbps ~ 125kbps(파워 윈도우, 전동 시트, 계기판 등)
- Class C: 125kbps ~ 1Mbps(파워트레인, 트랜스미션, ABS, TCS, ESP 등 주요 움직임에 관련된 장치)
CAN Bus in the Vehicle
용도에 따라서 몇 개의 Network로 나뉨

CAN Bus and OSI 7 Layer

CAN 표준에서는 (1)Physical Layer(PHY)와 (2)Data Link Layer(MAC)만 정의되며 HW로 구현되어 빠르게 실행됨
다른 Layer는 CAN 표준에 정의되지 않고 필요에 따라 SW로 자유롭게 구현됨
Controller and Transceiver
CAN 통신을 위해선 Controller와 Transceiver가 모두 필요

- Controller
- CAN 버스를 통해 디지털 데이터를 송수신하기 위한 작업을 수행(Data Link Layer, MAC, 디지털 비트)
- Digital Domain은 Controller가 담당
- Transceiver
- CAN 버스에 물리적인 신호(전압)를 가하거나 읽어들임(Physical Layer, PHY, 아날로그 전압)
- Analog Domain은 Transceiver가 담당

'Embedded Systems > MCU 기본' 카테고리의 다른 글
| [컴퓨터 구조] 최고의 ALU 내부 로직 설명 영상 (0) | 2025.10.22 |
|---|
