CAN 프레임(CAN Framing)CAN 버스 위에서 전송되는 메시지 단위의 비트 스트림 구조. 메시지 유형(Data / Remote), 식별자 길이(Standard / Extended)에 따라 4가지 조합이 사용되며, 표준 포맷과 확장 포맷은 동일 버스에서 공존 가능하다.

프레임 유형과 포맷

CAN에는 2 × 2 = 4가지 프레임 조합이 존재한다.

Standard Format (11-bit ID)Extended Format (29-bit ID)
Data FrameData Field 0~8 ByteData Field 0~8 Byte
Remote FrameData Field 없음Data Field 없음

구분 기준 2가지:

  • Identifier 길이: 11-bit → Standard / 29-bit → Extended
  • Data Field 존재 여부: 있음 → Data Frame / 없음 → Remote Frame

Data Frame (Standard Format) 구조

필드크기역할
Bus idlerecessive 상태
SOF1 bitStart of Frame, dominant
Identifier11 bit메시지 우선순위·내용 식별
RTR1 bitRemote Transmission Request
IDE1 bitIdentifier Extension (Std/Ext 구분)
r1 bitReserve Bit
DLC4 bitData Length Code
Data Field0~8 Byte페이로드
CRC15 bit체크섬
CRC DEL1 bitDelimiter, recessive
ACK1 bitAcknowledgement slot
ACK DEL1 bitDelimiter, recessive
EOF7 bitEnd of Frame, 모두 recessive
ITM3 bitIntermission (Inter Frame Space, IFS)
Bus idle다음 프레임 가능

필드 묶음:

  • Arbitration Field: Identifier + RTR (중재 참여)
  • Control Field: IDE + r + DLC
  • Check Field: CRC + DEL
  • ACK Field: ACK + DEL

약어 정리

약어원어
SOFStart of Frame
RTRRemote Transmission Request
IDEIdentifier Extension
rReserve Bit
DLCData Length Code
CRCCyclic Redundancy Check
DELDelimiter
ACKAcknowledgement
EOFEnd of Frame
ITMIntermission
IFSInter Frame Space

필드별 상세

Start of Frame (SOF)

  • Bus idle(recessive=1) → dominant(0)로의 물리 상태 변화.
  • 메시지 시작 표시 + 수신자 동기화 수단 제공.
  • 프레임 시작 조건: 직전에 연속 11개 recessive 비트 관찰 (bus idle 판정).
  • 모든 ECU가 Baud rate 설정으로 비트 duration을 알고 있음 (예: 500 kBaud → 1 비트 = 2µs).
  • 1→0 에지 수신 시 모든 노드가 cyclic bit duration timer 시작 → 후속 비트 값도 인식 가능.

Identifier

  • Standard: 11 bit (b10…b0), 0x000 ~ 0x7FF (0~2047 decimal).
  • Extended: 29 bit, 최대 536,870,912(약 5.36억) 개 ID.
  • 역할:
    • 송신 시: 중재용 메시지 우선순위 (CAN 중재 참조).
    • 수신 시: Data Field 내용 식별. 수락 필터 통과 조건. 애플리케이션은 ID로 데이터 구조·의미 판단.

msb: most significant bit / lsb: least significant bit

RTR (Remote Transmission Request)

  • Dominant (0): Data Frame
  • Recessive (1): Remote Frame

특정 Identifier로 식별되는 데이터가 필요할 때, 요청 노드가 동일 ID + RTR=1로 Remote Frame을 발행 → 해당 ID의 Data Frame 송신자가 응답. Data Frame과 Remote Frame이 동일 ID로 동시에 전송되면 중재 시 Data Frame이 우선 (RTR=0=dominant).

  • Remote Frame은 Data Field가 없지만 DLC는 요청하는 데이터 길이로 설정.
  • 주기적 데이터 송신을 공유하지 않는 영역에서 사용 (장거리 버스·건물 서비스·자동화 공정 등). 자동차에서는 드묾.

IDE (Identifier Extension)

  • Dominant (0): Standard Format
  • Recessive (1): Extended Format

Standard · Extended 프레임이 동일 ID의 첫 11비트를 공유할 때, IDE 비트에서 Standard가 승리 (IDE=0=dominant).

DLC (Data Length Code) + Data Field

  • 4-bit 필드. 0~15 표현 가능.
  • 0~8: Data Field 길이 (바이트).
  • 9~15: 항상 8바이트로 해석.
  • Data Field 길이 가변 → 대역폭 절감, 단 프레임 내에 길이 명시 필요.

