한량처럼 살고 싶다

CAN Frame 타입 본문

CAN통신

CAN Frame 타입

투영 2025. 2. 25. 10:42

Single Frame

데이터 길이가 7바이트 이하일 경우 single frame 을 사용하여 데이터 전송이 가능하다.

데이터의 형태가 0x06OOOOOOO 라면, 해당 프레임은 싱글 프레임이면서 데이터의 길이는 2인 것이다.

Bit offset 7 .. 4 (byte 0) 3 .. 0 (byte 0) 15 .. 8 (byte 1) 23 .. 16 (byte 2)
single 0 size (0 .. 7) Data A Data B

 

 

Multi Frame

데이터 길이가 7바이트를 초과할 경우 multi frame 을 이용하여 데이터 전송이 가능하다. 

 

멀티 프레임에는 2가지 종류가 있는데,

멀티 프레임을 전송한다는 의미를 담은 가장 첫 번째 프레임인 First Frame과 

그 이후에 오는 프레임이라는 내용을 담은 Consecutive Frame 두 가지가 있다.

 

일반적인 CAN 프레임은 데이터의 길이를 12bit로 표현해야 하므로 전송 가능한 최대 byte 수가 4095이다.

이를 넘어설 경우 CAN FD 프로토콜 혹은 사용자 정의 프로토콜을 사용해야 한다. 

Bit offset 7 .. 4 (byte 0) 3 .. 0 (byte 0) 15 .. 8 (byte 1) 23 .. 16 (byte 2)
First Frame 1 size (12bit) Data A
Consecutive Frame 2 index (0..15) Data A Data B

 

예를 들어 First Frame 이 이런 형태로 들어온다면: 0x1009OOOOOO 

최초 상위 4비트가 1 이며 이어오는 12bit 가 009 이기 때문에 이 프레임은 First frame 이자 총 데이터의 길이가 9 라는 뜻이 된다.

그러므로 이번 프레임이 오고 나서 2로 시작되는 다른 프레임이 온다는 것까지 알 수 있다. 

 

Consecutive Frame 은 20, 21, 22, 23 ... 2F 이런 식으로 늘어난다.

인덱스가 0부터 15까지이며 만약 16개의 연속된 Consecutive Frame 을 전송했는데 데이터가 남아있을 경우 다시 20부터 순환하게 된다.

 

주의할 점은 첫 번째 Consecutive Frame (CF)는 0x21부터 시작하고, 2F까지 증가한 후, 다음 프레임에서는 다시 0x20으로 순환하는 구조라는 점이다.

21 22 .. 2F 까지 다 돈 뒤에 그 다음에 오는 Consecutive가 20 부터 시작된다는 의미이다. 

 

Flow Control Frame

can 통신에서는 여러 프레임을 연속적으로 보낼 때 상대방으로부터 Flow Control Frame 을 받은 뒤에 보낸다. 

Bit offset 7 .. 4 (byte 0) 3 .. 0 (byte 0) 15 .. 8 (byte 1) 23 .. 16 (byte 2)
description type if the transfer is allowed Block Size Separation time
Single type = 3 0: Continue to send
1: Wait
2: Overflow/abort
0: flow control frame 혹은 delay 없이 consecutive 전송 Separation time
Single type = 3 > 0: 다음 Flow Control Frame을 기다리기 전 보낼 Consecutive Frame 수 0xF1 ~ 0xF9
100~900 의 마이크로초

 

상위 4비트는 3으로 고정되어있다.

하위 4비트는 0일 경우 Consecutive 전송, 1일 경우 다음 Flow Control Frame 을 기다린다는 의미, 2일 경우 중단한다.

 

Block Size 가 0일 경우 Flow Control Frame / Delay 없이 Consecutive Message를 전송한다는 의미이다.

만약 0보다 큰 값이 올 경우 다음 Flow Control Frame 을 기다리기 전 보낼 Consecutive Frame 수를 말한다.

 

'CAN통신' 카테고리의 다른 글

05. CAN Tranceiver & CAN Controller  (0) 2024.05.06
04. CAN High & CAN Low signal  (0) 2024.05.06
03. 120옴 저항  (0) 2024.05.06
02. CAN 통신의 커넥터  (0) 2024.05.06
01. CAN통신 토폴로지 & 전송방식  (0) 2024.05.06