LIN介绍
全称为Local Interconnect Network,是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议,应用了单主机多从机的概念,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点,最长总线长度为40米。对于不需要像动力系统和底盘系统那样的速率和可靠性的传感器和执行器,即车身系统,可以采用LIN来构筑简单、低成本的局域网络,适用范围包括车窗、座椅、天窗、门锁、空调、照明等舒适性相关的领域。
LIN&CAN总线对比
由于LIN网络在汽车中一般不独立存在,通常会与上层CAN网络相连,形成CAN-LIN网关节点。
LIN总线特点
- 线形总线
- 主从方式(一主多从)
- 令牌方式
- 报文地址寻址方式(所有节点可以接收LIN报文)
- 基于时间表式的通信(时间触发方式)【这样的方式不会造成bus的过负载,实现稳定的通信。】
- 数据最大传送速度20kbit/sec
- UART接口(多数芯片都带有的串口通信装置)
- 不需要晶振和陶瓷谐振的自我同期(从节点)
- 短报文(最大8Byte)
- 简单的数据保护(奇偶、和校验)
- LIN总线提供信号的配置、处理、识别和诊断功能。
LIN硬件
LIN节点由芯片和LIN收发器构成,一般通过多数芯片都搭载的UART功能来实现。
LIN任务
对于LIN节点任务来说,可分为“主任务”和“从任务”两种。
主任务:只有主节点才有的任务,按照事先决定的时刻在网络中发送令牌,从而实现网络的传输时刻管理。
从任务:主节点和从节点双方都有的任务,数据的传输,即,监视的主任务中发送的令牌,在主节点的令牌后发送数据。只要没收到令牌,绝不发送数据。
LIN协议组成
一个令牌和一条数据构成一条LIN报文。
在LIN的标准中,令牌被称为“header”,数据被称为“response”,报文被称为“Frame”。在“header”中含有表示报文身份的“ID”,各个节点根据“ID”决定是否发送“Response”。同时,LIN报文是地址寻址方式,总线上的所有节点都能收到报文。
帧头结构包括同步间隔段、同步段、PID段(受保护ID)段
应答部分包括数据段与效验和段。其中值“0”为显性电平、“1”为隐性电平,这点与CAN总线相类似。在总线上实行“线-与”:当总线有至少一个节点发送显性电平时,总线呈现显性电平;所有节点均发送隐性电平或者不发送信息时,总线呈隐性电平,即显性电平起着主导作用。LIN 的字节场格式就是通常的“SCI”或“UART”串行数据格式(N81编码)。即每个字节场的长度是10个位定时(BIT TIME):1bit起始位+8bits数据位+1bit停止位【间隔场是唯一一个不符合字节场格式的场。从节点需要检测到至少连续11个显性位才认为是间隔信号。】
以下部分出于引用博客:https://blog.csdn.net/IOT2017/article/details/86008184
1)同步间隔段
同步间隔段至少是由13位的显性电平组成,由于帧中的所有间隙或者总线空闲时总线均保持隐性电平状态。所以同步间隔段可以标志一个帧的开始。其中同步间隔段的间隔符至少为1位隐性电平。
(2)同步段
LIN同步以下降沿为判断标志,采用字节0x55(01010101b)进行同步。在从机节点上可以不采用高精度的时钟,由此带来的偏差,需要通过同步段来进行调整。【LIN出于对成本削减的考虑没有专门布置用于时钟同步的配线,同时,对于LIN的从节点,同样出于对成本削减的考虑一般采用误差较大的CR时钟。这样如果什么都不做的话,LIN的各个节点间容易产生误差。
通过搭载高精度晶振的主节点,将同步信号在总线上发送给各个从节点,各个从节点再根据此信号进行误差补正,从而达到信号同步的目的。这里提一下,LIN协议中对误差的要求是±14%,而一般高精度晶振的误差为±1.5%。】
(3)PID段
受保护的ID的前6位叫做帧的ID,加上两个奇偶效验码后称作受保护的ID。帧ID的取值范围为0x00~0x3f总共64个,帧ID标识了帧的类别和目的地。从机任务会根据帧头ID作出反应(接收/发送/忽略应答)。其中P0与P1效验如下:
LIN总线根据帧ID号的不同,把报文分为信号携带帧、诊断帧、保留帧。
【ID4和ID5为数据长度控制位(ID4是低位)。
值为00或10时,数据长度为2个字节。
值为01时,数据长度为4个字节。
值为11时,数据长度为8个字节。】
PS:从机应答帧是一个完整的帧,与帧结构中的“应答”不同!
(4)数据段
数据段可以包含1-8个字节,其中包含有两种数据类型,信号(singal)和诊断消息(diagnostic messages)。信号由信号携带帧传递,诊断消息由诊断帧传递。
协议中并没有规定哪一部分显示数据长度码的信息(这点与CAN总线不同),数据的内容与长度均是由系统设计者根据帧ID事先约定好的。
总线上的数据是以广播形式发出,任何节点均可以收到,但并非对每个节点有用(与CAN相同)。具体到发布与接听是由哪个节点进行完成这个取决于应用层的软件配置,一般情况下,对于一个帧中的应答,总线上只存在一个发布节点,否则就会出现错误。事件触发帧例外,可能出现0,1,多个发布节点。
(5)校验和段
校验和段是为了对帧传输内容进行效验。校验分为标准型校验与增强型校验。采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种校验和。【校验和场是数据场所有字节的和的反码。所有数据字节的和的补码,与校验和字节相加所得的和必须是0xFF。】
LIN总线的通讯都是由主机节点发起的,只要合理的规定要每个节点的配置,这样就不会存在总线冲突的情况(事件触发帧冲突时采用采用冲突解决进度表)。
EB Tresos中关于LIN的配置
- 时钟配置
- 波特率引脚配置
- LINIF 配置
- 配置进度表运行模式
- LIINSM配置
- 其他配置
未完待更新。。。。