CAN (Controller Area Network) — 자동차 분야의 대표적인 시리얼 버스 시스템. 버스 위에서 이벤트 주도(event-driven) 방식으로 동작하며, Powertrain·Chassis·Body 영역에서 가장 널리 쓰인다. ISO 11898 표준군에 의해 정의됨.

역사

  • 1986년 Bosch가 개발하여 SAE에서 공개.
  • 1991년 ISO 표준 등재 후 산업 표준으로 자리 잡음.
  • 최초 적용 차량: Mercedes-Benz S-class W140 (1991) — 5개 ECU가 CAN으로 연결.
  • CAN 등장 배경:
    • 1:1 점대점(Point-to-Point) 배선의 한계 (버스 네트워킹). 차량 배선은 엔진·샤시 다음으로 비싸고 무거우며, 장착 인건비가 차량 전체의 약 50%.
    • 배선 간소화로 연비·복잡도·가격 개선.
  • 트랜시버 단가 $0.65~0.86 수준 (TJA1050T/TJA1462AT, 2500개 기준)으로 가장 저렴한 차량 통신 IC자동차 버스 시스템 참조.

핵심 특성

항목설명
물리 계층차동 신호 + 꼬임쌍선, 전압 스윙 CAN HS 1V / CAN LS 2.5V
토폴로지Bus, 양 끝에 120Ω 종단 저항
주소 지정Broadcast Addressing (프레임 = Identifier + Data + Redundancy)
식별자 길이Standard 11-bit(0x000~0x7FF) / Extended 29-bit (J1939)
버스 접근CAbit-by-bit arbitration
충돌 해결우선순위가 가장 높은 메시지가 선점 (Identifier 수치 역수)
최대 페이로드8 바이트 (짧은 버스 점유 보장)
CRC15-bit, 생성 다항식 0xC599(CRC), 목표 HD=6 (5비트 검출) / 스터핑 포함 실제 HD=2
동기화Synchronization — SOF 에지로 초기 동기, 프레임 내 falling edge로 재동기
에러 처리Error Frame 전송, Negative Acknowledgement, 프레임 재전송
결함 격리TEC/REC 카운터 → Error Active / Error Passive / Bus Off

ISO 11898 표준군

CAN은 CAN / CAN FD 프로토콜 + 2종 물리 계층으로 구성되며, 계층별로 ISO 표준이 다르다.

표준영역
ISO 11898-1CAN Protocol (CAN + CAN FD) — LLC + MAC + PLS
ISO 11898-2High-Speed Physical Layer (≤ 1 MBit/s)
ISO 11898-3Low-Speed Physical Layer (≤ 125 kBit/s)
  • CAN Protocol은 Data Link Layer 전체 + Physical Layer의 PLS(Physical Signaling)를 커버.
  • PMA(Physical Medium Attachment) + MDI(Medium Dependent Interface) 가 이른바 “CAN Physical Layer”를 구성하며 트랜시버 하드웨어에 해당.
계층약어역할
Logical Link ControlLLC전송 보안 보장 기능
Medium Access ControlMAC버스 접근 제어
Physical Coding SublayerPCS비트 부호화·복호화, 비트 타이밍, 동기화
Physical Medium AttachmentPMA트랜시버 특성
Medium Dependent InterfaceMDI전송 매체, 커넥터

OSI 계층 사용 범위

  • Data Link Layer까지만 사용 (CAN Controller + Transceiver).
  • CAN TP(Transport Protocol)는 OSI L4에 매핑되지 않고 일반적으로 Application의 일부로 분류. TCP·IP 스택이 Transport 계층까지 포함하는 것과 대조된다.

CAN ECU의 하드웨어 3계층

CAN ECU는 기능적으로 세 구성 요소로 나눌 수 있다:

Microcontroller

  • 애플리케이션 SW 실행.
  • 메시지 송신 필요 시 CAN-Controller에 데이터 전달.
  • 수신 메시지는 수락 필터를 통과한 것만 처리.

CAN-Controller

  • 송신 메시지 완성 (프레이밍).
  • 수신 메시지 검사.
  • 버스 접근과 비트 타이밍 제어.
  • 모든 CAN 메시지를 수신·검사한다 — 수락 필터 통과 여부와 무관하게 에러 감지에 참여.

