基于LIN2.1协议的车窗控制系统的应用
LIN协会于1999年发布了第一版LIN协议,至今已有十几年了,在这十几年中,LIN总线不断发展,已经在以车身控制为主的许多场合得到了应用。LIN总线至今一共有7个版本,其中,LIN2.1协议于2006年11月发布,是目前较新的一个版本。它与最新的 LIN2.2协议几乎没有区别,却比它的前身LIN2.0协议有明显的改进,主要体现在加入了事件触发帧的竞争处理、完善了节点配置功能和进行了诊断分级三个方面。这些改进使用户可以更加方便和快速地组织LIN网络,可以根据自己的需求重新设置LIN网络,既保证了产品的稳定性,又满足了用户的个性化需求,是LIN总线自身发展过程中很有意义的一步。
1 LIN2.1协议的新特点
1.1 事件触发帧的竞争处理
如果有多于一个的从节点在同一个帧时隙里响应帧头,就会导致竞争,竞争处理都是由主节点完成的。LIN2.0的事件触发帧竞争处理机制如图1所示。某主节点的进度表中有无条件帧A、事件触发帧和无条件帧B。当竞争发生后,主节点会继续按照之前的进度表,在接收完所有与事件触发帧相关的无条件帧后,再发送事件触发帧帧头。LIN2.1对此作出了改进,它引入了竞争处理进度表,LIN2.1的事件触发帧竞争处理机制如图2所示。每个事件触发帧都有与之相对应的竞争处理进度表,主节点在竞争处理进度表里处理完竞争后,再返回执行普通的进度表。显然,LIN2.1的竞争处理机制需要花费的时间较短。
图1 LIN2.0的事件触发帧竞争处理机制 图2 LIN2.1的事件触发帧竞争处理机制
1.2 节点配置功能的完善
1.2.1 新增分配一系列帧ID的功能
将配置功能分配帧ID改为分配一系列帧ID。LIN2.0和LIN2.1协议中分配帧ID的格式如图3所示。在LIN2.0中,只有NAD和 Supplier ID都匹配的情况下,分配才能成功,但每次只能分配一个帧ID。而在LIN2.1中,只需要NAD匹配就可以了,每次可以分配最多4个帧ID,而 LIN2.0中的Message ID在LIN2.1中已经被取消了。这种改进的目的是提高LIN网络配置的效率,更改后分配帧ID的速度最快可达到原来的4倍。
图3 LIN2.0和LIN2.1协议中分配帧ID的格式
1.2.2 新增保存配置的功能
LIN2.1协议新增了保存从节点配置信息的功能,将从节点的配置信息存入到掉电不易失的存储空间中。这样,主节点对从节点的配置在复位后也不会丢失。
1.3 诊断分级
LIN2.1的另一大新特点是根据诊断功能将从节点分为3个级别。
(1) 诊断一级
诊断一级一般应用于智能传感器或执行器等一些不需要或只需要很少诊断功能的器件。诊断一级支持所有节点配置功能,并且只需要单帧传输。
(2) 诊断二级
与诊断一级相比,诊断二级的节点增加了节点辨识的功能。例如,用户可以获得产品的软、硬件版本号等。此外,诊断二级还支持读写软件内部的参数,比如温度、车速等。诊断二级支持多帧传输。
(3) 诊断三级
诊断三级的节点不仅包含了前面两级的所有功能,还支持内部Flash的擦写,用户可以通过LIN总线烧写程序。诊断三级支持多帧传输。
2 LIN2.1协议的节点配置功能
(1) 分配NAD
为了避免某个NAD被重复使用,用户可能需要为从节点分配新的NAD。
(2) 有条件分配NAD
当用户替换或增加从节点时,可能会出现两种情况:
① 一种是用户不知道新增从节点的初始NAD,因此,必须以“广播”的方式寻找所有的从节点并分配有效的NAD(“广播”指的是给网络中的所有从节点发送请求,它有一个专用的NAD为0x7F)。但如果直接这样做,会导致所有的从节点获得同一个NAD,这显然是不允许的。为了避免这个情况,可以加入限制条件。
② 另一种是用户知道新增节点的初始NAD,但其和LIN网络中已有从节点的NAD重复了。如果用户只按照原始NAD分配新的NAD,则会导致两个从节点的NAD都被修改。因此,必须加入限制条件。
当从节点获得有条件分配NAD的请求后,将根据下面的步骤判断是否要修改NAD:
① 根据ID读取从节点的相关信息。
② 根据Byte提取相关信息中一个8位数据,例如Byte=1,则提取D1。
③ 与Invert进行异或运算。
④ 与Mask进行与运算。
⑤ 如果结果为0,则修改NAD。
例如:本产品被新增到一个LIN网络中,初始NAD为0x06,但网络中已有了一个NAD为0x06的从节点。于是,用户可以利用本产品的Function ID,假设为0x0000,分配新的NAD为0x08。这里假设已存在的从节点的Function ID不为0x0000。这样,只有新增节点的NAD会被修改,而已存在从节点的NAD维持为0x06不变。
(3) 保存配置
保存配置是LIN2.1添加的新功能,用来将从节点的当前配置存入非易失的存储空间中,下次上电时可以读出配置数据,这里主要是保存NAD和帧ID。
(4) 分配一系列帧ID
这一功能可以配置最多4个帧ID,注意诊断帧ID和保留帧ID是不能配置的。
主节点的请求帧在D1中给出需要分配帧ID的第一个帧在帧数组中的序号,一般来说,从节点所用到的所有帧的ID会被排列成一个帧数组。如果要分配帧ID,则通过D2到D5给出新的帧ID;如果要禁止某个帧,则将这个帧对应的PID设为0x00;如果要继续使用现在的帧 ID,则将这个帧对应的PID设为0xFF。
(5) 读取从节点信息
读取节点信息根据D1中ID的值,可以读取不同的从节点信息。目前,只规定了ID为0和ID为1的情况,其他可保留或由用户自己确定。
3 LIN通信的实现
3.1 TLE9832的LIN模块
TLE9832是一款由英飞凌公司生产的8位功率级单片机,专门用于车窗控制。其中的LIN总线模块支持LIN2.1和LIN2.0,并向下兼容LIN1.3。该模块可以工作在普通模式、接收模式和禁止模式下。各个模式的特点如表1所列。
表1 TLE9832 LIN模块各个模式的特点
其中,普通模式又可根据传输速率的大小分为低速模式、中速模式、高速模式和Flash模式。低速模式的最大传输速率为 10.4 kbps;中速模式是普通的LIN传输模式,最大传输速率为20 kbps;高速模式的最大传输速率为40 kbps;Flash模式的最大传输速率为115 kbps。为了避免打断传输过程,在普通模式下禁止改变传输速率。正确的做法是先禁止发送功能,再改变传输速率,最后允许发送功能。
LIN模块在普通模式下还建立了一种自动省电机制。当发送队列中没有数据时,将自动禁止发送功能;当有发送请求时,将自动开启发送功能。
3.2 基于TLE9832的车窗防夹控制系统
基于TLE9832的防夹车窗控制系统是英飞凌同济微控制器与嵌入式系统实验室的最新研究成果。用户可以通过按键或者LIN总线控制车窗的上升和下降。基于 TLE9832的防夹车窗系统原理图如图4所示。可通过控制PWM信号控制电机的转速,而霍尔传感器TLE4966又会采集电机的转速并传送给 TLE9832,这样就构成了闭环控制。此外,电机的电枢电流在转化为电压信号后,被传送给TLE9832的ADC模块。如果车窗在上升过程中遇到不正常的阻力,电枢电流和电机转速都会发生异常的变化,TLE9832可以根据这种变化判断是否执行防夹算法,避免伤害乘客。
评论