한량처럼 살고 싶다

05. CAN Tranceiver & CAN Controller 본문

CAN통신

05. CAN Tranceiver & CAN Controller

투영 2024. 5. 6. 18:44

https://www.inflearn.com/course/%EC%9E%90%EB%8F%99%EC%B0%A8-%EC%8B%A0%EC%9E%85-can%ED%86%B5%EC%8B%A0/dashboard

 

CAN 통신 - 자동차 신입이 알아야 할 모든 것 | 존버매니아 - 인프런

존버매니아 | CAN통신에 대한 '학술적인' 강의가 아니라 '같이 일하게 될' 신입사원에게 알려준다는 생각으로 일을 하는 과정에서 필요한 모든 얘기들을 담았습니다., 자동차 회사 실무자라면 꼭

www.inflearn.com

 


Tranceiver라는 단어가 무슨 단어일까, 싶었는데 Transmitter랑 Receiver를 합친 단어라고 한다

Transmitter는 송신기 Recevier는 수신기

 

자동차 안에는 다양한 전자장치가 있다. (브레이크, 컴퓨터, 등등등)

이 전자장치를 제어하는 각각의 하드웨어가 존재하는데, 이 하드웨어를 제어기라고 부른다.

 

초록색 기판이 바로 제어기이다.

이걸 그대로 차에 넣으면 외부 충격에 너무 약하니 오른쪽 아래 케이스 같은 것에 넣어서 차량에 집어넣게 된다.

 

제어기에 붙어있는 까만색 사각형들이 MCU이다. Micro Controller인데, 이게 일종의 컴퓨터임

저 쪼그마한 애들 안에 cpu나 메모리를 비롯한 각종 다양한 하드웨어 장치가 있는데, 이 하드웨어를 peripheral 이라 부른다.

많은 peripheral 가운데 CAN 통신과 연관된 작동을 하는 peripheral을 CAN CONTROLLER라고 부른다.

 

가장 큰 사각형(CAN Node)이 제어기를 말하고,

까만 사각형인 MCU가 Microcontroller,

그 안에 can 통신과 연관된 작동을 하는 CAN Controller가 있다.

 

특정 통신을 수행해야 할 때 MCU가 CAN Controller에게 신호를 준다.

CAN 통신에서 메세지는 위쪽그림처럼 구성되어있다 (프레임 헤더임)

 

CAN CONTROLLER는 메세지를 제작하여 바깥으로 내보내는 역할을 한다.

 

CAN 통신은 특정 제어기가 메세지를 보내려면 다른 제어기가 그 버스를 사용하고 있지 않아야 한다.

즉, 버스를 확인하여 다른 제어기가 이 버스를 사용하는지 사용하지 않는지 확인하고 아무도 안 쓰면 메세지를 보낼 수 있다.

따라서 지속적으로 버스를 확인하여 이 버스를 쓰는 제어기가 있는 지 없는 지를 확인해줘야 하는데 이 역할도 CAN CONTROLLER가 한다.

 

CAN 통신에서 사용되는 에러 처리도 CAN CONTROLLER가 한다.

 

이전 강의에서 CAN은 전압이 어떤 구간에 속하는지에 따라 0인지 1인지 분간한다고 했다.

그러나 MCU는 범위로 인식하는 것이 아닌, 1이면 5V, 0이면 0V 이런식으로 값 딱 한 개로 치환해서 계산한다.

 

따라서 이런 MCU에게 0인지 1인지 값을 알려주기 위해 구간을 값 한 개로 바꿔주는 역할을 하는 것이 필요한데, 이 역할을 하는 친구가 바로 CAN Tranceiver이다.

즉 그림에서 CAN Tranceiver에 달려있는 선 두 개가 CAN High, CAN Low임 (버스와 연결된 선)

CAN Tranceiver는 전압을 읽고 0인지 1인지 알려주는 역할과, 0이나 1을 받았을 때 이를 전압으로 바꾸는 역할 모두를 하고 있다. 

그래서 이름이 트랜시버인듯 트랜스미터 (송신기), 리시버 (수신기) 역할을 다 하고 있어서...

 

중요한 점은 캔 하이와 캔 로우는 캔 트랜시버와 연결되어있다는 점이다.

