有限状态机在LIN总线开发中的应用

2008-02-17 22:28:36来源: 世界电子元器件
引言

随着汽车智能化程度的提高和迅 速升级换代的需要,汽车电子网络正在由集中式控制向分布式控制发展。LIN总线作为CAN总线的有效补充,以低速率和低成本的实现有效解决了分布式控制带来的成本增加问题。在笔者研制的车身分布式控制系统中,采用CAN总线和LIN总线连接各个控制单元,完成单元之间的数据交换,系统结构如图1所示。



图1 车身控制系统结构图

该车身控制系统包括车灯模块、车门模块、车内模块、控制面板模块和仪表盘模块,分别完成对相应负载的控制和监测,同时通过CAN总线完成数据交换。其中车灯模块和车门模块基于CAN/LIN总线以分布式的形式实现。本文重点论述的是LIN协议的实现。

LIN协议分析和状态机的设计

有限状态机是由一组状态、一个起始状态、输入以及将输入与当前状态转换为下一个状态的转换函数所组成,它是一个特殊的有向图,包括一些状态节点和连接这些状态的有向弧。对特定的状态机而言,首先要建立一些有效的状态,然后设计相应的算法完成状态的转换。

一个完整的LIN帧由间隔场、同步场、PID、数据场以及校验和场组成,LIN协议驱动器要实现的便是依序完成间隔场和同步场的检测、ID的发送和接收、数据场字节的发送和接收,最后完成校验。状态机形式与LIN协议数据链路层规范的定义相吻合,可以通过建立相 应的状态来描述相应的场从而描述整 个 LIN帧,且可以通过监控当前状态 ,按照当前接收到的字节切换其 状态,从而以状态转换的方式依序完成各个场的发送和接收。设计以下几个状态:IDLE、BREAK、SYNBYTE、IDENTIFY、TRANCEIVE和 CHECKS UM,设置标志位state反映LINdriver的状态,idle,pendin g,succe ss,当处于LIN正确通讯的中间状态时,state=pending,当LIN通讯失败,state=idle,当完成一次完整的LIN通讯,state=success。

状态的监控和转换是在UART接收中断服务程序中实现的。因为LIN总线采用单根线通信,UART外接LIN物理层收发器,所以当UART发送的总线数据和接收到的总线数据一样时,UART接收到的数据便是UART发送的数据,在接收中断服务程序中完成状态转换算法,如图2。通过判断当前状态和接收到的数据切换LINdriver的状态,同时更新标志位。


图2 LIN协议状态机

软件设计

软件设计流程如图3所示。首先进行初始化,主要包括UART模块的初始化和I/O脚初始化,设置波特率,使能接收中断,设置LIN物理层收发器相应I/O脚方向及电平,然后在UART接收中断服务程 序中以状态机的形式完成LIN通讯。下面结合LIN帧结构和LINdriver的状态转换对该状态机算法进行阐述。



图3 软件流程图

LIN帧以间隔场起始的,LIN- driver的起始状态为IDLE,此时state=idle。间隔场是一个13位0的场,引起接收中断同时置位UART模块的frameerror位,在UART接收中断服务程序中,判断接收到的数据为0x00且frameerror标志位为1时,便认为接收到了间隔场,这时LINdriver从IDLE切换到BREAK,state=pending。

同步场是一个0x55的字节,当前状态为BREAK时,如果接收到的数据为0x55,LINdriver切换为SYNBYTE,state=pending保持不变,否则切换为IDLE,state=idle;

PID是带奇偶校验的ID,它以低6 位 ID0-ID5表示ID,高两位P0、P1是对 该ID的奇偶校验,当前状态为SY NBYTE时 ,收到的数据便为PID。首先按照奇偶校验算法对PID进行校验,校验通过再按照应用层协议对该PID进行过滤,过滤成功则LINdriver切换为TRANCEIVE,校验失败或者过滤失败则LINdriver返回IDLE,state=idle;

当前状态为TRANCEIVE时,接收到的数据便是数据场中字节,当数据接收完毕,LINdriver切换为CHECKSUM。当前状态为CHECKSUM时,接收到的数据便为校验和场,校验成功,便置state=success, 表示成功地完成了一次LIN通讯,这时数据场中的数据是有效的,可以用于应用程序;校验失败表示LIN通讯失败,数据场中数据无效。

结语

本文针对普通单片机,借助于其片上UART,以状态机的形式实现了LIN协议驱动,降低了LIN的实现成本,运行可靠稳定,符合LIN总线以低成本作为CAN总线有效补充的 初衷。

关键字:LIN总线

编辑:吕海英 引用地址:http://www.eeworld.com.cn/designarticles/car/200802/article_17708.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LIN总线

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved