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) |
| 버스 접근 | CA — bit-by-bit arbitration |
| 충돌 해결 | 우선순위가 가장 높은 메시지가 선점 (Identifier 수치 역수) |
| 최대 페이로드 | 8 바이트 (짧은 버스 점유 보장) |
| CRC | 15-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-1 | CAN Protocol (CAN + CAN FD) — LLC + MAC + PLS |
| ISO 11898-2 | High-Speed Physical Layer (≤ 1 MBit/s) |
| ISO 11898-3 | Low-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”를 구성하며 트랜시버 하드웨어에 해당.
Data Link Layer / Physical Layer 내부 세부 계층
| 계층 | 약어 | 역할 |
|---|---|---|
| Logical Link Control | LLC | 전송 보안 보장 기능 |
| Medium Access Control | MAC | 버스 접근 제어 |
| Physical Coding Sublayer | PCS | 비트 부호화·복호화, 비트 타이밍, 동기화 |
| Physical Medium Attachment | PMA | 트랜시버 특성 |
| Medium Dependent Interface | MDI | 전송 매체, 커넥터 |
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 = 2 → 1비트 에러만 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단계 전략:
- Prevent Bit Errors — 물리 수단 (차동 신호, 꼬임쌍선, 종단 저항 등)
- Handle Bit Errors — 6가지 감지 메커니즘 (Bit Monitoring / ACK Check / Stuff Check / CRC Check / Form Check / ACK Bit Monitoring) + Error Frame + 재전송
- 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
- 차동 신호 레벨 (송신 기준):
| Logic | CANH | CANL | 상태 | |
|---|---|---|---|---|
| ”1” | 2.5V | 2.5V | 0V | Recessive (열성) |
| “0” | 3.5V | 1.5V | 2V | Dominant (우성) |
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 기준 전형적 물리 에러:
| # | 선 | 에러 |
|---|---|---|
| 1 | CAN_H | Circuit break |
| 2 | CAN_L | Circuit break |
| 3 | CAN_H | Short circuit to |
| 4 | CAN_L | Short circuit to GND |
| 5 | CAN_H | Short circuit to GND |
| 6 | CAN_L | Short circuit to |
| 7 | CAN_H and CAN_L | Short circuit between CAN_H and CAN_L |
| 8 | CAN_H and CAN_L | Circuit break of CAN_H and CAN_L |
| 9 | CAN_H and CAN_L | Missing 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 등 다른 버스와 연결됨.