1. CAN(Controller Area Network) 프로토콜이란?
CAN(Controller Area Network)은 자동차, 산업 자동화, 로봇, 의료 기기 등 다양한 임베디드 시스템에서 널리 사용되는 직렬 통신 프로토콜입니다. CAN 프로토콜은 1980년대에 독일의 Bosch사에서 개발하였으며, 높은 신뢰성과 실시간 데이터 교환이 필요한 환경에서 효과적으로 동작합니다.
1.1 CAN 프로토콜의 특징
- 멀티마스터(Multi-Master) 방식: 네트워크 내 모든 노드가 송신할 수 있으며, 특정 노드에 의존하지 않습니다.
- 우선순위 기반 메시지 송수신: 메시지의 ID 값을 이용하여 우선순위를 정하고, 우선순위가 높은 데이터가 먼저 전송됩니다.
- 에러 검출 및 오류 복구 기능: CRC(Cyclic Redundancy Check) 및 ACK(Acknowledgment) 메커니즘을 통해 신뢰성을 보장합니다.
- 비트 스터핑(Bit Stuffing) 기법: 연속된 동일 비트가 일정 개수를 초과하지 않도록 변조하여 데이터의 신뢰성을 높입니다.
- 송수신 노드 간 동기화 필요 없음: 클록 신호 없이 데이터 전송이 가능하여 하드웨어 부담을 줄입니다.
2. CAN 프레임 구조
CAN 프레임은 크게 Standard Frame(표준 프레임)과 Extended Frame(확장 프레임)으로 구분됩니다.
2.1 Standard Frame (표준 프레임)
표준 프레임은 11비트의 식별자(ID)를 포함하며, 전체 길이는 44비트에서 108비트까지 변동될 수 있습니다.
필드 이름 | 비트 길이 | 설명 |
---|---|---|
Start of Frame (SOF) | 1비트 | 프레임 시작을 나타내는 비트 |
Identifier (ID) | 11비트 | 메시지의 우선순위를 결정하는 ID |
Remote Transmission Request (RTR) | 1비트 | 데이터 프레임(0) 또는 원격 프레임(1) 구분 |
Identifier Extension (IDE) | 1비트 | 표준(0) 또는 확장(1) 프레임 구분 |
Reserved Bit (r0) | 1비트 | 예약된 비트(사용 안 함) |
Data Length Code (DLC) | 4비트 | 데이터 길이 (0~8바이트) |
Data Field | 0~64비트 | 실제 전송할 데이터 (최대 8바이트) |
CRC Field | 15비트 | 에러 검출을 위한 CRC 값 |
ACK Field | 2비트 | 수신 노드가 데이터를 정상적으로 수신했는지 확인 |
End of Frame (EOF) | 7비트 | 프레임 종료 표시 |
2.2 Extended Frame (확장 프레임)
확장 프레임은 표준 프레임과 비교하여 18비트의 확장 식별자(Extended Identifier)가 추가되며, 총 29비트의 식별자를 사용합니다. 이를 통해 더 많은 종류의 메시지를 처리할 수 있습니다.
필드 이름 | 비트 길이 | 설명 |
---|---|---|
Start of Frame (SOF) | 1비트 | 프레임 시작을 나타내는 비트 |
Identifier (ID) | 11비트 | 기본 식별자 |
Substitute Remote Request (SRR) | 1비트 | 표준과 확장 프레임 구분 |
Identifier Extension (IDE) | 1비트 | 확장 프레임(1) 설정 |
Extended Identifier (EID) | 18비트 | 확장 식별자 |
Remote Transmission Request (RTR) | 1비트 | 데이터 프레임(0) 또는 원격 프레임(1) 구분 |
Reserved Bits (r0, r1) | 2비트 | 예약된 비트 |
Data Length Code (DLC) | 4비트 | 데이터 길이 (0~8바이트) |
Data Field | 0~64비트 | 실제 전송할 데이터 (최대 8바이트) |
CRC Field | 15비트 | 에러 검출을 위한 CRC 값 |
ACK Field | 2비트 | 수신 노드가 데이터를 정상적으로 수신했는지 확인 |
End of Frame (EOF) | 7비트 | 프레임 종료 표시 |
3. 주요 필드 설명
3.1 Identifier (ID)
CAN 메시지는 ID 값을 통해 우선순위를 결정합니다. 값이 낮을수록 높은 우선순위를 가집니다.
3.2 DLC (Data Length Code)
DLC는 전송할 데이터의 길이를 나타내며, 최대 8바이트까지 지정할 수 있습니다.
3.3 CRC (Cyclic Redundancy Check)
데이터 오류를 검출하기 위한 15비트의 오류 검출 코드입니다.
3.4 ACK (Acknowledgment)
수신 노드는 메시지를 정상적으로 수신하면 ACK 비트를 0으로 설정하여 송신 노드에 성공적으로 전달되었음을 알립니다.
4. 비트 스터핑(Bit Stuffing)과 에러 검출 방식
4.1 비트 스터핑(Bit Stuffing)
비트 스터핑은 연속된 동일한 비트(0 또는 1)가 5개 이상 나오지 않도록 중간에 반대 비트를 삽입하는 기법입니다. 이는 데이터의 동기화를 유지하고 신뢰성을 높이기 위해 사용됩니다.
4.2 CAN의 에러 검출 방식
CAN 프로토콜은 높은 신뢰성을 보장하기 위해 다양한 에러 검출 방식을 적용합니다.
- CRC(Cyclic Redundancy Check): 전송된 데이터의 무결성을 확인하기 위한 오류 검출 코드입니다.
- ACK Slot Checking: 수신 노드가 정상적으로 데이터를 수신했는지 확인합니다.
- Bit Monitoring: 송신한 비트와 버스에 실제 전송된 비트를 비교하여 오류를 감지합니다.
- Bit Stuffing Checking: 비트 스터핑 규칙을 위반하면 오류로 판단합니다.
- Frame Check: 메시지 형식(Frame Format)과 필드 값의 일관성을 검사합니다.
5. 결론
CAN 프로토콜은 높은 신뢰성과 실시간성이 중요한 환경에서 널리 사용됩니다. 표준 프레임과 확장 프레임을 활용하여 다양한 메시지를 효율적으로 전달할 수 있으며, 비트 스터핑과 CRC 기반의 강력한 오류 검출 기능을 갖추고 있습니다. 이를 통해 자동차, 산업 자동화, 의료 기기 등 다양한 분야에서 안정적인 통신을 제공합니다.
'CAN 통신' 카테고리의 다른 글
CAN 인터페이스 및 주요 하드웨어 (0) | 2025.02.22 |
---|---|
CAN 통신의 전기적 특성 및 물리 계층 분석 (0) | 2025.02.21 |
CAN 하드웨어 구성 및 주요 요소 (0) | 2025.02.20 |
CAN 통신의 특징 및 장점 (0) | 2025.02.19 |
CAN(Controller Area Network)이란? (0) | 2025.02.17 |