CAN Fundamentals

hyeony·2025년 5월 17일

임베디드

목록 보기
3/10
post-thumbnail

1. Introduction to CAN(Controller Area Network)

CAN 프로토콜은 1980년대 후반, 독일의 Robert Bosch 社에서 자동차 산업을 위해 개발되었다. 당시 차량에는 엔진 제어, 브레이크, 에어컨, 센서 등 다양한 전자 제어 장치들이 탑재되기 시작했으며, 이들 간의 안정적인 통신이 필수적이었다.

기존 방식처럼 유닛 간 point-to-point 통신을 구성하면 배선이 과도하게 복잡해지고, 유지보수나 확장성 측면에서 비효율적이었다. 게다가 자동차는 고속으로 이동하고 진동과 전자기 간섭이 많은 환경이기 때문에, Bluetooth, Wi-Fi, Zigbee 등 무선 기반의 통신 방식은 안정성을 담보하기 어려웠다. 왜냐하면 패킷 손실이나 지연이 발생할 경우, 차량 제어에 직접적인 악영향을 줄 수 있기 때문이다.

이를 해결하기 위해 CAN이 도입되었다. CANmulti-master 구조의 시리얼 통신 버스로, 하나의 버스 라인을 여러 제어 유닛이 공유하면서도 충돌 없이 통신할 수 있도록 설계되었다. ISO 표준으로 관리되며, 고속 통신(최대 1Mbit/sec), noise에 대한 높은 내성, 강력한 오류 검출 및 오류 억제(error confinement) 메커니즘을 갖추고 있다.

2. Understanding CAN

가. CAN 주요 특징


① Low Cost

  • 컨트롤러와 물리 계층 구현 비용이 낮아 전체 시스템 구축 비용 절감
  • 배선 구조가 단순하여 유지보수 및 설계 효율성 향상

② Extreme robustness

  • 물리 계층에서 차동신호 방식(differential signaling)을 사용하여 noise에 대한 높은 내구성 확보
  • 자동차나 산업 자동화 환경 등 진동, 온도 변화, 전자기 간섭 등에 안정적으로 작동

③ High Data Transmission Speeds(최대 1 MBit/sec)

  • 고속 모드에서 최대 1 Mbps의 데이터 전송 속도 지원
  • CAN 컨트롤러가 실행되는 CLK 속도에 따라 500 Kbps, 250 Kbps, 125 Kbps 등 CAN 데이터 속도 다양

④ Realibitliy, Excellent Error Handling and Error Confinement abilities

  • 프레임 구조에 CRC, ACK, 에러 플래그 등 다양한 오류 감지 메커니즘 내장
  • 오류 발생 시 노드의 에러 카운터 증가 → 일정 수준 이상이면 동작 제한(Error Passive, Bus Off 등)
  • 전체 네트워크 안정성을 유지하며 오류 발생 노드를 격리

⑤ Automatic re-transmission of faulty messages

  • 메시지 전송 중 오류 발생 시, 해당 메시지를 자동으로 재전송
  • 데이터 손실을 최소화하고 통신 무결성 유지
  • 재전송 과정은 네트워크 전반에 영향을 주지 않도록 설계됨

⑥ Automatic bus disconnection of nodes that are suspected to be physically faulty

  • 반복적으로 오류를 발생시키는 노드는 자동으로 Bus Off 상태로 전환
  • 물리적 결함 노드가 전체 네트워크에 악영향을 주는 것을 차단
  • Bus Off 상태는 사양에 따라 일정 조건 하에 자동 복귀 가능

⑦ Functional Addressing

  • 데이터 메시지에 송수신자 주소가 아닌, 메시지의 기능/우선순위를 표현하는 identifier만 포함

※ identifier?
CAN 네트워크 내 nodes은 브로드캐스트 방식으로 동작한다. 즉, 어떤 CAN node가 메시지를 전송하면, 그 메시지는 네트워크 내 모든 nodes가 듣게 된다.

node마다 고유 주소가 있는 I2C와 달리, CAN에는 그러한 addressing이라는 개념이 존재하지 않는다. 대신, identifier을 사용하여 서로 다른 메시지를 구분하고, 여러 nodes가 버스를 동시에 사용하려고 할 때 우선순위를 결정하는 용도로 사용된다.

⑧ hot-pluggable

  • 중앙 제어 노드가 있을 수도 있고, 없을 수도 있음
  • 네트워크가 작동 중일 때도, 새로운 노드를 추가하거나 제거 가능. 이 과정에서 다른 노드나 CAN 버스의 동작은 중단되지 않음

나. CAN 구성 요소

1) Node


