CAN
- 1. CAN 통신 개요
- Controller Area Network
- 1986년 Bosch에서 개발, ISO 표준
- 여러 장치들이 하나의 버스라인에 연결되어 데이터를 주고 받는 프로토콜
- 멀티마스터 직렬 통신 프로토콜
- 자동차, 산업 자동화, 의료 기기 널리 사용
- 1991년 Mercedes-Benz S-class model W140에 최초로 적용
- 5개의 ECU가 CAN통신으로 연결
- 2. CAN 통신 특징
- 1) 멀티마스터 & 메시지 기반 통신
- 멀티 마스터 방식 : 네트워크에 연결된 모든 노드가 송신/수신 가능
- 메시지 기반 통신 : 특정 기기 주소가 아닌 메시지 ID를 기반으로 통신
- 2) 차동 신호 방식 (Differential Signaling)
- CANH, CANL 두 개의 신호선을 사용
- 차동 신호(Differential Signal) 방식으로 데이터 전송
- 외부 노이즈 영향 최소화
- 3) 충돌 방지 (Arbitation)
- 송신 노드가 동일한 메시지 ID를 전송하면 우선순위를 가진 메시지가 버스를 차지
- 4) 오류 검출 및 복구
- CRC (Cyclic Redundancy Check)
- ACK (Acknowledge) 비트
- Error Frame
- 1) 멀티마스터 & 메시지 기반 통신
- 3. CAN 통신 구조
- CAN 통신 계층
-
CAN Bus 상태 | 상태 | 설명 | | ————————— | ———————————- | | Dominant (지배 상태) | CANH=3.5V, CANL=1.5V (논리적 LOW) | | Recessive (비지배 상태) | CANH=2.5V, CANL=2.5V (논리적 HIGH) |
- CAN Controller -> CAN Transeiver -> CAN Bus
- CAN Transceiver
- CAN Controller의 디지털 신호를 물리적인 CAN Bus 신호로 변환
- 수신 신호를 디지털 신호로 변환하여 전달
- CAN Controller
- 묶어서 한 Frame으로 만듬
- Pack, Unpack
단점 예측 불가능한 지연 우선순위 낮은 메시지 입장에서 얼마나 기다려야할지 알 수가 없다
이더넷은 실시간 x CAN은 실시간
실시간이란? dead line이내에 데이터 처리가 가능한가 (hard real time)
3. CAN 통신 구조
1) CAN 통신 계층
| 계층 | 설명 | | ————————————- | ———————————————– | | 물리 계층 (Physical Layer) | CANH, CANL 신호선 사용하여 차동 신호 전송 | | 데이터링크 계층 (Data Link Layer) | CAN 프레임 구조, 충돌 회피, 오류 검출/복구 수행 | | 전송 계층 (Transport Layer) | 고급 CAN 프로토콜 (CAN-FD, ISO 15765-4 등) 포함 | | 응용 계층 (Application Layer) | 상위 프로토콜 (J1939, OBD-II, CANopen 등) 적용 |
2) CAN Bus 상태
| 상태 | 설명 | | ————————— | ———————————- | | Dominant (지배 상태) | CANH=3.5V, CANL=1.5V (논리적 LOW) | | Recessive (비지배 상태) | CANH=2.5V, CANL=2.5V (논리적 HIGH) |
4. CAN 프레임 형식
CAN 데이터 프레임은 다음과 같은 구조를 가진다.
1) Standard CAN Frame (11-bit ID)
| 필드 | 길이 (비트) | 설명 | | ——————————— | ———– | ————————— | | SOF (Start of Frame) | 1 | 프레임 시작 | | Identifier (ID) | 11 | 메시지의 우선순위 결정 | | RTR (Remote Transmission Request) | 1 | 데이터 요청 여부 | | Control Field | 6 | DLC (Data Length Code) 포함 | | Data Field | 0~8바이트 | 전송 데이터 | | CRC Field | 15 + 1 | 오류 검출 코드 | | ACK Field | 1 + 1 | 수신 확인 응답 | | EOF (End of Frame) | 7 | 프레임 종료 |
2) Extended CAN Frame (29-bit ID)
- Identifier 필드가 29비트로 확장된 버전.
5. CAN 통신 방식
1) 송신 (Transmission)
- 송신 노드가 CAN Bus 상태 확인 (idle 상태).
- 메시지 ID를 포함한 데이터 전송.
- 다중 노드가 전송하면 우선순위(ID 낮음 우선권) 결정.
- 수신 노드가 데이터 수신 후 ACK 비트 응답.
2) 수신 (Reception)
- 네트워크에 있는 모든 노드는 메시지 ID 확인.
- ID가 필요한 데이터라면 수신 후 ACK 신호 송신.
- 불필요한 메시지는 무시.
6. CAN 오류 검출 메커니즘
| 오류 유형 | 설명 | | ————— | —————————————- | | Bit Error | 송신한 비트와 수신한 비트가 다름 | | Stuff Error | 동일한 비트가 5회 연속 출현 시 오류 발생 | | CRC Error | 수신한 CRC 값과 송신한 CRC 값이 불일치 | | ACK Error | 송신자가 ACK 비트를 받지 못함 | | Form Error | 프레임 포맷 규칙 위반 |
8. 확장된 CAN 프로토콜
1) CAN FD (CAN with Flexible Data-Rate)
- 기존 CAN보다 데이터 속도 증가 (최대 8Mbps).
- 데이터 필드 크기 8바이트 → 64바이트 확장.
2) CANopen
- 산업 자동화에서 사용되는 상위 프로토콜.
- 노드 간 데이터 공유 및 마스터-슬레이브 구조 지원.
3) J1939
- 대형 차량 (버스, 트럭, 농기계 등)에서 사용.
- 29-bit Extended CAN Frame 사용.
9. 결론
- CAN은 고속, 신뢰성, 오류 감지 기능을 갖춘 자동차 및 산업용 네트워크 표준 프로토콜.
- 멀티마스터 & 차동 신호 방식을 적용하여 우선순위 기반 데이터 송수신이 가능.
- 확장된 프로토콜 (CAN-FD, CANopen, J1939)을 활용하면 다양한 분야에 적용 가능.
🔹 자동차 및 임베디드 시스템을 개발할 때 CAN 통신 이해는 필수적!