CAN 통신의 메시지는 Transmit Message ID 와 Receive Message ID 두 가지로 구분할 수 있습니다.
Transmit Message ID란?
CAN 메시지 ID는 메시지를 보내거나 받는 것을 구분하기 위해서 사용할 뿐만 아니라 메시지의 우선순위를 나타내기도 합니다.. 여러 개의 노드에서 동시에 메시지를 전송할 경우 메시지가 깨지지 않고 ID가 높은 것이 전송될 수 있도록 합니다. 예를 들어 ID가 15인 메시지보다 ID가 10인 메시지가 더 높은 우선순위를 가집니다. 따라서 다른 메시지보다 더 높은 우선순위로 메시지를 보내기 위해서는 낮은 ID로 메시지를 구성해야만 합니다. 또한 메시지 ID는 하나의 CAN 버스에서 단 하나만 존재합니다. 다시 말하면 하나의 CAN 버스에 연결된 노드는 다른 노드와 같은 ID를 가지고 메시지를 전송할 수 없습니다. Transmit Message는 데이터의 종류와 그 데이터의 우선순위에 따라 구성됩니다.
Receive Message ID란?
CAN Message를 수신하는데 사용합니다. CAN 버스에 수 메시지를 모두 MCU에서 소프트웨어적으로 확인할 수 없기 때문에 CAN을 담당하는 Peripheral에 특정 ID만 메시지를 수신할 수 있도록 구성할 수 있습니다. ID는 총 두 가지로 구성할 수 있습니다. 첫 번째는 Standard Identifier이고 두 번째는 Extended identifier입니다. Standard Identifier(는 11비트로 ID가 구성되며, Extended Identifier는 29비트로 ID가 구성됩니다. Standard Identifier는 CAN 2.0A(최대 통신 속도 256kbit/sec), Extended Identifier(1Mbit/sec)는 CAN 2.0B에서 규정하고 있습니다.
메시지를 받기 위한 필터를 구성하는 방법으로 아래와 같은 방법으로 나누어 집니다.
- ID의 범위를 지정하는 방법(예: 200부터 210번까지의 메시지 ID를 받음)
- 한 개 또는 두 개 ID만 받는 방법(특정 ID만 받는 방법)
- 기존의 Classic bit mask filter를 사용하는 방법
'Embedded' 카테고리의 다른 글
코드 주석 처리하기(단축키) (0) | 2019.01.08 |
---|---|
CAN 통신 - CAN Tranceiver의 통신 레벨 (0) | 2019.01.06 |
CAN 통신(캔 통신) 소개하기 (0) | 2019.01.06 |
How can i select the optimization level of compiler on MPLAB X? (0) | 2019.01.02 |
How much optimize depend on optimization level of compiler? (0) | 2019.01.02 |