CAN-Transceiver

  • Tx: 비트 스트림을 버스의 전압 레벨로 변환.
  • Rx: 전압 샘플링 후 비트로 변환해 Controller에 전달.
  • 전압 레벨은 초당 최대 100만 번 변함 → 반사 발생 예상 → 양 끝에 120Ω 종단 저항으로 억제.

CRC 성능

  • 15 bit CRC, 생성 다항식 = 1100010110011001 = 0xC599.
  • 연산 범위: SOF부터 Data 필드 끝까지.
  • 목표 최소 해밍 거리 = 6최대 5비트 에러 100% 검출.
  • 실제 성능: 스터프 비트를 고려하면 HD = 21비트 에러만 100% 검출, 최악의 경우 2비트 에러가 정상 메시지로 인식될 수 있음.
  • 에러 정정 기능 없이 검출만 지원 (정정이 필요한 경우 상위 프로토콜 또는 MCU 메모리의 ECC 별도 활용).
  • 이론 계산 예: ID=0x003, DLC=1, Data=0xDB → CRC = 0x0F4C.
  • 자세한 CRC 이론은 CRC 참조.

프레임 구조 요약

CAN Data Frame (Standard Format) 비트 순서:

Bus idle | SOF | Identifier(11b) | RTR | IDE | r | DLC(4b) | Data(0~8B) | CRC(15b) | DEL | ACK | DEL | EOF(7b) | ITM(3b) | Bus idle
  • Standard vs Extended: 식별자 11-bit(0x000~0x7FF) vs 29-bit(536M+).
  • Data vs Remote: RTR dominant=Data / recessive=Remote. Data Frame이 중재에서 승리.
  • IDE: dominant=Standard / recessive=Extended. Standard Frame이 중재에서 승리.
  • DLC: 4-bit. 값 9~15는 모두 8 Byte로 해석.
  • 비트 스터핑: SOF~CRC 구간에서 5 동일 비트 연속 시 반전 비트 삽입 (비트 스터핑).

자세한 내용은 CAN 프레임.

에러 처리 요약

CAN의 데이터 보호는 3단계 전략:

  1. Prevent Bit Errors — 물리 수단 (차동 신호, 꼬임쌍선, 종단 저항 등)
  2. Handle Bit Errors — 6가지 감지 메커니즘 (Bit Monitoring / ACK Check / Stuff Check / CRC Check / Form Check / ACK Bit Monitoring) + Error Frame + 재전송
  3. Fault Confinement — TEC/REC 카운터로 결함 노드 점진 격리

Error Frame = Error Flag(6 dominant) + Error Delimiter(8 recessive). Primary / Secondary 구분.

Fault Confinement 상태:

상태조건
Error Active and
Error Passive or
Bus Off

자세한 내용은 CAN 에러 처리.

상위 프로토콜 응용

SAE J1939

Extended Format(29-bit) 활용. 상용차·선박·농기계·대형 발전기 대상. 파생 표준:

  • NMEA 2000 — 해양 선박
  • ISO 11783 — 농기계 ISO-Bus

29-bit ID 구조: Priority(3) + EDP(1) + DP(1) + PDU Format(8) + PDU Specific(8) + Source Address(8).

변종 (Variants)

CAN Low Speed (Fault Tolerant CAN)

  • 전송률: 최대 125 kBit/s
  • 표준: ISO 11898-3
  • 적용: Body / Convenience (Class B)
  • 전압 스윙: 2.5V
  • 대표 트랜시버: TJA1054
  • 차동 전압 (ISO 11898-3):
    • Dominant:
    • Recessive:

CAN High Speed

  • 전송률: 최대 1 MBit/s
  • 표준: ISO 11898-2
  • 적용: Powertrain / Chassis (Class C)
  • 전압 스윙: 1V
  • 대표 트랜시버: PCA82C250, PCA82C251, TJA1050, TJA1040, TJA1041
  • 차동 신호 레벨 (송신 기준):
LogicCANHCANL상태
”1”2.5V2.5V0VRecessive (열성)
“0”3.5V1.5V2VDominant (우성)

