CAN 통신 이해하기
CAN 통신 프로토콜
CAN 메시지에 있는 식별자(ID)의 길이에 따라
표준 CAN : 11비트 식별자 (2.0A)
확장 CAN : 29비트 식별자 (2.0B)
CAN 메시지 구조
CAN에서는 데이터 프레임(data frame), 리모트 프레임(remote frame), 에러 프레임(error frame), 오버로드 프레임(overload frame)의 4가지 프레임 타입을 정의하고 있습니다. 데이터 프레임은 일반적으로 데이터 전송에 사용되며, 리모트 프레임은 수신할 노드에서 원하는 메시지를 전송할 수 있는 송신 노드에게 전송을 요청할 때 사용됩니다. 에러 프레임은 메시지의 에러가 감지되었을 때 시스템에 알릴 목적으로 사용됩니다. 마지막으로 오버로드 프레임은 메시지의 동기화를 목적으로 사용됩니다.
CAN 통신에서 데이터 송수신은 메시지 프레임을 사용하여 이루어집니다.
메시지 프레임의 구조는 다음과 같습니다.
r비트 : recessive bit (1)
d비트 : dominant bit (0)
필드 | 설명 |
---|---|
SOF (Start Of Frame) | 한 개의 dominant 비트로 구성되어 있으며, 메시지의 처음을 지시하고 모든 노드의 동기화를 위해 사용된다. |
Arbitration Field (중재 필드) |
11비트 또는 29비트의 크기를 갖는 ID와 1비트의 RTR(Remote Transmission Request) 비트로 구성된다. 이 영역은 둘 이상의 노드에서 메시지의 전송이 동시에 일어날 경우 발생하는 메시지 간의 충돌을 조정하는 데 사용된다. RTR비트의 값은 데이터 프레임인지(‘d’) 리모트 프레임인지(’r’)를 결정하는 데 사용된다. |
Control Field (제어 필드) |
2비트의 IDE(IDentifier Extension) 비트, 4비트의 데이터 길이 코드(DLC, Data Length Code)로 구성된다. R0는 Reserved 비트(Extended CAN 2.0B R0, R1)이다. |
Data Field (데이터 필드) |
8bytes까지 사용 가능하며, 데이터를 저장하는 데 사용된다(특정한 노드에서 다른 노드로 전송하는 데이터를 포함). |
CRC 필드 |
SOF에서부터 데이터 필드까지의 비트열을 이용해 생성한 15비트의 CRC 시퀀스와 하나의 ‘r’비트의 CRC 델리미터로 구성되어 있다. 이것은 메시지 상의 에러 유무를 검사하는데 사용된다. |
ACK필드 (ACKnowledge) |
한 비트의 ACK 슬롯과 하나의 ACK 델리미터(‘d’)로 구성되어 있다. 임의의 노드에서 올바른 메시지를 수신하게 되면 ACK 필드를 받는 순간 ACK 슬롯의 값을 ’d’로 설정해 버스 상에서 계속 전송하게 된다. |
EOF (End Of Frame, 프레임종료) | 7개의 ‘r’비트로 구성되어 메시지의 끝을 알리는 목적으로 사용된다. |
CAN H, CAN L
전기적으로 신호를 전송하는 역할을 하는 물리계층에서, CAN은 광섬유나 꼬인 2선(Twist Pair Wire)과 같은 다양한 종류의 매체를 사용하여 통신할 수 있습니다. 꼬인 2선 시그널링은 각 전선에 서로 다른 전압을 사용하여 버스 상에서의 노이즈를 줄입니다.
이때의 꼬인 2선을 각각 CAN_H(or CAN High)와 CAN_L(or CAN Low)라고 부릅니다.
'Computer > ETC' 카테고리의 다른 글
react-native --version, 등허리.. 스크립트 실행 오류 (0) | 2021.11.04 |
---|---|
원격 데스크톱 연결 포트 변경하기 (0) | 2021.09.02 |
원격 데스크톱, Microsoft 계정으로 로그인 안될때 (11) | 2021.05.21 |
(한글) 한/영 자동변환 끄기 (1) | 2020.03.12 |
CAN (Controller Area Network) 정리! (0) | 2019.03.07 |
장치관리자에서 디바이스 이름 변경하기 (7) | 2018.08.08 |
정보처리 - 데이터베이스 (0) | 2016.02.22 |
리틀엔디안(little endian)&빅엔디안(big endian) (0) | 2015.08.26 |