四、系统软件设计
图 2 所示为仪表板主程序的软件流程图,程序由点火信号控制,当点火开关打开时,仪表系统进入主程序循环。整个系统软件由主程序、数据采集子程序、A/D 转换子程序、数据处理子程序、CAN 通讯子程序、LCD/LED 显示子程序、步进电机工作子程序等组成。
在主程序中重点设计 CAN 通信模块。CAN 通信主要包括三个部分:CAN 初始化、CAN 数据发送、CAN 数据接收。
(1)CAN 初始化
CAN 初始化就是对控制芯片进行初始化,并设置相应的通信参数。控制芯片的初始化应在复位模式下进行,所以在初始化程序中首先要将工作方式置为复位模式,之后要设置验收滤波方式、验收屏蔽寄存器(AMR)和验收代码寄存器(ACR)、波特率参数和中断允许寄存器(IER)等。初始化设置完成后,将复位请求位置“0”,控制芯片就可以进入工作状态,执行正常的通信任务。
(2)CAN 数据发送
数据从 CAN 控制器发送到 CAN总线是由 CAN 控制器自动完成的。发送程序只需把发送的信息帧送到CAN 的发送缓冲区,启动发送命令即可。在发送报文时,发送缓冲区对写操作是锁定的,这样 CAN 微控制器必须查询状态寄存器的发送缓冲区状态标志 TBS,以确定是否可以将新的报文写入发送缓冲区。CAN 报文的发送采取的是查询方式。
(3)CAN 数据接收
数据从 CAN 总线到 CAN 接收缓冲区是由 CAN 控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息帧即可。CAN 报文的接收也是通过查询方式完成的。接收子程序负责节点报文的接收以及其他情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线关闭、错误报警、接收溢出等情况进行处理。控制芯片报文的接收主要有 2 种方式:中断接收方式和查询接收方式。2 种接收方式的编程思路基本相同,如果对通信的实时性要求不是很强,建议采用查询接收方式。
五、结束语
本文研究了汽车仪表在控制局域网中的应用。在整个汽车仪表系统中,数据信息通过控制局域网传输,既能达到信息资源共享,又能减少传感器和连接器,同时传输效率提高,使控制更加智能和精确。