CAN FD (CAN with Flexible Data-rate)CAN 프로토콜의 확장 규격. 페이로드 구간에서만 전송률을 가변으로 올리고, 데이터 필드를 최대 64 바이트까지 확장한다. 중재·ACK 구간은 기존 CAN과 동일한 규칙을 유지해 호환성을 확보한다.

도입 이유와 효과

  • 전송률 향상 → 버스 부하 감소, 버스 통합 기회, 긴 버스에서도 고속화 가능.
  • 데이터 필드 확장(최대 64 Byte) → 데이터 대 프로토콜 오버헤드 비 개선, 패킷 분할·메시지 멀티플렉싱 감소.
  • 신규 CAN Controller 필요. 단가는 기존 CAN에 근접. 기존 CAN과 완전 호환.
  • 기존 HS Transceiver 사용 가능(단, 최신 Transceiver 사용 시 더 높은 Baud rate 실현).
  • CAN·상위 프로토콜(AUTOSAR, CANopen, J1939…)의 소규모 적응 필요.

6가지 프레임 유형

Standard/Extended × Remote/Data/FD Data의 조합이지만 CAN FD에는 Remote Frame이 없다.

포맷RemoteDataFD Data
Standard (11-bit)Data Field 없음0~8 Byte0~64 Byte
Extended (29-bit)Data Field 없음0~8 Byte0~64 Byte

구분 기준 3가지:

  • Identifier 길이: 11-bit (Standard) / 29-bit (Extended)
  • Data Field 존재 여부: 있음 → Data Frame / 없음 → Remote Frame
  • Data Field 길이: 0~8 Byte → 고전 CAN Data Frame / 0~64 Byte → CAN FD Data Frame

데이터 필드가 없으면 Baud rate 전환 이유도 없다 → CAN FD에 Remote Frame 정의 없음.

프레임 필드 변화 (Standard 포맷 기준)

약어원어CAN FD에서의 역할
SOFStart Of Frame동일
IDEIdentifier Extension동일
RRSRemote Request Substitution기존 RTR 위치. Dominant 고정 (CAN FD에는 Remote 없음)
FDFFD Format기존 reserve(r) 비트 위치. Recessive → CAN FD 프레임 표시
BRSBit Rate SwitchDominant → 단일 Baud rate / Recessive → 고속으로 일시 전환
ESIError State IndicatorDominant → 송신자 Error Active / Recessive → Error Passive
DLCData Length Code4-bit. 9~15 해석 방식 변경 (아래 표)
CRCCyclic Redundancy Check17-bit 또는 21-bit (CAN의 15-bit과 다름)
DELDelimiter동일
ACKAcknowledgement동일
EOFEnd Of Frame동일
ITMIntermission동일
  • SRR(Substitute Remote Request) — Extended FD 프레임의 RTR 위치에서 대체 사용.
  • RRS = 예전 RTR 위치에 dominant 고정, FDF = 예전 reserve 비트 위치에 recessive. 두 조합이 CAN FD 프레임을 식별.

DLC ↔ Data Field 매핑

4-bit DLC는 0~15 값을 갖지만 9~15 구간의 해석이 CAN과 다르다.

DLCCAN (Byte)CAN FD (Byte)
000
111
888
9812
10816
11820
12824
13832
14848
15864

Bit Rate Switch (BRS)

  • Recessive BRS 비트의 샘플 포인트부터 송신자가 높은 Baud rate로 전환 → 수신자들도 동일하게 전환.
  • CRC Delimiter 비트의 샘플 포인트에서 모두 중재 Baud rate로 복귀.
  • 한 프레임 내에서 두 개의 Baud rate가 구성되어 있어야 한다.
  • 높은 Baud rate의 상한은 Transceiver 성능이 결정. 기존 HS CAN Transceiver로도 가능하며, 최신 Transceiver로 더 높은 속도 달성.
  • 근거: 중재와 ACK를 벗어나면 송신자는 한 명뿐이므로 왕복 지연 제약이 사라진다 (CAN 동기화의 Data Rate vs Bus Length 참조).

Error State Indicator (ESI)

  • 기존 CAN에서는 송신자가 자신의 에러 상태를 프레임으로 알릴 수단이 없었다.
  • CAN FD에서는 ESI 비트로 현재 송신자의 상태를 모든 노드가 인지.
    • Dominant → 송신자 Error Active
    • Recessive → 송신자 Error Passive
  • Fault Confinement 상태를 수신자에게 직접 가시화.

2단계 Bit Stuffing

CAN FD는 스터핑 규칙두 단계로 분리한다.

1단계 — 데이터 필드 말미까지

  • CAN과 동일한 5+1 동적 스터핑 규칙 적용 (SOF부터 Data Field 끝까지).

2단계 — CRC 필드 고유 스터핑

  • 삽입된 스터프 비트 개수를 Gray 코드로 인코딩 + 패리티 비트 추가 → CRC 필드 앞에 배치.
  • CRC 계산에는 스터프 비트도 포함.
  • CRC 시퀀스 자체는 고정 위치에 스터프 삽입:
    • 첫 CRC 비트 앞에 1개
    • 이후 매 4 CRC 비트마다 1개
    • 17-bit CRC → 스터프 비트 6개
    • 21-bit CRC → 스터프 비트 7개
  • 스터프 비트 값은 바로 앞 비트의 반전.

Stuff Bit Count 인코딩 (Gray + Parity)

Stuff Bit 수Gray 코드Parity
00000
10011
20110
30101
41100
51111
61010
71001

CRC — 3가지 버전

대용량 페이로드의 전송 품질을 유지하기 위해 CRC 길이가 데이터 필드 크기에 따라 달라진다.

CRC 버전사용 조건생성 다항식
CRC15CAN (고전)0xC599
CRC17CAN FD, Data Field ≤ 16 B0x3685B
CRC21CAN FD, Data Field > 16 B0x302899

수신자의 3중 병렬 계산

수신자는 프레임 시작 시점에는 어느 CRC 버전이 맞는지 알 수 없으므로:

  1. 프레임 수신 시작과 동시에 세 CRC 계산을 병렬로 진행.
  2. FDF 비트(구 EDL)가 CRC15와 나머지 둘을 구분.
  3. CAN FD 프레임인 경우 DLC 값으로 CRC17 / CRC21 결정.
  4. 결정된 CRC 계산만 최종화하고 나머지는 폐기.

호환성

  • CAN FD 노드는 고전 CAN에 대해 하위 호환 (backward compatible).
  • 고전 CAN 노드는 CAN FD에 대해 상위 호환이 아님 (not forward compatible).
    • 고전 CAN 노드는 CAN FD 프레임을 Error Frame으로 중단시킴.
  • 혼합 운영 방안: ISO 11898-6 “Selective Wake-up Transceivers” — 같은 버스에서 고전 CAN과 CAN FD를 공존 가능하게 하는 방식 중 하나.

같이 보기