我是靠谱客的博主 震动树叶,最近开发中收集的这篇文章主要介绍LIN通讯LIN通讯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LIN通讯

一、LIN通讯的背景与意义

随着汽车电子的发展,汽车上的电子零件正在逐渐地增加。而电子零件的增加也导致更多的设备(传感器、执行器、电子控制器)需要加入汽车的局部网络,这些零件的增加还会带来配线的增加,增加的配线除去会导致更高的材料费的同时,还会增加配线本身因接触不良导致的电子故障,从而印象汽车整体的品质与可靠性【1】。

img

而局域网多点通讯可以极大的解决这个问题。以高效安全而闻名,目前被汽车电子广泛应用,甚至也辐射到其他产业当中,越来越被大家多信赖和使用的CAN通讯,就是局域网多点通讯。

上面也有提到,除去一些电子控制器(如动力系统、底盘系统等),还有诸多的传感器和执行器,他们往往不需要那么高效的通讯方式,成本才是他们需要考虑的问题。

为了在兼顾系统通讯的同时,尽量减少成本,LIN通讯则应时而生。他和CAN通讯一样,可以进行局域网多点通讯,同时和CAN两个差分信号不同的是,LIN通讯仅需一根通讯线,极大地减少了配线的数量以及配线带来的安全隐患问题。

img

二、LIN通讯概括

1.LIN通讯介绍

LIN(Local interconnect Network)是一种低成本的串行通讯网络,用于实现汽车中的分布式电子系统控制。LIN 的目标是为现有汽车网络(例如CAN 总线)提供辅助功能,因此LIN总线是一种辅助的总线网络。在不需要CAN 总线的带宽和多功能的场合,比如智能传感器和制动装置之间的通讯使用LIN 总线可大大节省成本【2】。

2.LIN通讯特性

​ 低成本:基于通用UART 接口几乎所有微控制器都具备LIN 必需的硬件;

​ 强应用:极少的信号线即可实现国际标准ISO9141 规定;

​ 高速率:传输速率最高可达20Kbit/s;

​ 高效率:单主控器/多从设备模式无需仲裁机制;

​ 低成本:从节点不需晶振或陶瓷震荡器就能实现自同步,节省了从设备的硬件成本;

​ 高安全:保证信号传输的延迟时间;

​ 方便性:不需要改变LIN 从节点的硬件和软件就可以在网络上增加节点;

三、LIN通讯操作概念

1.主机和从机

LIN机群由一个主机任务和若干个从机任务组成。主机节点同时包含主机任务和从机任务。其他所有节点只包含一个从机任务【3】。
在这里插入图片描述

LIN 的拓扑结构为单线总线,应用了单一主机多从机的概念。【4】

2.帧

帧(Frame)由一个帧头(由主机任务提供 Header)和一个帧响应(由从机任务提供 Response)。

其中,由主机任务进行帧头的发送,而从机任务用帧响应来补充帧头从而形成完整的一帧。【5】
在这里插入图片描述

2.1 帧头

帧头包括同步间隔场(Break)、同步场(Synch)和标识符场(PID)三个部分。

img

2.1.1 Break

间隔场不同于其他场,它有意的造成UART通讯中的FramingError(从起始位到第十位没有检测出停止位时的错误)来提示LIN总线中的所有节点之后要开始进行LIN报文的传输了。【6】故而间隔场是用来标识一个新帧的起始点。间隔场是一个至少由13bit的显性值,包括起始位、间隔定界符等等。
在这里插入图片描述

2.1.2 Synch

同步场是为了修正各个从机任务节点间时钟的误差。是一个数据值为0x55的字节场。各个从机任务根据最初和最终的下降沿除以8来计算出1bit的时间,并以此作为基准来调整自己的时钟误差。

img

2.1.3 PID

标识符场表示LIN报文识别信息,由6位(bit0-bit5)的报文ID和2位(bit6-bit7)的奇偶校验和构成。

img

标识符(ID)有6bit,其值的范围是0-63。标识符可以分为以下四类:

载波帧的值,其值范围是0-59(0x3b);

