1.什么是LIN?(单总线半双工通讯)
LIN 是 Local Interconnect Network 的缩写,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter /Serial Communication Interface,通用异步收发器/串行通信接口)的低成本串行通信协议。可用于汽车、家电、办公设备等多种领域。本文主要针对 LIN 在分布式的汽车电子网络系统中的应用。1996 年,Volvo和Volcano通讯(VCT)为Volvo S80 系列开发了一种基于UART/SCI的协议,即Volcano Lite。1997 年,Motorola与Volvo和VCT合作,帮助它们改进Volcano Lite协议以满足各种不同需求(比如无需晶振的从机设备自动同步),并制定可以支持各种半导体产品的开放标准。1998 年 12 月,Audi、BMW、Daimler Chrysler和Volkswagen也加入进来,由此形成了LIN协会(http://www.lin-subbus.org)。开发LIN标准的目的在于适应分层次车内网络在低端(速度和可靠性要求不高、低成本的场合)的需求。LIN经历了几个版本的发布和更新,如表 1.1所示。
1.1 LIN 子网(Cluster)与节点(Node)
节点应用层向下层传输信号和消息。信号和消息位于帧中的数据段,是节点向其他节点传达的实质信息。它们之间的区别在于信号封装于信号携带帧 (帧 ID 范围在 0x00~0x3B 之间,参照 3.1.3 节表 3.1)中,用于在运行状态传递上层发生的事件,如温度传感器的测量结果等。消息封装于诊断帧(帧 ID 为 0x3C 或 0x3D,参照 3.1.3节表 3.1)中,是有固定格式、最大长度不超过 4095 字节的信息,例如第 5 章介绍的服务请求。应用程序通过信号处理实现信号的传递,通过传输层实现消息的传递。
1.2 主/从机节点与主/从机任务
LIN 的拓扑结构为单线总线,应用了单一主机多从机的概念。总线电平为 12V,传输位速率(Bitrate)最高为20kbps。由于物理层限制,一个 LIN 网络最多可以连接 16 个节点,典型应用一般都在 12 个节点以下,主机节点有且只有一个,从机节点有 1 到 15 个。主机节点(Master Node)包含主机任务(Master Task)和从机任务(Slave Task),从机节点(Slave Node)只包含从机任务,如图 1.5 所示。
主机任务负责:
(1) 调度总线上帧的传输次序;(意味着LIN通讯的开始结束,采用哪种校验和增强还是标准以及帧时隙都是由主机节点控制)
(2) 监测数据,处理错误;
(3) 作为标准时钟参考;
(4) 接收从机节点发出的总线唤醒命令。
从机任务不能够主动发送数据,需要接收主机发送的帧头,根据帧头所包含的信息(这里指帧 ID)判断:
(1) 发送应答(帧中除帧头外剩下的部分,参照 3.1 节的图 3.1);
(2) 接收应答;
(3) 既不接收也不发送应答。(以上都由用户程序根据具体应用场景控制)
****注:
*
关于LIN的波特率,其实就是串口的波特率,传输位速率(Bitrate)最高为20kbps,
也就是说波特率不能超过20000,例如有的LIN应用说是19.2Kbits/s,
其实也就是说他的串口波特率是19200。
***
正常LIN的波特率不会大于19200,可选择的有如下所示: