CAN(Controller Area Network)은 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격
차량 내 ECU들은 CAN 프로토콜을 사용하여 통신
CAN은 차량의 여러 ECU들이 증가하면서 기존의 UART 통신 방식으로는 한계가 생겨 개발된 버스 기반 통신 프로토콜이다
CAN의 장단점
장점
배선 간소화 및 비용 절감
ID를 통한 우선순위 기반 통신
Multi Master 통신
차동 신호 방식을 사용하여 노이즈에 강한 통신
고속 및 장거리 통신 (최대 1Mbps, 최대 1km)
단점
연결할 노드나 장치 수에 제한이 있음 (최대 64개 노드)
전압 레벨이 달라 전기적 잡음 많음
보안 취약
CAN 통신 방식
CAN은 CSMA/CD+AMP(Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority) 방식을 사용하여 네트워크 내에서 다수의 노드가 동시에 데이터를 전송할 때 충돌을 방지하고 우선순위가 높은 메시지를 우선적으로 전송할 수 있도록 한다
CSMA: 각 노드는 전송을 시도하기 전 버스가 비어있는지 확인
CD: 동시에 여러 노드가 전송을 시도할 때 충돌을 감지하고 우선순위가 낮은 노드는 전송을 중지 시킴
AMP: ID를 이용하여 우선순위를 결정하고 충돌 발생 시 우선순위가 높은 메시지가 먼저 전송 (ID가 낮을수록 우선순위가 높음)
CAN은 Multi-Master 통신을 지원하며 네트워크 내 모든 노드가 송신할 수 있는 권한을 갖음
CAN Frame 구조
Data Frame: 실제 데이터를 포함하는 프레임
Remote Frame: 데이터 요청 프레임으로 특정 ID의 데이터를 요청할 때 사용하며 요청하는 데이터 길이만 설정
Error Frame: 오류 발생 시 네트워크에 알리는 프레임으로 오류가 감지되면 모든 노드에 에러 상태를 알림
Overload Frame: 데이터 처리 지연이 필요할 때 사용하는 프레임으로 이전 프레임과 다음 프레임 사이의 지연 시간을 설정
InterFrame Space: Data Frame과 Remote Frame을 이전 프레임과 분리하기 위해 사용
CAN Data Frame
Start of Frame(SOF)
1bit, 프레임의 시작을 알리는 비트
Arbitration Field
Identifier(ID)
11bit, 메시지의 우선순위와 내용을 식별하며 값이 낮을수록 우선순위가 높다
11bit 모두가 recessive면 안됨
Remote Transmission Request(RTR)
1bit, data frame에서는 항상 0으로 설정하며 remote frame에서만 사용