局域互联网(LIN)是一种低成本的嵌入式网络标准,用于连接智能设备。LIN最常见于汽车工业。
1. LIN概述
局域互联网(LIN)总线是为汽车网络开发的一种低成本、低端多路复用通信标准。虽然控制器局域网(CAN)总线满足了高带宽、高级错误处理网络的需求,但是实现CAN的软硬件花费使得低性能设备(如电动车窗和座椅控制器)无法采用该总线。若应用程序无需CAN的带宽及多用性,可采用LIN这种高性价比的通信方式。用户可在最先进的低价位8位微控制器中嵌入标准串行通用异步收发器(UART),以相对廉价的方式实现LIN。
现代汽车网络包含各类总线。例如,在主体电子设备的低成本应用程序中使用LIN,在主流动力系统和车身通信中使用CAN,而在先进系统(如主动悬挂)中的高速同步数据通信中使用新兴的FlexRay总线。
LIN总线采用主/从方法,包含一个LIN主方和一个或多个LIN从方。
图1. LIN消息帧
消息标题包含一个中断(用于标记帧的开始)和一个同步字段(供从节点同步时钟)。标识符(ID)包含一个6位消息ID和一个2位校验字段。ID表示特定的消息地址,而非目标。接收并解码ID后,从方开始消息响应,该消息响应包含1至8字节的数据以及一个8位校验和。
主方控制消息帧的排序,该排序在调度中是固定的。用户可按需改变该调度。
LIN标准更新过多个版本。1.3版本最终确定了字节层通信。2.0和2.1版本新增了更多消息规范和服务,但仍与LIN 1.3版本的字节层兼容。
API对该功能不提供原生支持,但用户依然可实现该功能。
表1. LIN 1.3、2.0及2.1版本对比
2. LIN帧格式
LIN总线是一种轮询总线,带有一个主设备和一个或多个从设备。主设备同时包含一个主任务和一个从任务。每个从设备仅包含一个从任务。LIN总线上的通信完全由主设备上的主任务控制。LIN总线上传输的基本单位是帧,每帧又分为标题和响应。标题总是通过主节点传输,包含3个不同的字段:中断、同步(sync)及标识符(ID)。响应通过从任务传输,可位于主节点或从节点中,包含一个数据载荷及一个校验和。
通常,主任务通过传输标题,在循环中轮询每个从任务。该标题包含一个中断-同步-ID序列。启动LIN之前,每个从任务被配置为根据接收到的标题ID向总线发布数据或从总线订阅数据。一旦收到标题,每个从任务将验证ID校验,并检查ID,以决定选择发布或订阅。若从任务需要发布响应,将向总线传输1至8数据字节,后接1个校验和字节。若从任务需要订阅,将从总线读取数据载荷和校验和字节,并采取适当的内部动作。
对于标准从至主通信,主方广播标识符至网络,仅有一个从方响应数据载荷。
主至从通信伴随着一个主节点中的独立从任务。该任务自我接收发布至总线的全部数据,并以独立从节点的方式响应。为了传输数据字节,主方必须首先根据需要传输的数据值,升级其内部从任务的响应。接着,主方将发布合适的帧标题,内部从任务传输其数据载荷至总线。
图2. LIN消息帧
1. 中断
每个LIN帧都以中断作为开始,包含13个显性位(额定),后接一个1位(额定)隐性中断分隔符。中断的作用是将帧的开始通知给总线上的所有节点。
2. 同步
同步字段是主任务在标题中传输的第二个字段。同步被定义为字符x55。同步字段允许进行自动波特率检测的从设备测量波特率周期,并调节其内部波特率,与总线进行同步。
3. ID
ID字段是主任务在标题中传输的最后一个字段。该字段识别网络上的每条消息,并最终决定由网络中的哪些节点接收或响应每个传输。所有从任务连续监听ID字段、验证其校验,并决定其是否是该特定标识符的发布者或订阅者。LIN总线一共能提供64个ID。ID 0~59用于信号携带(数据)帧,60和61用于携带诊断数据,62预留给用户自定义扩展,63预留给未来协议升级。ID作为一个受保护的ID字节通过总线传输,低6位包含原始ID,高2位包含校验。
表2. 校验计算方法
4. 数据字节
从任务在响应中传输数据字节字段。该字段包含1至8字节的载荷数据字节。
5. 校验和
从任务在响应中传输校验和字段。LIN总线采用2个校验和算法之一,以计算8位校验和字段中的值。经典校验和的计算方法是单独累加数据字节,而增强校验和的计算方法则是累加数据字节及受保护的ID。
LIN 2.0规范将校验和的计算过程定义为:累加所有值,且当总和大于等于256时减去255(与modulo-255或modulo-256不同)。根据LIN 2.0标准,经典校验和用于LIN 1.3从节点,而增强校验和用于LIN 2.0从节点。该规范进一步规定,ID 60~63应该总是使用经典校验和。NI LIN接口允许设置校验和类型为经典或增强。默认设置为经典。根据LIN 2.0规范,无论如何设置校验和属性,ID 60~63总是使用经典校验和。
图3显示了主任务标题和从任务响应如何组合成一个完整的LIN帧。
图3. 创建LIN帧
3. LIN总线定时
由于LIN总线是轮询总线,处理每帧分配的额定时间槽如下:
THeader_Nominal = 34 * TBit
TResponse_Nominal = 10 * (NData + 1) * TBit
TFrame_Nominal = THeader_Nominal + TResponse_Nominal
处理每帧分配的最大时间槽如下:
THeader_Maximum = 14 * THeader_Nominal
TResponse_Maximum = 1.4 * TResponse_Nominal
TFrame_Maximum = THeader_Maximum + TResponse_Maximum
4. LIN拓扑结构及行为
LIN总线连接一个主设备(节点)和一个或多个从设备(节点),成为一个LIN簇。对应的功能文件描述了该节点的行为。节点功能文件输入系统定义工具,生成LIN描述文件(LDF),描述整个簇的行为。系统生成器解析LDF,自动生成目标节点中的特定行为。此时,按照LDF中指定的方式,主节点主任务开始在总线上传输标题,簇中的所有从任务(包括主节点自己的从任务)开始响应。
总体来说,LDF用于配置及创建LIN簇的调度行为。例如,LDF定义了波特率、主任务传输标题时的顺序及时间延迟,以及响应时每个从任务的行为。NI LIN硬件及用于LIN的NI-CAN帧API无法为LDF提供原生的完整支持,即用户无法下载调度行为至硬件。但是,硬件提供了访问总线的底层支持(写入标题及发布或订阅作为响应),用户可在应用程序层创建调度行为。正如在NI LIN响应输入帧类型的描述中所说,NI LIN硬件采用响应队列存储从任务响应。响应队列保留64个响应,与每个为LIN指定的(最多64个)ID一一对应。这将确保LIN接口的从任务可在LIN规范规定的响应时间内响应标题。
用于LIN的NI-CAN帧API可通过一种稳健的方式完成与LIN总线的底层交互。终端用户可使用基本功能,开发复杂应用程序,包括分析及原型化LIN网络。用于LIN的NI-CAN帧API无法为LIN诊断或配置、LDF或调度表提供原生支持。但是,用户可在采用用于LIN的NI-CAN帧API的应用程序中实现这些任务。
评论
查看更多