Node의 구성은 위와 같다. CAN Controller 또는 CAN peripheral이 포함되어 있는 마이크로컨트롤러가 있다. CAN Controller에서 2개의 Single-ended 디지털 핀을 출력으로 제공한다. 하나는 데이터 전송 목적인 CAN_TX, 다른 하나는 데이터 수신 목적인 CAN_RX이다.

CAN 사양 상, 이 디지털 신호를 그대로 사용하여 다른 Node와 통신할 수 없다. 대신에 차동 신호(Differential Signals)를 사용하는데, 이 신호는 마이크로컨트롤러 자체에서 만들어지지는 않는다.

이때 사용되는 것이 CAN Transceiver이다. 이것은 Digital Signals을 받아서 CANH(CAN High)CANL(CAN Low)라는 차동 신호로 변환한다.

※ 차동 신호?
Single-ended signal은 짧은 거리에서는 유효하지만, 자동차처럼 1 m, 2 m, 3 m, 심지어는 산업 환경에서 40 m 이상을 커버해야 하는 경우에는 부적합하다. 이러한 상황에서는 single-ended signal만으로 데이터를 안정적으로 송수신할 수 없다.

한편, 차동 신호는 noise에 더 강하고, 데이터를 훨씬 더 안정적으로 송수신할 수 있다. 그래서 single-ended signal차동 신호로 변환하여 Node 간 통신에 사용된다.

2) CAN Bus with Nodes


CAN 버스는 기본적으로 CANH 라인CANL 라인, 두 개의 라인으로 구성된다. 그리고 이 두 라인의 끝부분에 Termination Resistor(120 Ω)를 연결하여 마무리한다(신호 반사 방지 목적).

다. CAN Signaling

1) Single ended signals Vs. Differential signal


Single-ended Signal의 경우, 선이 HIGH을 지나면 수신기는 logic 1로 해석한다. 그리고 선이 GND(0V0V)를 지나면 수신기는 logic 0으로 해석한다.

두 개의 complementary한 전압 신호를 사용하여 하나의 전송하는 Differential Signal의 경우, 신호 1과 신호 2를 각각 +5V+5V, 5V-5V로 하여 두 신호의 전압 차 10V10Vlogic 1로 인식한다. 이때 외부 잡음이 두 신호에 똑같이 영향을 준다고 해도, 수신기는 두 신호의 차이만 보기 때문에 잡음이 자동으로 상쇄된다. 같은 원리로 logic 0을 인식하기 위해, 신호 1과 신호 2는 각각 5V-5V+5V+5V여야 한다.

참고로 위 방식은 CAN에서뿐만 아니라, USB, RS-485, RS-232 같은 다양한 통신 시스템에서도 물리 계층으로 널리 사용된다.

2) How to use Differential Signal in CAN

앞에서 말했듯이, CAN Transceiver는 차동 신호인 CANHCANL을 만들어낸다.
그리고 이 두 신호는 서로 complementary한 관계에 있다.

Example)

① logic 1을 전송할 때
logic 1을 전송하고자 할 때, transceiver는 CANH 신호 를 약 2.5V2.5V 정도로 유지한다. 그리고 이때 CANL 신호2.5V2.5V를 유지한다.

즉, 두 신호의 전압 차이가 0V0V가 되는데, 이 상태를 Recessive State라고 한다.

logic 1: Recessive State (CANH ≈ CANL)

② logic 0을 전송할 때
logic 0을 전송할 때는 CANH 신호가 약 3.5V(VCC)3.5V(V_{CC})가 되고, CANL 신호는 약 1.5V1.5V 정도로 떨어진다. 이 경우 두 신호의 전압 차이는 약 2V2V 정도로 나타난다.

이 상태는 Dominant State라고 한다.

logic 0: Dominant State (CANH > CANL)

3) Dominant State가 Recessive State보다 우선순위에서 앞선다


Dominant StateRecessive State보다 우선순위에서 앞선다. 그래서 만약 위의 예시처럼, 첫 번째 제어기와 두 번째 제어기가 동시에 각각 DominantRecessive을 출력한다면, 0의 우선순위가 더 높기 때문에 Dominant에 해당하는 전압이 출력된다.

심지어, 세 번째와 네 번째 제어기까지 동시에 Recessive을 출력해도, 앞서 언급된 Dominant의 우선순위가 더 높기 때문에 그에 해당하는 전압이 출력된다.

<참고 자료>
Single ended signals Vs. Differential Signal, https://blog.naver.com/suya309/221467921826
CAN Bus signal, https://www.ti.com/document-viewer/lit/html/SSZTCN3
Kiran Nayak, Mastering Microcontroller: Timers, PWM, CAN, Low Power(MCU2), Udemy, 2025.05.
존버매니아, CAN통신 - 자동차 신입이 알아야 할 모든 것, 인프런

profile
Chung-Ang Univ. EEE.

0개의 댓글