LIN
LIN(Local Interconnect Network的简称,中译是),是应用在汽车内零组件之间通信的串列网络传输协议。由于汽车上的技术及设备渐渐增加,需要低价的串列网络,而控制器局域网路(CAN)的成本太高,无法在车上的每一个设备中都装设。欧洲汽车制造商开始使用不同的串列通信技术,因此出现彼此无法兼容的问题。
在1990年代末期,由BMW、大众集团、奥迪、富豪汽车及梅赛德斯-奔驰这五家车厂开始了LIN Consortium,也有从Volcano汽车集团及摩托罗拉而来的软件及硬件协助。第一个完全实现的新LIN协定(LIN version 1.3)是在2002年11月发布。在2003年9月发布了2.0版,增加了额外的诊断功能。若是配合特制的LIN over DC power line(DC-LIN)收发器,LIN也可以用在汽车车池的电力线通信。
- LIN over DC power line(DC-LIN)的相关标准是ISO/AWI 17987-8[1]。
- ISO技术管理委员会(ISO Technical Management Board,ISO TMB)已指定CAN in Automation为依照ISO 17987的LIN供应商ID的注册机构。
网络拓朴
LIN是广播串行网络,其中包括16个设备(一台主站,15台从站)[2][3][4][5]
所有的消息都是由主站开始,最多会有一台从站回复有特定识别码的消息。主站节点也可能当作一个从站,回应自己发出的消息。
因为所有的通信都是由主站开始,不需要有碰撞侦测的方案[6]。
主站和从站一般都是用单片机实现,不过为了节省成本、空间或是电源,也可以用特殊的硬件或是特殊应用集成电路来实现。
目前的应用会结合低价的LIN网络及小型传感器来建构小型网络。这些子系统之间可以用骨干网络连接(在汽车中可能是CAN)[7]。
简介
LIN是低成本的串列通信协定,可以有效支持车内网络的远程应用。
LIN特别适用在分散在汽车不同位置的机械式节点,也适用于工业应用。
LIN设计时是和CAN网络互补,组成车内的阶层式网络。
LIN Consortium是在1990代末期组成的,组成成员是五家欧洲车厂,以及明导国际(以前的Volcano车辆集团)及飞思卡尔(之前的摩托罗拉,现在已并入恩智浦半导体)。
新的LIN规范中,第一个完全实现的版本是在2002年11月发布的LIN 1.3版。在2003年9月提出了2.0版,扩充了组态能力,以及额外的诊断机能以及工具接口。
协定的主要特点如下:
- 单一主站,最多16个从站(没有总线仲裁的过程)。这是LIN Consortium强调的特点,以达到确定性的时间反应[8]。
- 从站节点位置侦测(Slave Node Position Detection、SNPD),可以在送电后才指定节点的地址[9]。
- 单线通信,在长度40公尺时,可以到19.2 kbit/s[8][10]。在LIN规范2.2中[9],速率最高可到20 kbit/s。
- 可确保的延迟时间。
- 可变长度的数据页框(2, 4及8字节)。
- 可变动的组态。
- 多播接收的时间同步。设备电路的时脉不需非常准确。不需要晶振(crystal)或是陶瓷振荡器。
- 数据检查码以及错误检测。.
- 可以检测故障的节点。
- 以标准UART/SCI(串列通信接口)为基础的电路,低成本的方案。
- 可以创建阶层式的网络
- 工作电压为12 V[8]。
数据是通过可变长度,固定格式的消息来在网络上传播。
主站会送出标头(header)数据,其中包括同步间隔(Synchronization break)信号,之后是同步字段以及识别符(ID)字段。从站回应数据页框(frame),其中包括2个、4个或8个字节的数据,再加上3个字节的控制信息[9]。
LIN消息页框
消息包括以下的字段[9]:
- 同步间隔(Synchronization break)
- 同步字节
- 识别符(ID)字节
- 数据字节
- 检查码字节
页框种类
- 无条件页框(Unconditional frame):识别符会在0到59(0x3b)之内。
会带有信号,所有无条件页框的收听节点都要接收此页框,若没有错误的话,其应用程序需处理对应的内容。 - 事件驱动页框(Event-triggered frame):
其目的是增加LIN节点的反应能力,不需要为了偶尔出现的信号而用轮询的方式向各节点确认,消耗网络的带宽。
无条件页框的第一个字节需和某个事件驱动页框的保护识别符(PID[11])相同。
从站只有在其数值变化时才需要回应对应的无条件页框。若没有节点回应,该页框的剩余时间没有信号,会忽略该标头数据。
若不止一个节点回复,此页框时间会出现数据碰撞,主站需处理碰撞的情形,在下一次提出事件驱动页框前需要先请求所有相关的无条件页框。 - 偶发页框(Sporadic frame):
此页框是在主站有需要时,由主站发出,因此不会有碰撞。
只有在主站知道某页框的数据有变化时,才会在对应的页框时间区间内送出偶发页框的标头。
偶发页框的发送者需要回应标头的数据。 - 诊断页框(Diagnostic frame):识别符是60(0x3c)(主站请求页框)或61(0x3d)(从站回应页框)。
其中包括诊断或是组态的信息,长度8字节。
主站在产生诊断页框的标头之前,需要先问诊断模块是否应送诊断数据,以及网络上是否应有信息。
从站也会接收这些数据,依照其诊断模块的消息回应信息, - 自定页框(User-defined frame):识别符是62(0x3e)。
可以包括任何信息。当处理了指定给该页框的页框时间区间时,会送出指定页框的标头。 - 保留页框(Reserved frame):其识别符是63(0x3f)。
LIN 2.0 cluster不会使用。
LIN硬件
LIN规范就是为了设计在网络中很低价的硬件节点所开发。LIN设备是以ISO 9191为基础的低成本、单线网络[12]。
以现今的汽车网架构来看,会使用有UART能力,或是有专门LIN硬件的单片机。
单片机会产生通信协定、同比特等LIN通信需要的所有数据,通过LIN收发器(可能只是电压转换,再加上一些机能)
LIN的从站节点越便宜越好,因此其时脉可能不是用石英晶体谐振器或陶瓷谐振器,而是用RC振荡器产生时脉。为了确保LIN页框内波特率的稳定性,页框中会有SYNC(同步)的字段。
LIN通信协定
LIN主站会依照一个或是几个事先定义的调度表,在LIN网络上开始发送或是接收消息。调度表中至少会包括各消息开始发送的相对时序。 LIN页面由两部份组成:标头(header)及回应(response)。标头是由LIN主站送出,回应可能由特定的LIN从站送出,或是由LIN主站本身送出。
LIN是用串列的方式发送数据,一个字节中有八个比特,一个起始比特,一个结束比特,无同比特检查(break字段没有起始比特及停止比特)。比特率的范围最慢到1 kbit/s,最快到20 kbit/s。 在网络上的数据可以分为隐性(recessive,逻辑上的高准位)及显性(dominant,逻辑上的低准位) 其时间基础是由LIN主站的稳定时脉来源来决定,最小的单位是1比特时间(52 µs @ 19.2 kbit/s)。
LIN协定上,有列出两种网络上的状态:睡眠状态及活跃状态。在LIN网络上有数据时,所有的LIN节点都进入活跃状态。在一定时间的逾时时间后,节点会进入睡眠状态,若有唤醒页框(WAKEUP frame)时才会回到活跃状态。 唤醒页框可以由网络上任何一个节点发起,可以是LIN主站依照其内部时程发起。也可以是LIN从站由其固件所产生。 在所有节点都活跃之后,主站会继续下一个识别符的调度。
标头 (Header)
包括五部份:
- 间隔(BREAK)
- 间隔字段会活化所有的LIN从站,预备接收后续标头的内容。其字段包括一个启始比特以及数个显性比特,长度至少是11个比特时间,目前使用的标准,其长度是13个比特时间,和基本的数据格式不同。间隔字段是在主时脉可以和各LIN节点时脉不同时(但差异在一定范围内时),确保所有接收的LIN节点可以侦测到表示开始通信的间隔字段,这不是标准的数据格式,其数值均为0。
- 同步(SYNC)
- 同步字段是标准的数据格式字节,数值是十六进制的0x55(高比特及低比特轮流变化) 。使用RC振荡器的LIN从站可以用一定数量上升缘及下降缘的时间差,计算网站上的比特时间(主站的time normal),并且重新计算内部的比特率。
- 字节间隔(INTER BYTE SPACE)
- 字节间隔是用来调整网络上的 jitter,是LIN规范中可选择的项目。若启动的话,所有LIN模块都要支持此一机能。字节间隔出现在间隔字段和同步字段之间、同步字段和识别符字段之间、同步字段和识别符字段之间、酬载(不考虑通信协定,实际要传输的数据)字段和检查码字段之间。在酬载字段的每一个字节之间也要有字节间隔。
- 识别符(IDENTIFIER)
- 识别符定义一个到多个LIN从站节点要进行的动作。网络设计者需在设计阶段实现故障树的机能。
- 识别符再加上二比特的检查比特,即为 受保护的识别符(PID[11])。
- 回应间隔(RESPONSE SPACE)
- 是识别符字段和LIN回应消息中第一个字节之间的间隔时间。当特定的LIN页框(标头及回应)由LIN主站发送完毕,LIN主站会用完整的回应间隔间来计算何时要再送出回应数据。若回应是由另外一个LIN从站送出,主站及从站点会在其逾时时间的计算上,各自处理50%的回应间隔。
- 若识别符(IDENTIFIER)让一个LIN从站(Slave Node)发送回应消息,此识别符称为Rx识别符。若识别符让LIN从站送出任务消息,此识别符称为Tx识别符。
- 在一个页框时间内,只允许一个从站发送回复数据。
- ID=0x3c~ 为特定用途,请参考 #页框种类 说明。
- 标头(header)必定由Master Node 发起。
回应
回应是由LIN从站任务产生(可能是从站,也可能是主站的从站任务)[13],分为数据及校验和[9]。
- 数据
- 回应的从站可以送零个到八个字节到网络上,数据数量由应用编程者决定,对应LIN从站应用程序中相关的数据。
- 检查码(CHECKSUM)
- LIN有二种检查码模式:一种检查码只包括数据字段(V1.3 之前的规范),又名classic checksum;另一种也包括识别符(V2.0之后的规范),又名enhanced checksum[14]。由应用程序的设计者事先定义要用的检查码模式。
- 诊断消息(ID=0x3C & 3D)使用classic checksum
- 回应 Tx识别符的 又称为 Publisher 或 Sender,发布者,发送端,寄件者。
- 回应 Rx识别符的 又称为 Subscriber 或 Receiver,订阅者,接收端,收件者。
从站节点位置侦测试(SNPD)或自动寻址
从站节点位置侦测试(Slave node position detection, SNPD)或自动寻址(autoaddressing)的技术可以侦测LIN网络上各从站节点的位置顺序,并给予节点不重复的节点地址(unique node address、NAD)[15],好处是可以让同一类或是类似的设备可以直接连接到网络,不需要另外修改程序
限制:
- 所有需要自动寻址的从站,需要在同一条网络在线(若是不需要自动寻址的标准从站,接线就不受限制)。
SNPD方法 | SNPD方法ID | 公司 |
---|---|---|
外部接线菊花链(Extra wire daisy chain) | 0x01 | 恩智浦半导体(以前的菲利浦) |
总线分流法(Bus shunt method) | 0x02 | Elmos Semiconductor |
保留 | 0x03 | 还不确定 |
保留 | 0x04 | 还不确定 |
保留 | 0xFF | 还不确定 |
外部接线菊花链
外部接线菊花链(Extra wire daisy chain,XWDC)的方案中,每一个从站设备需要多提供一个输入脚D1,以及一个输出脚D2。
- 第一个SNPD节点的输入脚D1接到GND,或是接到主站的输出脚。
- 第一个SNPD节点的输出脚D2,接到第二个SNPD节点的输入脚D1,以及类推。
每一个组态脚Dx(x=1-2)有以下额外的机能来进行位置侦测:
- 可以切换的上拉电阻,电阻另一端连接Vbat
- 下拉到GND
- 有比较器,电压准位是Vbat/2
总线分流法
总线分流法(Bus shunt method,BSM)的从站设备中,有二个LIN节点
- bus_in
- bus_out
每一个节点需增加以下电路,进行位置侦测的机能。
- 可以切换的上拉电阻。
- 可以切换的,从Vbat提供的2 mA电流源。
- 分流电阻
- 差动放大器
- 模拟—数字转换器
在EP 1490772 B1及US 7091876的专利中,有提到BSM的自动寻址技术。
LIN的优点
- 方便使用
- 组件容易取得
- 比CAN或其他的通信网络要便宜
- 减少线束
- 可以让车辆更可靠
- 网络延伸很容易
- 不需通信协定的权利金
LIN的目的不是为了完全取代CAN网络。不过若价格是主要考量,较没有速度及带宽上的需求时,LIN是很适合的替代方案。一般来说,LIN会用在车辆中对性能或安全性较不要求的子系统,以下是一些例子。
应用
应用场合 | LIN应用的例子 |
---|---|
车顶 | 传感器、光传感器、光线控制、天窗 |
方向盘 | 巡航控制、刮水器、方向灯、温湿度控制、收音机,方向盘锁 |
座椅 | 座椅调整马达、乘员传感器、控制面板 |
引擎 | 传感器、小马达、冷却风扇马达 |
温湿度 | 小型马达、控制面板 |
门 | 后视镜、中控ECU、后视镜开关、车窗升降器、座椅控制开关、门锁 |
照明 | 窗台板的RGB LED照明 |
地址
LIN网络中的地址是通过NAD(Node ADdress、节点地址)来实现,NAD是PID(protected identifier、受保护识别码[11])的一部份。NAD的值有7比特,其范围从1到127 (0x7F)
开发工具
在开发LIN网络或是调试时,硬件信号的检查格外的重要。逻辑分析仪及通信分析仪可以搜集、分析、解码通信信号并加以保存,方便开发及调试使用。
相关条目
- 网络串列协定列表
- SAE J3068(LIN-CP)
参考数据
- "ISO/AWI 17987-8" (页面存档备份,存于)
- Mary Tamar Tan, Brian Bailey, Han Lin. "Microchip AN2059: LIN Basics and Implementation of the MCC LIN Stack Library on 8-Bit PIC Microcontrollers" (页面存档备份,存于).
- "ATAN0049: Two-wire LIN Networking" (页面存档备份,存于).
- Steve Winder. "Power Supplies for LED Driving" (页面存档备份,存于). p. 284
- "The LIN Short Story" (页面存档备份,存于).
- . LIN Overview. LIN Administration. [28 October 2011]. (原始内容存档于2011-10-05).
- . LIN Overview. LIN Administration. [28 October 2011]. (原始内容存档于2011-10-05).
- . [2009-01-14]. (原始内容存档于2012-04-14). 090114 cvel.clemson.edu
- . [2020-04-22]. (原始内容存档于2008-04-26).
- . [2020-04-22]. (原始内容存档于2021-01-05). 090114 interfacebus.com
- . [2023-12-06]. (原始内容存档于2021-04-17).
- . [2020-04-22]. (原始内容存档于2011-07-19).
- . [2023-12-06]. (原始内容存档于2021-09-25).
- . [2023-12-06]. (原始内容存档于2021-04-17).
- Anand Gopalan, Akeem Whitehead. "Automatic Slave Node Position Detection (SNPD)".
外部链接
- LIN Consortium(页面存档备份,存于) it is not longer available, because the latest LIN specification (2.2A) is being transcribed to the ISO (International Organization for Standardization) as part of the process to be accepted as ISO standard ISO 17987 Part 1-7.
- LIN Supplier ID Registration Authority Registration Authority for the LIN Supplier ID standardized in the ISO 17987 series
- Deep dive LIN training course with hands-on examples(页面存档备份,存于)
- CAN/LIN Training
- Brief CAN/LIN Background Information (Chinese)
- Article about a free open hardware/software implementation of the LIN protocol
- An open source Arduino based LIN protocol analyzer(页面存档备份,存于)
- Open source Arduino based platform with LIN connectivity(页面存档备份,存于)
- A free online LIN checksum calculator(页面存档备份,存于)