해당 블로그로 공부 --> https://blog.naver.com/suresofttech/222850407600
일반적인 can 통신에서는 최대 8 바이트 정도의 메세지를 전송할 수 있다.
하지만 만약 보내야 하는 데이터의 크기 8바이트를 초과하게 된다면?
이러한 문제점을 보완하기 위해 만들어진 프로토콜이 TP 프로토콜 또는 ISO 15765-2라 칭한다.
이론은 생각보다 간단하다. 최대로 보낼 수 있는 양인 8 바이트를 초과하게 된다면 이 메시지들을 최대 바이트를 초과하지 않게 나누어서 보내는 방식이다.
CAN TP Protocol 구성
Single Frame
# 데이터가 7byte 이하일 경우
데이터가 7byte 이하일 경우 Single Frame이 사용됩니다. Single Frame의 첫 번째 byte는 PCI로 상위 4bit와 하위 4bit로 나누어집니다. 상위 4bit가 0인 경우, 이 프레임은 Single Frame 입니다.
하위 4bit는 데이터 길이를 나타냅니다.
상위 1바이트에서 상위 4바이트와 하위 4바이트로 나누어지고 상위 4바이트가 0 이므로 해당 프레임은 Single Frame이며
하위 4바이트가 4이므로 해당 프레임은 7바이트의 메시지가 수신되었다는 의미가 됩니다.
First Frame
데이터가 7byte를 초과한 경우, CAN TP protocol은 다중 프레임 메시지 패킷으로 통신 합니다. 다중 프레임은 First Frame, Consecutive Frame, Flow Control Frame으로 구성됩니다.
Fitst Frame은 다중 프레임의 시작을 나타냅니다. Single Frame과 다르게 2byte의 PIC를 사용합니다.
First Frame의 첫 번째 byte의 상위 4bit는 1 입니다. 첫 번째 byte의 하위 4bit와 두 번째 byte를 합쳐 총 12비트로 데이터의 길이를 표현할 수 있습니다.
Consercutive Frame
Fitst Frame 다음에 오는 프레임을 Consercutive Frame 이라고 합니다.
이 프레임의 PCI는 1bte로 할당되며 상위 4비트는 2 입니다. 하위 4bit는 시퀀스 번호를 나타냅니다.
시퀀스 번호는 1부터 시작하여 각 consrcutive Frame에서 1씩 증가합니다. 시쿼느 번호 15에 도달하게 된다면 다시 1부터 시작합니다.
Flow Control Frame
Flow Control Frame은 전송 흐름을 제어하기 위해 수신 노드로 정송됩니다. 이 프레임의 PCI는 3byte로 할당되며 첫 번째 byte의 상위 4bt는 3 입니다.
하위 4bit는 흐름 상태를 사타내며 cts(통신 준비 완료), 대기 오버프로우 상태를 신호할 수 있습니다. 두 번째 byte는 블록 크기를 나타내며, 한 불록에서 몇 개의 프레임이 연속적으로 보내야 하는지 표시합니다. 마지막 byte는 최소 분리 시간을 나타냅니다.
CAN RP Protocol 오류 처리
CAN TP Ptotocol에서는 송신기와 수신기 모두 타이머를 사용하여 데이터 전송을 모니터링 합니다.
만약 다중 프레임의 연속 프레임 사이의 시간에 flow control frame의 st_min(최소 분리 시간)보다 오래 걸리면 전송이 중단되고, 이미 전송된 데이터는 폐기됩니다. 프레임의 최대 대기 시간은 1초입니다.
또한 CAN TP Protocol은 타이밍 오류 외에도 에시지 구조의 오류를 인식합니다. 잘못도니 프레임을 감지시 프레임을 무시하거나 전송을 취소합니다.
대표적인 예로는 잘못된 시퀀스 번호, 잘못된 메시지 길이, Flow Control Frame의 잘못된 흐름 상태 등이 있습니다.
댓글