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）或是陶瓷振荡器。
- 资料检查码以及错误检测。.
- 可以检测故障的节点。
- 以标准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主站会依照一个或是几个事先定义的I/O排程表，在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）。

回应间隔（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），好处是可以让同一类或是类似的设备可以直接连接到网络，不需要另外修改程式

限制：

- 所有需要自动定址的从站，需要在同一条网络线上（若是不需要自动定址的标准从站，接线就不受限制）。

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、受保护识别码）的一部分。NAD的值有7位元，其范围从1到127 (0x7F)

## 开发工具

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

## 外部链接

- 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