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。- ISO技术管理委员会（ISO Technical Management Board，ISO TMB）已指定CAN in Automation为依照ISO 17987的LIN供应商ID的注册机构。

**网路拓朴**
LIN是广播串行网路，其中包括16个设备（一台主站，15台从站）
所有的讯息都是由主站开始，最多会有一台从站回复有特定识别码的讯息。主站节点也可能当作一个从站，回应自己发出的讯息。
因为所有的通讯都是由主站开始，不需要有碰撞侦测的方案。
主站和从站一般都是用单片机实现，不过为了节省成本、空间或是电源，也可以用特殊的硬体或是特殊应用积体电路来实现。
目前的应用会结合低价的LIN网路及小型感测器来建构小型网路。这些子系统之间可以用骨干网路连接（在汽车中可能是CAN）。

**简介**
LIN是低成本的串列通讯协定，可以有效支援车内网路的远程应用。
LIN特别适用在分散在汽车不同位置的机械式节点，也适用于工业应用。
LIN设计时是和CAN网路互补，组成车内的阶层式网路。
LIN Consortium是在1990代末期组成的，组成成员是五家欧洲车厂，以及明导国际（以前的Volcano车辆集团）及飞思卡尔（之前的摩托罗拉，现在已并入恩智浦半导体）。
新的LIN规范中，第一个完全实现的版本是在2002年11月发布的LIN 1.3版。在2003年9月提出了2.0版，扩充了组态能力，以及额外的诊断机能以及工具介面。
协定的主要特点如下：
*单一主站，最多16个从站（没有总线仲裁的过程）。这是LIN Consortium强调的特点，以达到确定性的时间反应。
**从站节点位置侦测（Slave Node Position Detection、SNPD），可以在送电后才指定节点的位址。- 单线通讯，在长度40公尺时，可以到19.2 kbit/s。在LIN规范2.2中，速率最高可到20 kbit/s。- 可确保的延迟时间。- 可变长度的资料页框（2, 4及8位元组）。- 可变动的组态。- 多播接收的时间同步。设备电路的时脉不需非常准确。不需要晶振（crystal）或是ceramic resonator。- 资料检查码以及错误检测。.- 可以检测故障的节点。- 以标准UART/SCI（串列通讯介面）为基础的电路，低成本的方案。- 可以建立阶层式的网路- 工作电压为12 V。
资料是透过可变长度，固定格式的讯息来在网路上传播。
主站会送出标头（header）资料，其中包括同步间隔（Synchronization break）信号，之后是同步栏位以及识别符（ID）栏位。从站回应资料页框（frame），其中包括2个、4个或8个位元组的资料，再加上3个位元组的控制资讯。

**LIN讯息页框**
讯息包括以下的栏位：- 同步间隔（Synchronization break）- 同步位元组- 识别符（ID）位元组- 资料位元组- 检查码位元组

**页框种类**
# 无条件页框（Unconditional frame）：识别符会在0到59(0x3b)之内。会带有讯号，所有无条件页框的收听节点都要接收此页框，若没有错误的话，其应用程式需处理对应的内容。
# 事件驱动页框（Event-triggered frame）：其目的是增加LIN节点的反应能力，不需要为了偶尔出现的讯号而用轮询的方式向各节点确认，消耗网路的频宽。无条件页框的第一个位元组需和某个事件驱动页框的保护识别符(PID)相同。从站只有在其数值变化时才需要回应对应的无条件页框。若没有节点回应，该页框的剩余时间没有信号，会忽略该标头资料。若不止一个节点回复，此页框时间会出现资料碰撞，主站需处理碰撞的情形，在下一次提出事件驱动页框前需要先请求所有相关的无条件页框。
# 偶发页框（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为基础的低成本、单线网路。
以现今的汽车网架构来看，会使用有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主站的稳定时脉来源来决定，最小的单位是1bit time（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）。
回应间隔（RESPONSE SPACE）: 是识别符栏位和LIN回应讯息中第一个位元组之间的间隔时间。当特定的LIN页框(标头及回应)由LIN主站传送完毕，LIN主站会用完整的回应间隔间来计算何时要再送出回应资料。若回应是由另外一个LIN从站送出，主站及从站点会在其逾时时间的计算上，各自处理50%的回应间隔。- 若识别符（IDENTIFIER）让一个LIN从站(Slave Node)传送回应讯息，此识别符称为Rx识别符。若识别符让LIN从站送出任务讯息，此识别符称为Tx识别符。- 在一个页框时间内，只允许一个从站传送回复资料。- ID=0x3c~ 为特定用途，请参考 #页框种类 说明。- 标头（header）必定由Master Node 发起。

**回应**
回应是由LIN从站任务产生（可能是从站，也可能是主站的从站任务），分为资料及校验和。
资料: 回应的从站可以送零个到八个位元组到网路上，资料数量由应用程式设计者决定，对应LIN从站应用程式中相关的资料。
检查码（CHECKSUM）: LIN有二种检查码模式：一种检查码只包括资料栏位（V1.3 之前的规范），又名classic checksum；另一种也包括识别符（V2.0之后的规范)，又名enhanced checksum。由应用程式的设计者事先定义要用的检查码模式。- 诊断讯息(ID=0x3C & 3D)使用classic checksum- 回应 Tx识别符的 又称为 Publisher 或 Sender，发布者，传送端，寄件者。- 回应 Rx识别符的 又称为 Subscriber 或 Receiver，订阅者，接收端，收件者。

**从站节点位置侦测试（SNPD）或自动定址**
从站节点位置侦测试（Slave node position detection, SNPD）或自动定址（autoaddressing）的技术可以侦测LIN网路上各从站节点的位置顺序，并给予节点不重复的节点位址（unique node address、NAD），好处是可以让同一类或是类似的设备可以直接连接到网路，不需要另外修改程式
限制：- 所有需要自动定址的从站，需要在同一条网路线上（若是不需要自动定址的标准从站，接线就不受限制）。

**外部接线菊花链**
外部接线菊花链（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网路中的位址是透过NAD（Node ADdress、节点位址）来实现，NAD是PID（protected identifier、受保护识别码）的一部份。NAD的值有7位元，其范围从1到127 (0x7F)

**开发工具**
在开发LIN网路或是除错时，硬体讯号的检查格外的重要。逻辑分析仪及bus analyzer可以搜集、分析、解码通讯讯号并加以储存，方便开发及除错使用。

**相关条目**
 List of network buses- SAE J3068（LIN-CP）

**参考资料**

**外部连结**
  LIN Consortiumdate=20210126031026  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 examplesdate=20200911132408 -  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 analyzerdate=20200911132301 -  Open source Arduino based platform with LIN connectivitydate=20201130134022 -  A free online LIN checksum calculatordate=20201030093224