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

时间:2010-04-26来源:网络

图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总线有效补充的初衷。

1 2

关键词: LIN 有限状态机 总线 中的应用

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版