60(0x3c)和61(0x3d)可用来载运诊断数据;

62(0x3e)专门用于用户定义的扩展部分;

63(0x3f)专门用于以后的协议改进。

2.2帧响应

帧响应由数据场和校验和场组成。

2.2.1 数据场

帧可以携带1-8byte的数据。对拥有指定标识符的帧来说,其包含的字节的数量应与发布服务器和所有认购器保持一致。

数据是在字节场中进行输送。
在这里插入图片描述

对于超过1个byte的数据来说,LSB被包含在第一个被发送的字节里面,而MSB则被包含在最后一个被发送的字节里面(小头)。
在这里插入图片描述

2.2.2 校验和场

帧的最后一个场是校验和(checksum)。校验和段是对帧中所传输的内容进行校验,校验和分为标准型校验和(Classic Checksum)及增强型校验和(Enhanced Checksum)。采用标准型校验和还是增强型校验和由主机节点管理,从机节点根据帧ID来判断采用哪种校验和。标准校验和只保护数据段,增强型校验和同时保护数据段和帧ID段。【7】

3.数据输送

一个帧可以输送两种类型的数据:信号和诊断报文。

3.1 信号:

信号指的是标量值或者字节数组。这些标量值或字节数组打包后放入帧的数据场里面。对所有拥有相同标识符的帧来说,一个信号在数据场内的位置总是一样的。

3.2 诊断报文:

诊断报文的输送是在具有两个保留标识符的帧里面完成的。数据场的判读取决于数据场本身以及通讯节点的状态。

4.进度表

(处于主机节点的)主机任务会根据进度表输送帧头。进度具体规定了每个帧头的标识符以及一个帧与一下个帧之间的间隔。主机应用可以使用不同的进度表,并在他们之间进行挑选。

四、LIN通讯协议规范

1.信号管理

信号是在帧的数据场里面输送的。多个信号可以打包成一个帧,只要这些信号彼此之间不会相互重叠。但是他们要由机群里面的同一个节点写入。

1.1 信号类型

信号由标量值和字节数组两个类型。

1.1.1 标量值

标量值可以穿过一个字节的最大界限,可以有1-16bit组成。1bit的标量信号被称为bool信号,其余标量信号被称为unsigned整数。

1.1.2 字节数组

字节数组内的每个字节应形成一个单帧字节。

1.2 信号一致性

标量信号的写入或者读取必须是[原子操作](原子操作 - 搜索 (bing.com))。也就是说应用程序无法接受一个部分被更新的信号值。不过,信号与信号之间或一个字节数组内的字节之间无需坚持一致性。

1.3 信号打包

信号会最先通过LSB进行发送,最后才是MSB。

2.帧的转移

在LIN总线上及逆行传送的实体就是帧。

帧的发送时间是每个字节发送时间的总和,再加上响应间隙时间和字节间隙时间。

2.1 帧结构

在这里插入图片描述

2.1.1 帧槽

每个预定的帧会在总线上分配一个槽。槽的间隙时间必须足够长,以便能够在最糟的情况下装载帧。

2.2 帧的类型

LIN总线上数据传输包括四种不同的帧,分别为无条件帧、事件触发帧、偶发帧、诊断帧。

无条件帧

帧ID0-59。无条件帧(Unconditional Frame)是具有单一发布节点,无论信号是否发生变化,帧头都无条件应答的帧。无条件帧在主机任务分配给他的固定帧时间隙中传输。总线上一旦有帧头发送出去,必须有从机作应答。

事件触发帧

帧ID0-59。事件触发帧(Event-triggered Frame)是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化(事件)时使用的帧,当存在多个发布节点时,通过冲突解决进度表(Collision Resolving Schedule)来解决冲突。当从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。同一个 PID的事件触发帧进和无条件帧对应的第一个字节数据是相同的,从机只有在自身数据变化时才发送应答,当总线上没有任何从机应答时,该帧的应答部分为空。如果总线上有超过一个从机应答,则发生冲突,主机则通过发送无条件帧轮询所有从机,解决冲突的问题。

