관리 메뉴

Leo's Garage

CAN Physical Layer 본문

자동차 및 자동차 SW/자동차 SW 개발 일반

CAN Physical Layer

LeoBehindK 2023. 6. 25. 17:18
728x90
반응형

CAN 버스는 Bit-Stuffing과 함께 NRZ(Non-Return To Zero)를 사용한다. 

Bit Stuffing이란 수신기에 Signal 정보를 제공하기 위한 방법 중 하나인데, Data 내에 하나 이상의 Bit를 삽입하는 것을 의미하며 일반적으로 수싯기는 이렇게 채워진 Bit를 감지하고 제거 또는 무시하는 방법을 알고 있다. 

bit stuffing 동작

이는 동기화를 유지하기 위함으로 동일한 극성의 5 bit가 연속되면 반대 극성의 Bit가 삽입되는 것이다. 

NRZ Bit Coding은 전송된 Binary Signal을 직접 다룬다는 의미이고, Logic 1은 High, Logic 0는 Low에 해당한다. 그런데 이 방식의 특징 중 하나는 같은 극성을 가진 연속적인 비트의 경우 레벨의 변화가 없다는 점이다. 

따라서 NRZ 방식의 경우, 높은 데이터 속도를 가능하게 한다는 점이 있지만, 반대로 Clock이 없기 때문에 같은 극성의 Bit가 연속해서 온다면, 동기화에 문제가 생기게 될 것이다. 따라서 Bit Stuffing을 통해서 이러한 동기화 문제를 해결하는 것이다.

Bit Stuffing의 구현 및 처리 예시

버스 신호는 실제로 위와 같이 Bit stuffing되서 오지만 HW에서 알아서 이를 해석해서 원래 신호로 복구시킨다. 

 

다양한 Physical Layer

일반적인 유형은 CAN 표준 ISO 11898-2로 정의된 유형으로 two-wire balanced signaling scheme이다. 

이것은 "high-speed CAN"으로도 불린다.

동일한 표준 내에 ISO 11898-3은 더 낮은 버스 속도를 위한 또 다른 two-wire balanced signaling scheme으로 정의한다.

이 방식은 fault tolerant가 있어서 하나의 버스 와이어가 끊어지거나 혹은 접지 또는 Vbat에 short되어도 신호가 계속 될 수 있으며 "low-speed CAN"이라고 불린다.

 

많은 CAN Transceiver IC는  NXP에서 제조하는데 대체 업체로는 Bosch, Infineon, TI 등이 있다. 

일반적으로 low speed CAN을 위한 Transceiver는 NXP사의 TJA1054가 있다. 

 

Maximum Bus Speed

표준에 따르면 CAN bus의 최대 속도는 1Mbit/s이다. 하지만 일부 CAN Controller는 이 보다 빠른 속도로 처리할 수도 있다. 

low-speed CAN의 경우에는 최대 125kbit/s까지 가능하다. 

 

Minimum Bus Speed

보통 Transceiver들은 특정 bit 전송률 이하로 내려가는 것을 허용하지 않는다. TJA1050 사용 시 50kbit/s이하로 내려갈 수 없다. 이는 데이터 시트를 확인해야 한다. 

 

Maximum Cable Length

1Mbit/s의 속도를 사용한다면, 최대 약 40 미터까지 케이블을 사용할 수 있다. 이유는 Arbitration 동작 중에 신호의 파장이 가장 먼 노드까지 갔다가 Bit가 Sampling되기 전에 다시 돌아와야 하기 때문이다. 

대략적으로는 다음과 같다. 

500kbit/s에서 100미터(330피트)
250kbit/s에서 200미터(650피트)

Bus Termination

ISO 11898 CAN bus는 terminate되어야 한다. 이 때문에 Bus 양 끝에 120옴의 저항을 달아준다. 

이 저항은 Bus 끝에서 신호 반사를 제거하는 역할을 한다. low speed CAN에는 종단 저항이 필요없을 수도 있지만 high speed CAN에서는 반드시 종단 저항 하나 이상이 필요하다. 

728x90
반응형
Comments