그렇다면 CAN Controller와 CAN Transceiver 사이에 있는 화살표 두개는 무엇일까?

 

CAN Controller가 CAN Transceiver에게 보내는 방향의 화살표: CAN TX

CAN Controller가 CAN Transceiver로부터 받는 방향의 화살표: CAN RX

헷갈린다면 캔 컨트롤러 입장에서 생각하면 된다, 보낼 땐 TRANS, 받을땐 RECEIVE

 

[CAN TX]

CAN Controller가 데이터를 보내려면 0 또는 1의 값을 보낼텐데 이 값을 CAN Transceiver에게 보낸다.

CAN Transceiver는 0과 1을 받은 뒤 약속한 각 값에 해당하는 전압 구간에 속한 특정 전압값으로 출력해준다. 

 

[CAN RX]

CAN Transceiver가 버스로부터 전압을 받으면 이를 0과 1로 바꿔줄텐데, 이 값을 CAN Controller에게 전달한다.

 

CAN 통신을 한다면 CAN Transceiver를 사용하지 않을 수 없다

그림을 보면 CAN Transceiver는 MCU의 외부에 위치하고 CAN TX 포트와 CAN RX포트로 CAN Controller와 연결된다.

 

세상엔 많은 CAN Transceiver가 존재하는데 그 중 state mode를 갖는 트랜시버도 존재한다.

모드에는 sleep mode, normal mode, listen only mode가 있다.

만약 이러한 CAN Transceiver를 사용한다면 상황에 맞게 모드를 변환시켜줘야 정상적으로 동작한다.

 

그러므로 CAN 통신과 관련된 소프트웨어를 개발하게 된다면 어떤 CAN Transceiver를 사용하는지를 알아야 하고, 데이터시트 같은 것을 참고하여 이에 맞게 소프트웨어를 개발해야한다.

 


용어 정리/요약

 

자동차 안에는 수많은 전자장치가 있고, 이 장치를 제어하기 위한 각각의 제어기가 존재한다.

제어기는 그림에서 초록색 기판이었다.

 

초록색 기판: 제어기

초록색 기판 위 검은색 사각형: MCU (Micro Controller)

MCU안의 다양한 요소: 페리페럴 (peripheral)

CAN 통신과 관련된 역할을 하는 peripheral: CAN Controller

 

CAN Controller는 CAN Transceiver와 통신하는데, CAN RX와 CAN TX 포트(핀)이 존재함.

캔 컨트롤러는 실질적으로 0과 1만을 다룬다. 

 

캔 컨트롤러에게 전압을 0과 1로 바꿔 전달하는 역할(CAN RX)이나

캔 컨트롤러로부터 0과 1을 받아 올바른 전압(비트)으로 바꿔 전달하는 역할(CAN TX)을 캔 트랜씨버가 한다.

 

캔 컨트롤러는 메세지에 담기는 값과 관련하여, OSI 7계층에서는 DATA LINK LAYER에 연관된다.

캔 트랜시버는 실제로 전선에 출력되는 전압과 관련하여 OSI 7계층에서는 PHYSICAL LAYER에 연관된다.


네트워크 세계에서는, 여러 계층을 거치면서 데이터에 헤더를 붙여 가공하게 된다.

각 계층별로 단위의 명칭이 다른데, 데이터링크계층(2계층)은 프레임, 네트워크계층(3계층)은 패킷, 전송계층(4계층)에선 세그먼트라 불렀다.

 

소프트웨어 공부를 하면서 1,2계층을 깊게 다루는 일은 없었는데 이번 기회에 지식이 늘어서 좋다

컴퓨터 세계에서는 맥주소+IP주소+포트주소까지 모든 것이 필요한데 CAN 통신은 아이피가 필요가 없기 때문에 신기한 것 같기도 하고?

 

'CAN통신' 카테고리의 다른 글

CAN Frame 타입  (0) 2025.02.25
04. CAN High & CAN Low signal  (0) 2024.05.06
03. 120옴 저항  (0) 2024.05.06
02. CAN 통신의 커넥터  (0) 2024.05.06
01. CAN통신 토폴로지 & 전송방식  (0) 2024.05.06