新闻中心

EEPW首页>汽车电子>设计应用> 基于有限状态机在LIN总线开发中的应用

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

作者: 时间:2010-04-26 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/197687.htm

图3 软件流程图

帧以间隔场起始的,- driver的起始状态为IDLE,此时state=idle。间隔场是一个13位0的场,引起接收中断同时置位UART模块的frameerror位,在UART接收中断服务程序中,判断接收到的数据为0x00且frameerror标志位为1时,便认为接收到了间隔场,这时driver从 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有效补充的初衷。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