CRC (Cyclic Redundancy Check)

  • 15-bit 필드. 생성 다항식 0xC599 = 1100 0101 1001 1001.
  • 송신자: 비트 시퀀스에 대해 다항식 나눗셈 → 계산 → 프레임에 삽입.
  • 수신자: 동일 다항식으로 계산 → 와 비교.
  • 동일 프레임 내 최대 5개 비트 에러 감지 가능.
  • 자세한 오류 처리는 CAN 에러 처리 참조.

ACK (Acknowledgement)

  • 송신자는 recessive(1)을 보내고 수신자들의 응답 대기.
  • CRC 통과한 수신자는 dominant(0)로 덮어쓰기 → Positive ACK.
  • CRC 실패 시 recessive(1) 유지 → Negative ACK.
  • Wired-AND에 의해 최소 1개 수신자가 성공하면 버스에 dominant ACK 관찰됨.
  • ACK가 recessive로 남음 → 수신 에러 또는 수신자 부재. 송신자는 ACK 다음 비트부터 Error Flag 송출.

EOF (End of Frame) + ITM (Intermission)

  • EOF: 7개 연속 recessive 비트.
  • ITM: 3개 recessive 비트 (= Inter Frame Space, IFS).
  • EOF + ITM + 이후 → 11개 연속 recessive 관찰 시 bus idle 판정 → 어떤 노드든 SOF로 새 전송 가능.

Standard와 Extended의 중재

Standard Frame과 Extended Frame은 동일 버스에서 공존한다. 동시에 중재에 진입하면 비트 단위 중재로 승자 결정:

  • 앞 11비트(Base Identifier)가 동일한 경우 → IDE 비트에서 Standard(IDE=0=dominant) 승리.
  • 앞 11비트가 다르면 그 시점에 승부 결정.

자세한 로직은 CAN 중재 참조.

SAE J1939 (Extended Format 응용)

Extended Format(29-bit ID)의 대표적 응용 프로토콜.

  • SAE: Society of Automotive Engineers
  • 적용 분야: 상용차(utility vehicles), 선박, 철도, 농기계, 대형 발전기.
  • 파생 국제 표준:
    • NMEA 2000 — 해양 선박 (NMEA: National Maritime Electronics Association)
    • ISO 11783 — 농업용 차량·기계(ISO-Bus)

J1939 11-bit ID 해석

필드크기
Priority3 bit
Source Address8 bit

J1939 29-bit ID 해석

필드크기
Priority3 bit
EDP1 bit
DP1 bit
PDU Format8 bit
PDU Specific8 bit
Source Address8 bit

SRR (Substitute Remote Request)는 Extended Format에서 RTR 위치에 대체 사용되는 비트.

CAN FD 프레임 (Flexible Data-rate)

CAN FD는 동일한 중재 포맷(Standard/Extended)을 유지하면서 페이로드와 CRC 구간을 확장한다. 주요 차이:

  • Remote Frame 없음 — 6가지 유형 = Std/Ext × Remote/Data/FD Data 조합에서 FD Remote 제외.
  • Data Field 최대 64 Byte (DLC 9~15이 CAN에서는 모두 8 Byte지만 FD에서는 12/16/20/24/32/48/64).
  • 비트 치환:
    • RTR 위치 → RRS (Remote Request Substitution, dominant 고정).
    • 기존 reserve(r) 위치 → FDF (FD Format, recessive → FD 프레임 식별).
  • 신규 비트:
    • BRS(Bit Rate Switch) — recessive 시 페이로드 구간만 고속 전환.
    • ESI(Error State Indicator) — 송신자의 Error Active/Passive 상태 표시.
  • Extended FD 포맷에서는 SRR(Substitute Remote Request)가 RTR 대체.
  • CRC는 CRC17(0x3685B) 또는 CRC21 (0x302899) — 고전 CAN의 CRC15(0xC599)와 다름.

자세한 내용은 CAN FD 참조.

Bit Stuffing (비트 스터핑)

CAN 프레임의 특정 구간(SOF부터 CRC 끝까지)에는 동기화와 데이터 무결성을 위해 비트 스터핑 규칙이 적용된다.

  • 규칙: 동일 값 비트 5개 연속 시 다음 비트에 반전 비트 삽입.
  • 수신자: 5개 동일 후 다음 비트는 스터프 비트로 간주하여 폐기.
  • 6개 동일 = 에러.

자세한 내용은 비트 스터핑 참조.

같이 보기