본문 바로가기
자동차 임베디드 SW/CAN통신 & LIN통신

LIN 통신 개요

by 존버매니아.임베디드 개발자 2022. 8. 10.
반응형

LIN-Spec_2.2_Rev_A.PDF
3.49MB

(첨부의 파일은 LIN2.2 표준 Pdf 파일이다. 파일의 출처는 벡터 홈페이지다.)

https://www.vector.com/kr/ko/products/solutions/networks/lin/#c81091

 

아주 오랫동안 CAN 통신만을 사용해왔다.

LIN 통신 이름은 오래전부터 들어왔는데 실제로 써볼 일이 없어서 잘 몰랐다가 이번에 LIN을 처음 써보게 되면서 알게된 내용을 까먹지 않게 정리해서 남긴다.

LIN 통신이란 무엇인가?

 

 

일반적인 이야기

LIN 통신은 CAN 통신에 비하여 Baudrate이 낮아 많은 양의 데이터를 송수신 하기 어렵다.

(최대 19.2Kbps)

그러나 일반적으로 CAN 통신보다 비용이 적게 드는 장점이 있다고한다.

주로 하나의 MCU와 센서, 액츄에이터 들과 간단한 정보를 주고받을 때 사용한다고 한다.

꼭 알아야 할 개념은

Master-slave 구조가 어떻게 동작하는건지

Publisher, Subscriber의 개념이 뭔지 이다.

 

Wire

CAN High, CAN Low 2개의 전선을 사용했던것과 달리 LIN은  1개의 전선을 사용하여 통신한다.

 

TASK

이유는 모르겠지만 LIN 통신에서는 통신에 참여하는 Node 각각을 Task라고 부른다.

 

Frame

CAN 통신에서 메세지라고 불리던 것이 LIN에서는 Frame이라고 부른다.

 

Master-Slave 구조

LIN통신도 CAN 통신처럼 BUS형 토폴로지를 사용한다. 그래서 하나의 통신 네트워크에 여러개의 제어기,센서 등이 연결되어 정보를 주고 받는것이 가능하다.

CAN통신과 다르게 LIN 통신은 Master- Slaver 구조를 갖고, 하나의 네트워크에 오직 1개의 Master가 존재한다.

Master-Slave 구조라는 얘기만 듣고 여기서 내가 착각을 아주 크게 했다.

네트워크에 여러개의 제어기들이 통신에 참여하지만 오직 Master만 메세지를 송신(Tx) 하고 Slave들은 모두 정보를 수신하는 개념이라고 생각했다. 

근데 LIN 에서의 Master Slave는 그런 동작컨셉이 아니다.

설명을 하려면 Publisher, Subscriber의 개념을 알아야한다.

(발행자, 구독자)

 

 

프레임(메세지) 마다 ID가 있고 ID의 길이는 총 8비트이다.

또한 데이터 필드의 크기는 최대 8byte이다.

CAN 통신에서 메세지 안에 시그널들을 정의하듯이,

LIN 도 프레임(메세지) 마다 어떠한 시그널들이 담기는지를 사전에

정의해 놓는다.

 

그리고 각각의 메세지마다 Publisher, Subscribers도 정의한다.

흡사 CAN 에서의 Tx, Rx와 비슷한 의미이다.

 

Publisher는 해당 메세지의 데이터필드 값을 채워넣는게 누구인지를 정의한 것이고

Subscribers는 해당 메세지가 송신됐을때 Publisher가 채워넣은 그 값을 수신해서 활용하는 대상을 정의하는 것이다.

                  ID      Publisher     subscrbiers 

메세지 1    12        slave1         master

메세지 2     25       slave2          slave1

메세지 3     34       master          slave2

 

위와 같은 예시에서, CAN이었다면 slave1이 메세지1을 언제 송신할지 본인이 직접 결정해서 메세지 송신을 시작하는데,

LIN에서는 Master Slave 구조이기 때문에 Slave는 메세지 송신을 본인이 결정할 수 없다.

 

메세지의 시작은 오직 Master가 하는 것이고, 해당 메세지의 Publisher는 LIN 통신의 통신상태를 쭉 확인하다가 

Master 가 어떤 메세지의 송신을 시작하면 그 메세지의 번호가 무엇인지 확인하고, 만약 그 메세지가 자신이 Publisher인 메세지라면?

그러면 해당 publisher가 해당 메세지의 Data 영역에 값을 채워넣는 것이다.

이렇게 Publisher가 데이터 영역에 값을 채워넣으면, Subscriber들은 그 값을 받아가는 방식이다.

 


 

 

 

 

 

반응형