- CAN 2.0A (Standard Format) VS CAN 2.0B (Extended Format)2024년 09월 19일 16시 41분 43초에 업로드 된 글입니다.작성자: IIIIIIIIIIIIIIIIIIIIl
CAN 2.0A (Standard Format) 및 CAN 2.0B (Extended Format)
CAN 2.0A 및 CAN 2.0B는 식별자(ID) 필드의 길이가 주로 다른 두 가지 밀접하게 관련된 프로토콜입니다. 표준 CAN이라고도 불리는 CAN 2.0A는 11비트 식별자를 사용하는 반면 확장 CAN으로 불리는 CAN 2.0B는 29비트 식별자(ID)를 사용합니다. 식별자 길이의 차이는 데이터 전송에 몇 가지 영향을 미치며 사용자가 활용할 수 있는 CAN ID는 CAN 2.0A는 2048 개이고 CAN 2.0B는 5억 개를 초과하여 사용할 수 있습니다.
- 복잡한 시스템에서 유용: CAN 2.0B의 식별자가 길수록 더 많은 수의 고유 메시지 식별자를 사용할 수 있으며 이는 많은 노드와 데이터 유형이 있는 복잡한 시스템에서 활용할 수 있습니다. 그러나 식별자가 길수록 프레임의 길이도 늘어나므로 버스에서 달성할 수 있는 최대 데이터 속도가 줄어들 수 있습니다.
- 더 세밀한 우선순위 지정: CAN 2.0B의 더 긴 식별자는 메시지 우선순위를 지정할 수 있는 더 많은 기회를 제공합니다. 식별자 값이 낮을수록 CAN 버스 시스템에서 우선 순위가 높기 때문에 CAN 2.0B 식별자의 추가 비트를 통해 메시지 우선 순위를 보다 세밀하게 제어할 수 있습니다.
- 유연성: CAN 2.0A 및 CAN 2.0B에서 서로 다른 식별자 길이를 사용하면 장치 간의 호환성에 영향을 줄 수 있습니다. CAN 2.0B 장치는 일반적으로 CAN 2.0A 장치와 통신할 수 있습니다.
결국 CAN 2.0A(표준 CAN)와 CAN 2.0B(확장 CAN)의 주요 차이점은 식별자 필드의 길이로 CAN 2.0A는 11비트 식별자를 사용하는 반면 CAN 2.0B는 29비트 식별자를 사용합니다. 이 차이는 고유 메시지 식별자의 수, 메시지 우선 순위 지정 및 장치 간의 호환성에 영향을 주게됩니다.
CAN 2.0A 와 2.0B 의 호환성
CAN 2.0B 컨트롤러는 CAN 2.0A 컨트롤러와 완벽하게 호환되며 두 형식의 메시지를 송수신할 수 있습니다. CAN 2.0A 컨트롤러를 사용하는 경우 두 가지 유형이 있습니다. 첫 번째 유형은 CAN 2.0A 메시지만 송수신할 수 있으며 CAN 2.0B 메시지를 수신하면 에러가 발생합니다. 두 번째 유형은 CAN 2.0B Passive로 알려져 있으며 CAN 2.0A 메시지를 송수신할 수 있고 CAN 2.0B 메시지를 수신한 경우에는 이를 확인한 후 무시 처리를 진행합니다.
CAN 2.0A (Standard Format) 메세지 프레임
- Start of Frame (SOF):
- 길이: 1비트
- 역할: 새로운 프레임이 시작됨을 알리는 비트(논리 0)로 모든 수신 노드가 발신 노드와 동기화되도록 신호를 제공합니다.
- Identifier (ID):
- 길이: 11비트
- 역할: 메시지의 고유 ID입니다. 일반적으로 ID는 메시지 우선순위를 결정하며 11비트 중 9비트가 실제로 유니크한 값으로 사용됩니다. 이를 통해 512개의 서로 다른 CAN 메시지를 구분할 수 있으며 메시지 ID는 16진수 000에서 7FF 사이의 값을 가집니다.
- 추가 설명: 일반적으로 복잡한 이유로 인해 11번째 비트와 4번째 비트는 마스킹 처리되어 메시지 ID에서 9개의 고유한 비트가 사용됩니다.
- Remote Transmission Request (RTR):
- 길이: 1비트
- 역할: 데이터 프레임과 원격 프레임을 구분하는 비트로 사용되며 이 비트가 0이면 데이터 프레임을 의미하고 1이면 원격 프레임을 의미합니다. 원격 프레임은 데이터를 요청할 때 사용됩니다.
- 0: 데이터 프레임 (Data Frame)
- 1: 원격 프레임 (Remote Frame)
- IDE (Identifier Extension):
- 길이: 1비트
- 역할: 표준 프레임(11비트)과 확장 프레임(29비트)을 구분하는 비트로 사용되며 비트가 0이면 표준 프레임(CAN 2.0A, 11비트 식별자), 1이면 확장 프레임(CAN 2.0B, 29비트 식별자)을 나타냅니다. CAN 2.0A에서는 항상 0입니다.
- 0: CAN 2.0A
- 1: CAN 2.0B
- Reserved Bits (R0):
- 길이: 1비트 (CAN 2.0A에서)
- 역할: CAN 2.0A에서 이 비트는 향후 사용을 위해 예약되어 있습니다. 이 비트는 항상 수동 상태로 설정됩니다.
- 추가 설명: CAN 2.0B에서는 이 비트가 CAN과 CAN-FD를 구분하는 역할을 합니다.
- Data Length Code (DLC):
- 길이: 4비트
- 역할: 데이터 필드에 포함된 데이터 바이트 수(길이)를 나타냅니다. 최대 8바이트까지의 데이터를 전송할 수 있습니다.
- Data Field:
- 길이: 0 ~ 8바이트
- 역할: 실제로 전송되는 데이터를 포함하는 필드입니다. DLC에서 정의된 바이트 수만큼의 데이터를 포함합니다.
- Cyclic Redundancy Check (CRC):
- 길이: 15비트
- 역할: 전송 중 발생할 수 있는 오류를 검출하기 위한 체크섬 필드입니다. 발신 노드가 데이터를 기반으로 CRC 값을 계산하여 포함하고, 수신 노드가 동일한 방식으로 CRC를 계산하여 오류 유무를 확인합니다.
- CRC Delimiter:
- 길이: 1비트
- 역할: CRC 필드가 끝났음을 알리는 역할을 하며, 항상 수동(recessive) 상태 "1"로 설정됩니다.
- Acknowledgement (ACK):
- 길이: 1비트 (ACK Slot) + 1비트 (ACK Delimiter)
- 역할: 수신 노드가 데이터를 성공적으로 수신했는지 여부를 발신 노드에 알리는 필드입니다. 수신 노드가 데이터를 성공적으로 수신한 경우, 이 비트를 지배적 상태(dominant) "0"으로 설정하여 ACK를 전송합니다. 발신 노드가 이 비트가 수동 상태로 남아 있으면, ACK 오류를 보고합니다.
- End of Frame (EOF):
- 길이: 7비트
- 역할: 프레임이 끝났음을 알리는 필드로, 연속적인 7개("1111111")의 수동 비트로 구성됩니다.
- Interframe Space (IFS):
- 길이: 3비트
- 역할: 프레임 간의 시간 간격을 제공하여 버스가 안정화되도록 돕습니다. 프레임 종료 후 버스는 다시 IDLE 상태로 전환됩니다.
CAN 2.0B (Extended Format) 메세지 프레임
CAN 2.0B는 29비트 식별자(Identifier)를 사용하는 버전으로 2^29 = 536,870,912개의 고유한 CAN ID를 활용할 수 있다는 것을 의미합니다. CAN 2.0A가 11비트 식별자(Identifier)를 사용하고 있다면 CAN 2.0B는 더 긴 식별자(29 비트)를 사용해 많은 수의 메시지 유형을 다룰 수 있습니다. CAN 2.0B 프레임의 구조는 CAN 2.0A와 유사하지만 주요 차이점은 확장된 식별자와 IDE 비트의 사용입니다.
- Start of Frame (SOF):
- 길이: 1비트
- 역할: 새로운 프레임이 시작됨을 알리는 비트(논리 0)로 모든 수신 노드가 발신 노드와 동기화되도록 신호를 제공합니다.
- Identifier (ID):
- 길이: 11비트 (기존) + 18비트 (확장) = 총 29비트
- 역할: 메시지의 고유 ID입니다. 일반적으로 ID는 메시지 우선순위를 결정하며 표준 프레임(CAN 2.0A)에서는 11비트 식별자를 사용하지만, 확장 프레임(CAN 2.0B)에서는 29비트 식별자를 사용하여 더 많은 메시지 유형을 구분할 수 있습니다.
- Substitute Remote Request (SRR):
- 길이: 1비트
- 역할: RTR 비트를 대체하여 확장 프레임에서 원격 요청을 구분합니다.
- IDE (Identifier Extension):
- 길이: 1비트
- 역할: 표준 프레임(11비트)과 확장 프레임(29비트)을 구분하는 비트로 사용되며 비트가 0이면 표준 프레임(CAN 2.0A, 11비트 식별자), 1이면 확장 프레임(CAN 2.0B, 29비트 식별자)을 나타냅니다. CAN 2.0A에서는 항상 0입니다.
- 0: CAN 2.0A
- 1: CAN 2.0B
- Remote Transmission Request (RTR):
- 길이: 1비트
- 역할: 데이터 프레임과 원격 프레임을 구분하는 비트로 사용되며 이 비트가 0이면 데이터 프레임을 의미하고 1이면 원격 프레임을 의미합니다. 원격 프레임은 데이터를 요청할 때 사용됩니다.
- 0: 데이터 프레임 (Data Frame)
- 1: 원격 프레임 (Remote Frame)
- Reserved Bits (R1, R0):
- 길이: 2비트
- 역할: 향후 CAN 표준에서 사용하기 위해 예약된 비트로, 현재는 항상 수동 상태(논리 1)로 설정됩니다.
- 추가 설명: CAN 2.0B에서는 이 비트가 CAN과 CAN-FD를 구분하는 역할을 합니다.
- Data Length Code (DLC):
- 길이: 4비트
- 역할: 데이터 필드에 포함된 데이터 바이트 수(길이)를 나타냅니다. 최대 8바이트까지의 데이터를 전송할 수 있습니다.
- Data Field:
- 길이: 0 ~ 8바이트
- 역할: 실제로 전송되는 데이터를 포함하는 필드입니다. DLC에서 정의된 바이트 수만큼의 데이터를 포함합니다.
- Cyclic Redundancy Check (CRC):
- 길이: 15비트
- 역할: 전송 중 발생할 수 있는 오류를 검출하기 위한 체크섬 필드입니다. 발신 노드가 데이터를 기반으로 CRC 값을 계산하여 포함하고, 수신 노드가 동일한 방식으로 CRC를 계산하여 오류 유무를 확인합니다.
- CRC Delimiter:
- 길이: 1비트
- 역할: CRC 필드가 끝났음을 알리는 역할을 하며, 항상 수동(recessive) 상태 "1"로 설정됩니다.
- Acknowledgement (ACK):
- 길이: 1비트 (ACK Slot) + 1비트 (ACK Delimiter)
- 역할: 수신 노드가 데이터를 성공적으로 수신했는지 여부를 발신 노드에 알리는 필드입니다. 수신 노드가 데이터를 성공적으로 수신한 경우, 이 비트를 지배적 상태(dominant) "0"으로 설정하여 ACK를 전송합니다. 발신 노드가 이 비트가 수동 상태로 남아 있으면, ACK 오류를 보고합니다.
- End of Frame (EOF):
- 길이: 7비트
- 역할: 프레임이 끝났음을 알리는 필드로, 연속적인 7개("1111111")의 수동 비트로 구성됩니다.
- Interframe Space (IFS):
- 길이: 3비트
- 역할: 프레임 간의 시간 간격을 제공하여 버스가 안정화되도록 돕습니다. 프레임 종료 후 버스는 다시 IDLE 상태로 전환됩니다.
CAN 2.0A 와 2.0B 의 차이점 요약
프레임 표준 CAN 프레임 형식 (11비트 CAN ID) 확장 CAN 프레임 형식 (29비트 CAN ID) Identifier (ID) 11 비트 CAN 식별자 29 비트 CAN 식별자 Arbitration field (ARB) 중재 필드 (ARB)는 12 비트 길이입니다. ARB 필드는 32 비트 길이입니다. IDE (Identifier Extension) IDE(식별자 확장)가 "0"일 경우 표준 11비트 프레임입니다. 제어 필드(CTRL)에 IDE가 포함됩니다. IDE가 "1"일 경우 확장 29비트 프레임입니다. ARB 필드에 IDE(식별자 확장)가 포함됩니다. Substitute Remote Request (SRR) SRR(대체 원격 요청) 비트를 포함하지 않습니다. SRR 비트를 포함하며 항상 1 비트로 전송됩니다. Control field (CTRL) CTRL 필드는 1개의 예약 비트(r0)를 사용합니다. CTRL 필드는 2개의 예약 비트(r0 및 r1)를 사용합니다. CAN-ID count 최대 2^11 = 2048개의 고유 CAN-ID를 포함할 수 있습니다. 확장 CAN 프레임은 최대 2^29 = 536,870,912개의 고유 CAN-ID를 포함할 수 있습니다. ==
참고자료
- https://www.cdebyte.com/news/641
'네트워크 > CAN 프로토콜' 카테고리의 다른 글
bxCAN 주요기능 소개 - interrupts (0) 2024.10.08 제조사별 CAN 모듈 소개 (0) 2024.10.04 CAN 통신을 이루는 하드웨어 (CAN Controller & CAN Transceiver) (0) 2024.10.04 CAN 프로토콜 개요 (0) 2024.09.18 다음글이 없습니다.이전글이 없습니다.댓글