CAN FD (Flexible Data Rate)

  • 전송률: 페이로드 구간에서 Baud rate 상향 전환(BRS 비트로 활성화). 상한은 Transceiver 성능이 결정.
  • 표준: ISO 11898-1 (CAN과 공유)
  • 적용: Powertrain / Chassis
  • Data Field 최대 64 Byte (DLC 9~15 = 12/16/20/24/32/48/64).
  • 신규 비트: FDF(FD Format, recessive), RRS(구 RTR 위치 dominant), BRS(Bit Rate Switch), ESI (Error State Indicator).
  • Remote Frame 없음 (데이터 필드 없으면 속도 전환 이유 없음).
  • CRC: CRC17 (0x3685B, ≤16 Byte) / CRC21 (0x302899, >16 Byte). 수신자는 CRC15/17/21을 병렬 계산 후 FDF + DLC로 선택.
  • 2단계 비트 스터핑: 데이터까지 5+1 동적, CRC 구간은 고정 위치 + 스터프 카운트 Gray+parity 인코딩.
  • 호환성: CAN FD 노드는 고전 CAN과 하위 호환. 고전 CAN 노드는 CAN FD 프레임을 Error Frame으로 중단 → ISO 11898-6 Selective Wake-up Transceivers로 혼합 운영 가능.
  • 자세한 내용은 CAN FD 참조.

Single-Wire CAN (SWC)

  • 표준: SAE J2411
  • 전송률: ≤ 33 kBit/s (High-Speed Mode 시 41.6 kBit/s)
  • 대표 트랜시버: AU5790

CAN High Speed 차동 전압 해석 (수신 측)

ISO 11898-2 기준:

차동 전압 비트 값
1 (recessive)
0 (dominant)
그 외에러
  • 수신자는 비트 시작 후 일정 시간 대기 후 판정 (샘플 포인트
  • 수신은 송신에 항상 시간 지연을 수반 (거리가 멀수록 커짐).
  • Baud rate = Bit rate (1:1). 500 kbit/s → 1비트 = 2µs.

9가지 물리 에러

CAN High-Speed 기준 전형적 물리 에러:

#에러
1CAN_HCircuit break
2CAN_LCircuit break
3CAN_HShort circuit to
4CAN_LShort circuit to GND
5CAN_HShort circuit to GND
6CAN_LShort circuit to
7CAN_H and CAN_LShort circuit between CAN_H and CAN_L
8CAN_H and CAN_LCircuit break of CAN_H and CAN_L
9CAN_H and CAN_LMissing Termination Resistors
  • 트랜시버 중 일부만 이 에러들을 감지·신호화.
  • CANoe·CANalyzer로 전달되는 에러 정보는 제한적 (Trace 창 Aftr 열에 항목 기록, 에러 타입 미표시).

CAN의 특징적 설계 결정

  • 이벤트 주도: 신호 변화가 발생하면 해당 ECU가 임의 시점에 버스에 접근. 고정된 스케줄 없음.
  • 우선순위 기반 충돌 회피: 2개 이상 ECU가 동시 접근 시 Identifier가 가장 높은 우선순위를 가진 메시지가 살아남음 (상세는 CAN 중재).
  • 브로드캐스트 주소 지정: 프레임 헤더에 Identifier만 존재. 모든 노드가 수신 후 Acceptance Filter로 처리 여부 결정 → 다수 수신자에게 동일 데이터 전달 시 버스 부하가 선형으로만 증가.
  • 단일 송신자 규칙: 각 Identifier는 정확히 하나의 노드에서만 발원한다 (중재 로직의 전제). 상세는 통신 매트릭스.
  • 8바이트 페이로드 상한: 한 메시지가 버스를 오래 점유하지 않도록 제한 — 낮은 우선순위 메시지의 대기 시간도 제한적.
  • Peer-to-Peer가 필요한 경우: 상위 프로토콜(transport/diagnostic 등) 계층이 필요. CAN 자체에는 P2P 주소 지정 수단이 없음.

자동차 도메인 내 위치

  • Powertrain / Chassis: CAN (High Speed), CAN FD → Motor, ABS, Transmission
  • Convenience / Body: CAN (Low Speed) → Door, Roof, Seat, Climate
  • 여러 CAN 네트워크는 Gateway ECU를 통해 FlexRay·MOST 등 다른 버스와 연결됨.

같이 보기