图14示例事件触发帧的进度表。图上半部分表示无冲突时的情况,主机发送事件触发帧,只有从机 1信号发生变化,因此在总线上发送应答(Event A);图下半部分表示有冲突时的情况,主机发送事件触发帧,从机 2 和从机 4 信号都发生变化,因此都向总线上发送应答,从而产生冲突,这时候主机执行冲突解决进度表,通过发送无条件帧轮询所有从机,从而依次读取从机 2 的 Event B 和从机 4 的Event D。
在这里插入图片描述

偶发帧

帧ID 0 ~59。偶发帧(Sporadic Frame)是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。偶发帧主要用于主机发送不经常变化的信息,可以理解为主机用的事件触发帧。与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。

偶发帧的传输可能出现 3种状况:

  1. 当关联的无条件帧没有信号发生变化时,该时隙保持沉默,主机节点连帧头都不需要发送;
  2. 当其中一个关联的无条件帧包含的信号发生了变化, 则发送该关联的无条件帧的应答部分,如图15上半部分所示;
  3. 如果有两个或以上关联的无条件帧包含的信号发生了变化,则按照事先规定好的优先级,优先级较高的关联的无条件帧获得发送权,优先级较低的要等到下一个偶发帧的帧头到来时才能发送应答。由于主机节点是唯一的发布节点,所以主机节点事先就知道各个关联信号的优先级别,这样在传输时不会产生冲突,如图下半部分所示

引入偶发帧和事件触发帧是为了让LIN总线的通信机制更加灵活,只在信号变化或未变化时传输消息可有效提高总线的通信效率。
在这里插入图片描述

诊断帧

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断。诊断基于 SO 15765-2 传输标准和 ISO 14229UDS (Uniform Diagnostic Services)标准。主机请求帧的帧 ID = 0x3C,应答部分的发布节点为主机节点,一般用于诊断请求或配置从机;从机应答帧的帧 ID = 0x3D, 应答部分的发布节点为从机节点,一般为诊断应答。数据段规定为 8个字节,一律采用标准型校验和。诊断帧的帧头和应答方向如图所示。
在这里插入图片描述

3.状态管理

LIN总线的状态管理主要指网络的休眠和唤醒。协议规定从机 4 种状态:关机、初始化、运行和休眠。各个状态的切换关系如图17所示,在系统上电时从机在 100ms 以内完成初始化,随后从机自行进入运行状态。主机可以通过主机请求帧(帧ID = 0x3C)的 Go-to-Sleep 命令从机进入休眠状态(DAT0 = 0x00, DAT1-7 = 0xFF)。从机也可以在总线上没有活动后的 4 ~ 10s 内进入休眠状态。
在这里插入图片描述

主机和从机都可以唤醒整个网络,唤醒为持续时间 250us ~ 5ms 的显性信号,所有节点在检测到唤醒信号后旋即退出休眠状态,进行初始化,最长在 100ms 后进入运行状态。如果节点发送出唤醒信号后,在150 ~ 250ms 内没有接收到总线上的任何命令(帧头),则可以重新发送一次唤醒。唤醒信号最多可以发送 3 次, 3 次之后,必须等待至少 1.5s 之后才可以再次发送唤醒。图示意LIN总线的唤醒流程。
在这里插入图片描述

参考文章:

【1】[LIN通信入门(一) - 知乎 (zhihu.com)](https://baike.baidu.com/item/LIN总线/5335927);

【2】LIN总线_百度百科 (baidu.com)

【3】lin 2.0规范 - 道客巴巴 (doc88.com)

【4】LIN 总线协议详解1(LIN总线拓扑)_dailbing的博客-CSDN博客

【5】Lin总线概述及入门_冯子同学的博客-CSDN博客

【6】lin总线通信_好活懒人的博客-CSDN博客_lin通信

【7】LIN Bus – 第22条军规 (wangdali.net)

最后

以上就是震动树叶为你收集整理的LIN通讯LIN通讯的全部内容,希望文章能够帮你解决LIN通讯LIN通讯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部