LIN通信协议以及概念

  • Post author:
  • Post category:其他


1 LIN基本概念


LIN(Local Interconnect Network)


总线是针对汽车分布式电子系统而定义的一种低成本的串行通讯网络,是对控制器区域网络


(CAN)


等其它汽车多路网络的一种补充,适用于对网络的带宽、性能或容错功能没有过高要求的应用。


LIN


总线是基于


SCI(UART)


数据格式,采用单主控制器


/


多从设备的模式,是


UART


中的一种特殊情况。

使用一根


12V


信号总线和一个无固定时间基准的节点同步时钟线。

2 通信特点(单线通信,传输速率较低)

LIN


线在物理上是一个上拉到


12V


的集电极开漏总线,多个节点可以并联到同一根线上,与


IIC





SDA


类似,但其没有独立的时钟线,靠通信双方约定的波特率进行通信,与


UART


类似,但由于


UART


之处在于,其可以通过同步场进行时钟同步,使传输变得更可靠。这样与


CAN


总线的一对差分双绞线不同,其抗干扰能力大大减弱,通信速率最高只能


20Kbps,





CAN


可达


1Mbps



3 通信结构(

主从结构,中心化拓扑


LIN


线拓扑结构是主从结构的星型模型,所有传输都是


master


发起,


slave


不可以主动发起请求。这个其实与


modbus


更类似。也可以把


slave


看做消息的发布者,


master


看成消息的订阅者,想要获取某个变量值,就需要不断轮询读应节点对应的报文。这个结构就决定了


LIN


线传输的消息不可能太多,以保证消息更新的实时性,通常一条


LIN


线上定义的消息要比一条


CAN


线上定义的消息少一个数量级。当然,如果中心节点出现了问题,整个网络也就挂掉了。

4 通信协议解析


LIN总线的帧格式如上图所示。可以看出,一个典型的LIN数据帧主要包含header、header


response以及response域。LIN一帧数据最大可以传8bytesLIN2.x规定可以传输的LIN字节数可选是2,4,8并不是1-8内任意一个数字。一般而言,车内会选择一个统一字节数,最常用比如每帧都传8个字节。


Header场中包含break,synch以及受保护的id。其实break就是告诉总线传输开始,然后用synch同步始终,然后使用受保护id来寻址,如果有LIN


slave节点可以提供这个id的服务,那在master发出protected


id后,就他就会插入一个应答,与IIC从机在sda上给出类似应答类似。值得注意的是,这个protected


id并不是slave从机地址,而是想要订阅的报文id,换个说法,一个slave从机可以提供多个报文id的服务,比如一个车灯控制ECU,可以提供灯控制、状态、故障码、软硬件版本信息等多个LIN


ID服务。而slave从机地址是隐性的与其所提供的报文ID是有个对应关系的




与CAN总线的CRC校验不同,LIN的提供奇偶校验以及checksum方式,对header中的protected


id进行奇偶校验,也会对data进行checksum校验,有classic以及enhanced区分






LIN


总线的主从结构决定了


master


节点要周期性的去


slave


读取数据,也可以去设置一个报文。一条


LIN


总线上有多个


slave


节点,每个


slave


要发布多个


ID


报文时,就需要


master


在兼顾实时行的条件下,顺序的读取或这设置每个


slave


的每个


ID


报文。对于每个


slave


可以提供哪些报文,有


ldf


文件统一描述,与


CAN





dbc


文件不同。


Ldf


文件全称为


LIN Configuration Description File


,描述了一条


LIN bus


完整的主从节点信息,以及报文格式,调度信息。根据


ldf


文件可以得到


schedule tables


,这个调度表给


master


设置了读取


slave


节点报文


id


的时间间隔,比如


10ms





100ms


。这个调度表可以由专门的生成工具由


ldf


文件来生成。



版权声明:本文为m0_37891624原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。