CAN TP (CAN Transport Protocol)ISO 15765-2 기반의 CAN 전송 계층 프로토콜. CAN 프레임의 8 Byte 데이터 필드 제약을 넘는 긴 메시지(예: UDS 진단 데이터)를 여러 프레임으로 분할·조립하고 흐름을 조절한다. AUTOSAR에서는 CanTp라는 이름의 BSW 모듈로 구현되며, PduRCanIf 사이에 위치한다.

필요성

  • CAN Data Frame의 페이로드는 최대 8 Byte (Classical CAN 기준; CAN FD는 64 Byte).
  • UDS 진단 메시지는 수십~수천 Byte 규모로 확장 가능.
  • 송신자가 데이터를 여러 프레임에 나눠 전송하고, 수신자가 흐름을 제어하며 순서대로 재조립해야 함.

Frame Type (N_PCItype)

CAN 프레임 첫 바이트의 상위 nibble이 N_PCItype 으로 전송 단위를 구분한다.

N_PCItype값 (nibble)이름용도
SF0000Single Frame7 Byte 이하 단일 전송
FF0001First Frame분할 전송 첫 프레임
CF0010Consecutive Frame분할 전송 이어지는 프레임
FC0011Flow Control수신측 흐름 제어 (송신 안 함)

프레임 포맷 (Normal Addressing)

Frame TypeByte 1 상위 nibbleByte 1 하위 nibbleByte 2Byte 3~8
Single0000SF_DL (0~7)DATA 1DATA 2 ~ DATA 7
First0001FF_DL (상위)FF_DL (하위)DATA 1 ~ DATA 6
Consecutive0010SN (Sequence #)DATA 1DATA 2 ~ DATA 7
Flow Ctrl0011FSBSSTmin + Reserved
  • SF_DL(Single Frame Data Length): 1~7 Byte.
  • FF_DL: First Frame의 전체 메시지 길이 (12 bit).
  • SN(Sequence Number): Consecutive Frame 순서 번호 (0~15 순환).

CAN FD 확장 포맷

CAN FD(최대 64 Byte 페이로드) 지원을 위해 SF·FF가 확장 형식으로도 정의된다.

Frame TypeByte 0 (7..4)Byte 0 (3..0)Byte 1Byte 2~ (길이 필드 연장)
SF (DLC ≤ 8)0000Size (0..7)DATA A..
SF (DLC > 8)00000000Size (8..62)DATA A..
FF (DL ≤ 4095)0001Size highSize lowDATA A..
FF (DL > 4095)000100000000 0000Size (4096..2³²−1, 4 B)
CF0010Index (0..15)DATA A..
FC0011Flag (0/1/2)Block sizeSTmin, …
  • ⁺ 표시는 CAN FD 전용.
  • 확장 SF(0000 0000 Size...): 1 Byte에 길이를 담지 못할 때 길이 필드를 한 Byte 뒤로 미뤄 최대 62 Byte 페이로드.
  • 확장 FF(0001 0000 0000 0000 Size...): 12 bit(4095 Byte)를 넘는 메시지를 위해 32-bit 길이 필드(최대 Byte) 사용.

데이터 스트림

긴 메시지를 전송할 때의 시퀀스:

  1. 송신자 → First Frame(FF) 전송 — 전체 길이 공지.
  2. 수신자 → Flow Control(FC) 응답 — 흐름 제어 파라미터 전달.
  3. 송신자 → Consecutive Frame(CF) 반복 전송 — BS만큼 보내고 필요 시 추가 FC 대기.

7 Byte 이하면 FF/CF/FC 없이 Single Frame 한 개로 완결.

Flow Control (FC)

FC의 목적은 Consecutive Frame이 수신측에 전달되는 속도를 조절하는 것이다. 수신자가 송신자의 속도를 제한하여 버퍼 오버런·처리 지연을 방지.

Flow Status (FS)

FC 프레임 Byte 1 하위 nibble에 위치. 송신자에게 다음 동작을 지시한다.

값 (HEX)상태의미
0CTS (Continue To Send)송신자가 Consecutive Frame 송신을 재개. 수신자가 최대 BS만큼 받을 준비 완료.
1WT (Wait)송신자는 새로운 FC를 계속 대기. 수신측 아직 준비 안 됨.
2OVFLW (Overflow)송신자는 분할된 메시지 전송을 중단. 수신 버퍼 부족.

Block Size (BS)

FC 프레임 Byte 2. 한 블록 당 Consecutive Frame의 절대 개수.

값 (HEX)의미
00분할 전송 중 추가 FC 프레임 없이 끝까지 전송. 수신측은 남은 CF를 한 번에 수신.
01~FF중간 FC 없이 전송할 수 있는 최대 CF 개수 (1~255).

STmin (Minimum Separation Time)

FC 프레임 Byte 3. Consecutive Frame 전송 간 최소 시간 간격.

값 (HEX)시간단위
00~7F0 ms ~ 127 ms값 1당 1 ms
F1~F9100 µs ~ 900 µs값 1당 100 µs
FA~FFReserved-

AUTOSAR CanTp 모듈

AUTOSAR Classic Platform은 CAN TP를 CanTp라는 BSW 모듈로 표준화한다.

위치

  • 상위: PduR (I-PDU routing 층)
  • 하위: CanIf (CAN HW 추상화)
  • OSI L3(Network Layer) 매핑 — CAN 자체는 L2까지이므로 CanTp가 L3을 보완

기능

  • Segmentation — 페이로드가 CAN 8 Byte(또는 CAN FD 64 Byte)를 넘으면 다수 프레임으로 분할
  • Reassembly — 수신 측에서 분할된 프레임을 원본 메시지로 재조립
  • Data Flow 제어 — SF / FF / CF / FC PDU 조합으로 흐름 조절
  • Segmentation session 에러 검출 — 시퀀스 위반·타임아웃 등 감지
  • Transmission cancellation — 진행 중 송신 취소
  • Receive cancellation — 진행 중 수신 취소

진단 경로에서의 역할

AUTOSAR Communication Stack 내에서 CanTp는 진단 메시지의 표준 분할 재조립 경로다. DCM → PduR → CanTp → CanIf → Can → CAN bus 순으로 UDS 데이터가 흐른다.

UDS와의 결합

CAN 기반 UDS 진단 통신에서 CAN TP는 필수 전송 계층이다.

  • UDS Request 22 F1 90 (ReadDataByIdentifier, DID 0xF190) → CAN TP로 Single Frame 03 22 F1 90 ... 캡슐화. 03 = SF·길이 3.
  • 응답이 7 Byte를 초과하면 FF → FC → CF… 시퀀스로 재조립.

DoIP와의 관계: DoIP는 Ethernet 기반이므로 TCP 세그멘테이션을 이용하며 CAN TP가 필요 없다. Gateway가 DoIP ↔ CAN 경로에서 UDS 메시지를 CAN TP로 재캡슐화하여 CAN ECU에 전달한다.

같이 보기