CAN

[CAN] CAN통신의 특징 | 자동차 통신 | CAN Controller | CAN Tranceiver | TXD | RXD | Baud Rate | Sampling Point - 작성중

언에듀걸 2023. 10. 10. 21:45
반응형

CAN Controller

MCU(Micro Controller Unit) :

제어기 안에 있는 소형의 컴퓨터, CPU, 메모리를 포함한 다양한 하드웨어 장치들이 들어 있음

 

Peripheral :

MCU에 들어있는 주변 하드웨어 장치들

 

CAN Controller : 

(Data Link Layer)

메시지에 담기는 값과 관련됨

Peripheral 중에서 CAN통신과 연관된 동작을 하는 장치를 CAN Controller라고 함

CAN 통신 프로토콜, 스펙에 따라 컨트롤 함

CPU가 어떠한 메시지를 CAN통신으로 보내야 한다고 판단하면 CAN Controller에게 데이터를 전달하여 처리하게 함

CAN Frame의 Field에 메시지를 채워 내보내는 역할

Bus에 다른 제어기가 메시지를 보내고 있지 않은지도 판단

에러 처리

 

CAN Tranceiver : 

(Physical Layer)

Transmitter + Receiver 합성어

실제로 전선에 출력되는 전압과 관련됨

CAN 스펙에 맞게 전압을 출력하면 그 전압을 읽어 0인지 1인지 판단

CAN High, CAN Low 라인은 CAN Tranceiver에 연결됨

MCU의 Peripheral이 아닌 별개의 소자

State Machine을 가지고 있는 트랜시버의 경우 Normal Mode, Sleep Mode, Listen Only 와 같은 State가 있기 때문에 트랜시버가 어떻게 동작하는지를 알아야 함

보호&진단 기능

CAN Tranceiver 제품 : NXP의 TJA1043

 

CAN Controller와 CAN Trancever 사이에서 주고 받는 것? :

CAN Controller의 입장에서 CAN TX(메시지 송신), CAN RX(메시지 수신)를 주고받음

 

CAN 트랜시버 데이터 시트 :

(NXP의 TJA1043)

https://www.nxp.com/docs/en/data-sheet/TJA1043.pdf

데이터 시트를 살펴보면 CAN 트랜시버의 general한 설명이 나와있으니 참고!

6.1 Pinning 부분을 확인하여

어떤 핀이 MCU에 연결되는지 파악

 

TXD : Transmit Data Input

CAN 컨트롤러가 보내려는 데이터이므로 Tx, Tranceiver 입장에선 Input

 

RXD : Receive Data Output, read out from the bus lines

CAN High, CAN Low로부터 전압을 읽어 0인지 1인지 파악하여 MCU에게 보내줌

MCU 입장에서는 Rx, 트랜시버에게는 Output

 

Baud rate :

통신 속도

(제조사에서 정의)

단위 : bps(bit per second)

1초 동안 보내는 비트의 수

버스에 참여하고 있는 모든 제어기는 같은 Baud Rate로 통신해야함

프로토콜 별 최대 속도

- Low-Speed CAN(Fault-Tolerant) : 최대속도 ~125kbps

- High-Speed CAN : 최대속도 ~1Mbps, 높은 확률로 500kbps정도 사용

- CAN FD(CAN with Fast Data-Rate) : 최대속도 ~8Mbps

 

Sampling Point :

하나의 비트 값이 0인지 1인지 판단하는 지점(단위 : %)

(제조사에서 정의)

샘플링 포인트에 따라 같은 Baud Rate 사용해도 CAN Controller의 소프트웨어를 구현할 때 세팅 값이 달라짐

CAN 시뮬레이션 장비 사용 시 Baud Rate/Sampling Point 세팅 후 사용

 

CAN Controller에 제공된 클락 속도에 따라 Time Qunta가 계산되는데

Time Quanta는 1/CAN Clock

예)

CAN Clock이 10Hz라면 Time Quanta는 1/10Hz = 0.1초

1bps일 때 1초에 1비트, 하나의 비트는 10개의 Time Quanta로 구성

 

CAN에서는 1bit를 Synx, TSEG_1(Prop+Phase1), TSEG_2(Phase2)의 3개의 구간으로 분류하는데

예)

Sampling Point %가 70%라면

Sync는 1로 고정, Sync+TSEG_1(Prop+Phase1) : TSEG_2(Phase2)의 비율이 Sampling Point 비율

Sync가 1이니까 TSEG_1를 6으로 설정하면 1+6는 7,

이렇게 설정하면 7:3 비율이며 Sampling Point 70%

 

 

반응형