微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 汽车网络LIN总线协议分析

汽车网络LIN总线协议分析

时间:05-09 来源: 点击:

作。CAN总线可能用在整个汽车内来实现通信,而LIN总线仅用在汽车的局部电路内,如车门。为了连接两种总线,需要采用CAN-LIN协议接口节点,该节点从LIN总线节点收集信息然后传送到CAN总线上。

低功耗睡眠模式

主节点通过发送标识码0x80指示所有节点进入睡眠模式,睡眠命令后面跟随的数据字节的内容没有定义。收到睡眠命令的从节点应当对本身进行设置,以便当总线发生改变时能唤醒,并关闭自身的电压以使电流消耗最低。当处于睡眠模式时总线将处于高电平并且不消耗电流。

任意一个节点都可以通过发送唤醒信号来唤醒总线。当收到唤醒信号后,一般情况下所有的节点应当激活并等待主节点开始总线轮询。

硬件示例

图3给出了有两个按钮和三个LED组成的硬件示例。每按动十下按钮1 LED1改变一次状态。同样,每按动十下按钮2,LED2改变一次状态。作为标识为ID1的响应,按钮的按动次数被传送到总线上。作为标识为ID4的响应,按钮的按动次数的刷新被传送到总线上。

软件操作

LIN协议程序工作在由RB0触发的中断下以实现总线的睡眠/唤醒。在触发中断时,程序对低电平数据位的长度进行计数,然后读同步字节并确定数据位时间,最后再将其与最初的数据位时间进行比较,以确定最初的低电平时间是否大于10个数据位的时间,大于10为同步中断,小于10为唤醒信号。如果是唤醒信号,程序退出并继续等待同步中断;如果是同步中断,程序就读取命令字节,检查奇偶位并检查动作表(action table)来确定接下来的动作。动作表定义了总线上数据的来源或目的地。

为了初始化LIN协议的从节点句柄(Slavehandler),用户必须调用InitLinSlave程序,这个程序初始化RB0中断引脚和TMR0寄存器。TMR0寄存器用来测量数据位的长度并生成波特率。初始化完成之后,用户可以执行自己的程序。一旦检测到RB0引脚上的下降沿,用户程序就将被中断。当检测到下降沿时,程序就跳转到中断服务程序。必须禁止除了TMR0和RB0中断之外所有的中断源,以便对同步字段进行精确测量。计算出波特率之后,中断服务程序就退出执行。

在下一次RB0中断发生时,LIN协议Slavehandler自动进入接收模式,以接收标识字段或数据字节。如果检测到标识字段的起始位,就对标识字段进行接收和解码。然后,根据收到的标识执行相应的代码,例如存储数据或点亮LED。总线上一个帧传输完成之后,标志FCOMPLETE被置位。这个标志指示所有的数据都已正确接收完毕并可以进行后续的处理。此标志由用户固件清除。

LIN协议从节点句柄Slavehandler最高可以工作在20K的波特率下,需要420字的程序存储空间以及23字节的数据存储空间。

由于其低成本,LIN协议具有在汽车应用中广泛采用的潜力。可以使用内置的RC振荡器并且运行在4MHz的时钟频率下的诸如Microchip的各种器件的微处理器,使得设计师们能以最低的可能成本设计应用系统

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top