본문 바로가기
Embedded SW/Embedded SW Introduction

08. CAN Frame 분석 수행 (Stuff Bit 포함)

by 방구석 임베디드 2021. 7. 17.
반응형

CAN을 1개의 프레임을 보낼때, Data만 보내는 것이 아니라,

이 메시지가 어떠한 메시지인지를 확인할수 있도록 다양한 정보를 함께 넣어

하나의 Frame으로 전달합니다.

그렇다면 이 Frame이 어떻게 구성이 되어 있는지를 확인해 보도록 해요!

그전에 이제 Frame을 보낸다라는 표현을, 메시지(Message)를 보낸다라고 이야기 하도록 하겠습니다.


1) SOF 

- Start of Frame의 약어이며, 메시지의 시작을 알리는 Bit이다. 1에서 0으로 변하며 메시지의 시작을 알립니다.

 

2) Identifier
- 이 메시지(Frame)이 어떠한 메시지인지를 알수 있도록 하는 영역입니다.

- 위의 예제에서는 000 0001 0100 --> 0x014를 나타내고 있다는 것을 알수 있습니다.

- 총 11개의 비트로 표현구성이 되어 있습니다. 위에서는 stuff bit가 추가되어 있는데 이것은 나중에 이야기할게요!   

3) RTR

- Remote Transmission Request의 약어로 이 값이 1이면 remote frame, 0 이면 data frame을 나타냅니다.
- remote frame은 데이터 필드를 포함하지 않고, 다른 노트로부터 데이터를 요청할때 보내는 frame 입니다.


4) IDE (ID Extended Bit)

- Standard Bit일 경우 0, extended 경우에는 1을 표시합니다.

- 우선 여기에서는 standatd CAN Message만을 다루도록 할게요.


5) r

- Reserve Bit를 의미합니다.


6) DLC

- Data Length Code의 약어로  메시지안에 전달하는 Data 바이트 수를 표시합니다.


7) Data Field

- 최대 8바이트까지 보낼수 있으며, 이 8바이트안에 잘 쪼개서 우리가 보내고 싶은 데이터를 넣어 보냅니다.


8) CRC 

- Cyclic Redundancy Check의 약어로 error detection을 위한 부분입니다.

- CRC는 총 15비트를 사용한다.

 

9) DEL 

- Delimiter로서 영역을 나누기 위한 구분자 비트 입니다.

 

10) ACK

- Acknowledgement로서 데이터를 잘 받으면 다른 ECU에서 0으로 내려줍니다.
- 메시지를 수신한 모든 CAN 컨트롤러는 메시지의 마지막에 위치한 ACK비트를 0으로 내려줍니다.
- 전송 노드는 버스 상에 ACK비트 유무를 확인하고, ACK가 발견되지 않을 경우 전송을 재시도 합니다.

11)ITM 

- After Intermission로 3비트로 구성 되어 있습니다.

 

12) EOF 

- End of Frame의 약어로 EOF는프레임의 끝을 나타냅니다.

 

 

그렇다면 위에서 stuff bit라고 표현된 부분이 있는데 이 부분에 대해서 간단히 설명할게요.


CAN은 동기화 시키는 Clock이 존재하지 않는 비동기 방식입니다.

SOF뿐이 동기를 맞출수 없기때문에 계속 동기를 맞추어 주기 위하여 Stuff bit를 사용합니다.
Stuff bit는 같은 값이 5개이면 뒤에 inverse한값을 넣어줍니다.

반응형

댓글