메시지 포맷
• SOF ( Start Of Frame)
- 후술할 우성 비트(‘d’) 한개로 구성되어 있으며, 메시지의 처음을 지시하고 모든 노드의 동기화를 위해 사용된다.
• Arbitration Field
- 11비트 또는 29비트의 크기를 갖는 ID와 1비트의 RTR비트로 구성된다. 둘 이상의 노드에서 메시지의 전송이 동시에
일어나는 경우 발생하는 메시지 간의 충돌을 조정하는데 사용된다. RTR비트는 데이터 프레임이나 리포트 프레임을 구분
하는데 사용한다.
• Control Field
- 2비트의 IDE(Identificer Extension)비트, 4비트의 데이터 길이 코드로 구성된다.
• Data Field
- 8bytes까지 사용 가능하며, 데이터를 저장하는데 사용된다.
• CRC Field
- SOF부터 데이터 필드까지의 비트열을 이용해 생성한 15비트의 CRC시퀀스와 CRC 델리미터로 구성되어 있다. 메시지
상의 에러 유무를 검사하는데 사용된다.
• ACK Field
- 한 비트의 ACK슬롯과 하나의 ACK 델리미터로 구성되어 있다. 임의의 노드에서 올바른 메시지를 수신하게 되면 ACK필
드를 받는 순간 ACK슬롯의 값을 ‘d’비트로 설정한다.
• EOF
- 7개의 후술할 ‘r’비트로 구성되어 메시지의 끝을 알리는데 사용된다.
네트워크 동작
CAN 통신은 직렬 버스 방식으로 2개의 꼬임 쌍선으로 이루어져 있다.
CAN_H와 CAN_L로 버스를 구성하며 CAN_H는 3.5V가 0, 2.5V가 1이고 CAN_L는 1.5V가 0, 2.5V가 1이 된다.
그러므로 CAN_H와 CAN_L의 전위차가 2일 시 0으로 인식하고, 0일 시 1로 인식한다.
일반적인 상황에서는 위와 같은 전위차를 내지만 ECU가 많아 질수록 오차범위가 넓어지므로 통상 전위차가 0.9 이상일 때
0으로 인식하고 0.5 이하일 때 1로 인식한다.
또한 버스 라인의 종단 저항은 각 노드들의 신호를 한번만 수신하기 위해 필요하며 없을 시 신호가 회로에 계속 남아 있게
된다.
Tranceiver
CAN Transceiver는 버스에 있는 데이터를 Controller에게 보내주는 역할을 하며 각 선로에 맞는 전압으로 조정해준다.
MCU의 전압은 0과 3.3V 또는 5V이고, 버스의 전압은 3.5V, 2.5V, 1.5V를 기준으로 한다.
Dominant, Recessive
CAN 네트워크는 0을 우성(Dominant, d), 1을 열성(Recessive, r)으로 논리적으로 정해져 있다.
이 특성은 버스 라인에 0과 1이 동시에 흐를때 0이 1을 덮어 쓰도록 되어 있다.
Bus라인은 종단 저항에 의해서 전류가 일정하게 흐르고 각 노드가 열성 비트를 보내거나 어떤 노드도 신호를 보내지 않을때는 전류가 흐르지 않는다. 즉, 우성(d) 비트가 전송될 때만 버스에 전류가 흐르게 된다.
VCC(5V)와 GND를 포함한 Tranciever의 간략한 구성은 다음과 같다.
CAN_L는 항상 CAN_H 반대 논리를 갖고 있으므로 TX의 신호는
CAN_H 선로에 영향을 주고 TX의 반전된 신호는 CAN_L 선로에
영향을 준다.
TX가 LOW일때 CAN_H는 P채널 모스펫에 의해 전압원을 연결시
켜주고 CAN_L는 N채널 모스펫에 의해 GND와 연결되어 버스에 전
류가 흐르게 된다. 흐르는 전류는 종단 저항에 의해 3.75V와 1.25V
로 측정된다.
TX가 HIGH일때는 전압원과 GND가 연결되지 않아 전류가 흐르지
않는다.
따라서 노드들이 모두 HIGH를 보내지 않는 이상 버스는 Dominant
가 지배하게 된다.
RX로 받는 신호는 CAN_H와 CAN_L의 차동 전압을 계산한 값에
따라 논리 값을 정한다.
Arbitration
ECU1과 ECU2가 같은 시점에 메시지를 보낸다고 할때 우선권은 Identifier Field의 값이 낮은 순서로 주어진다.
위의 회로도처럼 TX로 메시지를 보냄과 동시에 RX로 수신을 하기 때문에 Arbitration 동안에 각 노드들은 버스를 모니터링한다.
또한 Arbitration에서 진 노드는 Controller에서 전압을 보내지 않는다.
TX를 통해 두 노드가 동시에 신호를 보낼 때 버스까지 간다면 두 노드의 신호 중 Dominant가 버스를 지배하므로 노드들은 본인의 TX와 RX를 비교하여 본인이 졌는지 확인할 수 있다.
'임베디드' 카테고리의 다른 글
ALSA (0) | 2023.12.21 |
---|---|
Automotive SPICE (업데이트 中) (0) | 2023.06.20 |
Analog /Digital Signal , Ground (0) | 2023.04.06 |
AUTOSAR 개념 (지속 업데이트) (2) | 2023.01.30 |
시리얼 통신 (0) | 2022.12.15 |