Network

CAN(Controller Area Network) 통신 개요

hunger626 2025. 9. 27. 23:32

Overview

  • CAN은 차량 내에 여러 ECU(Electronic Control Unit) 혹은 장치들 간의 통신을 위해 설계된 프로토콜이다.
  • 차량의 기계적 제어에서 ECU를 통한 전기적 제어로 바뀌고, ECU의 개수가 증가하면서 효율적이고 안정적인 통신을 위해 개발되었다.

 

CAN 통신의 특징

Message Oriented Protocol

  • ECU 노드 주소가 아닌 메시지의 우선순위에 따라 Identifier(ID)를 할당하고, 이 Message ID를 이용해 구별한다.

 

Bus형 or Passive Star형 Topology

  • ECU간 1대1 연결을 하면 선도 많아지고, ECU 추가할 때마다 선이 계속 추가돼서 비용이나 무게 등의 측면에서 좋지 않아 Bus형 혹은 Passive Star형 네트워크로 ECU를 연결한다.

 

Multi Master, Broadcast Communication

  • 모든 ECU가 정보를 송신할 수 있고, 목적지가 따로 안 정해져 있어서 해당 정보를 나머지 모든 ECU가 수신 가능하다.

 

CSMA(Carrier Sense Multiple Access)

  • 정보(Frame) 송신하기 전에 BUS의 전압을 읽어서 IDLE인지 BUSY인지 확인(CS)
  • 동시에 여러 ECU가 정보를 송수신 (MA)

 

CD-CR(Collision Detection with Collision Resolution)

  • 2개 이상의 ECU가 정보 송신하면 이를 감지하고 Arbitration으로 충돌 해소

 

Synchronization

  • Hard sync : Start of Frame(SoF)의 falling edge마다 동기화한다.
  • Resync : 주기적으로 falling edge마다 1bit내의 time segment를 조정한다.

 

NRZ(Non Return to Zero) bit coding

  • 빠르고 효율적으로 데이터를 보낼 수 있지만 timing을 놓칠 수 있어서 동기화를 위해 bit stuffing을 한다.

 

Bit Stuffing

  • 일반적으로 연속적으로 동일한 5bit가 나오면 반대 bit 값을 넣어주는 것과 4bit마다 마지막 비트의 반대 bit 값을 넣어주는 것이 있다.

 

CAN High/Low twisted pair Wire

  • CAN High/Low에 걸린 전압의 차이를 통해 logic “0”, “1” 값을 해독한다.  (Differential 방식을 사용하므로 잡음에 강함)
  • CAN High = 3.5V, CAN Low = 1.5V 이면 logic “0” (dominant)
  • CAN High = 2.5V, CAN Low = 2.5V 이면 logic “1” (recessive)
  • 우선 순위: logic “0” (dominant) > logic “1” (recessive)

 

통신 속도

  • CAN 2.0A/B : 최대 1 Mbps, payload 0~8byte
  • CAN FD : (Data field 기준) 최대 2~5Mbps, payload 0~64byte
  • CAN XL : (Data field 기준) 최대 10Mbps, payload 0~2048byte

 

CAN 구조

https://www.intechopen.com/chapters/77277

ECU

  • Core + CAN Controller로 구성된 MCU와 CAN Tranceiver
    • Core : 연산을 위한 CPU, Memory 등으로 구성
    • CAN Controller :  Core한테 data를 송/수신하면 Header, Tailen/decoding해서 CAN Transceiver한테 logic 값을 송/수신한다.
    • CAN Transceiver : Logic 값을 Voltage로 변환하여 Controller나 다른 Transceiver에 송/수신한다.

BUS

  • Free/Idle 상태는 CAN Frame 정보가 없다는 것으로 이때는 아무 ECU가 바로 정보 전송 가능하다.
  • Busy 상태는 구리 선에 CAN Frame이 흘러가고 있다는 것으로 이때는 어떤 ECU로 정보 전송 시작이 불가하다.
    • 정보 전송이 끝나고 나서 InterFrame Space(IFS)때까지 기다려야 한다.

 

데이터 통신 방식

  1. MCU 안의 CPU Core가 Data 를 CAN Controller쪽으로 보낸다.
  2. CAN Controller가 11898-1 국제표준 규약에 따라 추가적인 Header, Tail를 encoding 하여 logic 값을 CAN Transceiver에 보낸다.
  3.  CAN Transceiver는 받은 Logic 값을 실제 전압으로 변환해서 구리 선에 인가하고 다른 수신하는 CAN Transceiver가 전압을 보고 다시 logic 값으로 변환해서 CAN Controller로 보낸다.
  4. CAN Controller가 Acceptance filtering을 통해 해당 ID를 읽어올지 아닐지를 정하고 이걸 RX buffer로 CAN frame을 보내서 head, tail를 decoding하여 data를 Core에 보낸다.

 

CAN Protocol/Frame/Filed 종류

Protocol

CAN Protocol Description
Classic CAN
(2.0A Standard / 2.0B ID Extended Frame)
CAN 통신의 특징 참고
CAN 2.0A와 2.0B의 차이는 Identifier의 bit 개수의 차이가 있다.
CAN FD Classic CAN에서 Data Field부분의 bit rate를 높여서 한 Frame에 더 많은 Payload를 보낼 수 있게 향상시켰다.
CAN XL(Extended Data Field Length) Classic CAN/CAN FD에서 더 확장하여 더 많은 Payload를 빠르게 전송 가능하도록 향상시켰다.

 

 

Frame

CAN Frame Description
Data Frame 송신 측에서 보낸 메시지 ID와 데이터 정보를 담고 있는 Frame
Remote Frame 수신 측에서 특정 메시지 ID정보를 요청하는 Frame
Error Frame(Active/Passive) 송수신 측에서 Error가 감지되면 전송하는 Frame
Overload Frame 수신 측의 내부 상태가 Frame 전송 Delay를 요청하는 Frame
* InterFrame Space(IFS) Frame과 Frame 사이에 최소 3bit 정보의 Idle상태를 유지한다.

 

 

Field

CAN Frame Description
Arbitration Field 메시지의 우선 순위를 판단하기 위한 Field
Control Field Message의 종류를 알려주는 Field
Data Field Data(Payload)를 담고있는 Field
CRC Field 메시지의 유효성 검증을 위한 Field
Acknowledgement Field Bus 통신이 성공적으로 송수신 되었는지 확인하는 Field

 

'Network' 카테고리의 다른 글

CAN Frame 설명  (0) 2025.09.28
SOME/IP Protocol  (0) 2025.09.25
Raw Socket  (2) 2025.08.15
Snort  (5) 2025.07.26
pcap(Packet Capture, 패킷 캡처)  (1) 2025.07.18