一种基于单片机的车辆虚拟仪表数据采集系统设计
表1 SFR功能简述

CAN控制器初始化(图4)是CAN通信中一个非常重要的子程序,程序是否合理将直接影响整个通信过程。CAN控制器的初始化首先必须通过置位 CAN控制寄存器的"复位请求"位,置位"复位请求"并不影响正在进行的一个收发作业,特别需要注意的是,只有当复位请求被置位时,CAN内部地址为 4-8的寄存器方可被访问,在复位操作结束后必须将该位置0以保持所进行的设置并使CAN返回工作状态。

图4 CAN通信中一个重要的子程序
P80C592和其在片CAN控制器都具有中断寄存器,必须注意两者的区别。CAN中断子程序(图5)首先读CAN中断寄存器(IR)以判断中断类型,据此转入相应的操作。如果接收缓存器满而另一个报文的首字节又需要被存储时,数据超限位被置位,此时应清除超限并释放接收缓存,然后重新发送数据请求。在数据接受子程序中当数据被转入RAM区后,应及时释放接受缓存器,以便为接收下一帧数据做好准备。

图5 CAN中断子程序
数据发送子程序见图6.CAN控制器向总线发送数据时,首先将在片主RAM中数据存放的首地址写入CANSTA,然后读取CANSTA.6的值(读 CANSTA的操作其实是对CAN控制器内部状态寄存器的读操作,CANSTA.6是错误显示位,当至少有一个总线错误计数器计数达到CPU告警极限时,该位将被CAN控制器置位。),若检测出错,则执行CAN初始化子程序,若正常,则继续检测接收状态和发送缓冲器状态,若发送条件满足则在CANADR中写入发送缓存器地址并置位DMA控制位,DMA传送随即被启动,数据场由RAM拷贝到发送缓存器,置发送请求位后数据开始发送。
4 结语
用高性能的P80C592和AD1674A数据采集模块组成车辆环境数据采集系统具有较高的性价比,目前该系统已投入试用阶段,运行状况良好。 CAN总线非常适合分布式控制或适时控制的串行通信网络,本课题只涉及了数据采集,如果在此基础上扩展车辆辅助控制和重要数据备份功能,系统将会有更广阔的应用前景。
评论