CAN이란?
Controller Area Network의 약자로 자동차에서 ECU(Electronic Control Unit) 끼리 통신하는 기술이다.
원래는 UART방식을 활용해서 자동차의 모듈들을 제어했지만 선이 늘어나고, 무게가 늘어나면서 비용이 늘어나서 CAN을 개발하게 되었다.
여러 개의 CAN 장치가 서로 통신할 수 있고, 하나의 CAN 인터페이스로 여러 개의 모듈을 제어할 수 있다.
특징
- Multi Master 통신 방식
- CAN 버스는 Multi Master 방식으로 통신하므로 통신 버스를 여러 노드들이 공유하면서 언제든지 버스를 사용할 수 있다.
- CAN은 직렬 통신 방식이다.
- 간단한 구조
- CAN_High, CAN_Low 두 갱ㅢ 신호로 통신하므로 단 2개의 선이 필요하다. 그러므로 많은 모듈이 추가 되어도 선의 양이 적어진다.
- 잡음에 강하다
- CAN BUS는 Twist Pair 2선으로 되어 있어 잡음에 강해 패킷을 보호할 수 있다
- ID 값을 이용한 우선순위
- 자동차의 ECU의 CAN 메세지들은 고유한 ID를 가지고 있다. ID 값은 낮을 수록 우선순위가 높다. 이로 인해 시스템 제어 속도와 안전성을 향상할 수 있었다. 그리고 연결선 수를 대폭 줄일 수 있다.
- PLUG & PLAY 기능
- PLUG & PLAY 기능을 제공하여 버스에 간편하게 연결하고 끊을 수 있어서 장치를 추가하고 제거하기 쉽다.
- 고속 및 원거리 통신
- CAN은 최대 1M bps에 달하는 고속 통신을 제공하며, 보통 통신 속도가 500k ~ 1M bps 속도이다.
- 최대 1000m까지 원거리 통신이 가능하다.
CAN Frame

- SOF(Start Of Frame
- 데이터를 전송하고자 하는 노드는 SOF전송함으로 써 메세지 전송을 시작한다
- SOF는 1bit로 구성되어 있으며 이 신호에 의해 모든 노드는 싱크되어 수신 및 응답 준비가 되어야 한다.
- ID Field
- CAN에서 ID는 메세지를 식별하는데 사용된다
- CAN 2.0A(Standard)는 11bit, CAN 2.0B(Extension)은 29bit로 구성되어 있다.
- Control Field
- Control Field는 6bit로 구성되어 있으며, 첫 번째(IDE), 두 번째(R0) bit는 Standard Type인지 Extension Type인지 구분하는데 사용된다.
- 나머지 4bit는 DLC(Data Length Code)로 이 코드 뒤에 오는
- Data Field
- DLC에 표시된 길이 만큼 데이터바이트가 전송된다.
- 자신의 상태를 알리는 에러 프레임을 Data Field로 전송한다.
- 상태에 따라 6bit 이상의 High 신호 또는 Low 신호를 송신함으로써 에러 프레임을 보낸다.

- CRC Field
- 메세지의 유효성 검증을 위한 방법으로 송신측에서 보내고자 하는 원래의 정보 이외에도 별도의 데이터를 추가하여 전송하면, 수신측에서 이 데이터를 이용하여 메세지 유효성을 검증 한다.