LM3S2948型微控制器完成信号处理。它是一款基于ARM CortexM3内核的微控制器,采用32位RISC,内嵌CAN控制器、A/D转换器、模拟比较器、I2C接口等功能模块,极大降低了外围电路设计成本。LM3S2948微控制器具有运算速度快、功耗小、体积小、价位低等特点。LM3S2948的CAN控制器模块支持CAN 2.0B协议,支持符合SAE J1939协议的扩展帧的报文传输,其传输速率可编程设置为1 Mb/s,这些特性完全满足CAN总线汽车数字仪表的应用要求。采用移位寄存器74HC595实现信号的串入并出,采用步进电机驱动器VID6606驱动表针。每片VID6606可同时驱动四路步进电机。在其频率控制端输入脉冲序列F(SCX),即可控制输出端使步进电机的输出轴以微步转动,每个脉冲对应电机输出轴转动1/12°,最大角速度可达600°/s,满足汽车仪表指示的高精度、快速响应的要求。表针采用步进电机VID一29驱动。图3为VID6606驱动仪表电路。LCD驱动器采用PCF8566,其内部集成LCD驱动器所必需的功能电路。能直接驱动任意静态或包含4背极高达24段的LCD。中央处理器发送的信号先经PCF8566T功率放大后,然后送至液晶屏F2000LCD显示。
3.2 软件设计
该汽车数字仪表系统软件采用IAR编程调试软件编写。该软件通过LM一LINK调试仿真器与LM3S2948的JTAG端口连接,实现在线仿真调试。
数据接收处理软件首先初始化系统时钟、CAN节点、LCD液晶屏、步进电机等,并使能CAN中断,设置CAN屏蔽码和验收码。初始化CAN节点的具体步骤:①封装CAN节点相关信息,创建一个软件CAN节点结构体指针pCAN_Node_lnfo;②初始化CAN控制器;③中断CAN控制器;④设置CAN节点接收过滤。初始化后,读取CAN总线和其他传感器信号。控制步进电机和液晶屏显示处理数据。等待CAN总线接收中断产生,判断总线数据是否满足屏蔽条件,即逐位比较接收的29位标识符报文与验收码、屏蔽码值,屏蔽码用于定位相关位(0=相关,1=不相关)。只有标识符中的相关位与验收码相应位相同,系统才接收报文。如满足屏蔽条件则从寄存器读取数据并存入缓存区,再根据SAE J1939协议判断计算发动机转速、水温和故障代码信息,传输至步进电机和液晶屏显示。例如:接收的数据为:OCF00400 XX XX XX 4F 55 XX XX XX(XX为任意数据),若设置验收码为Ox00000000,屏蔽码为0xlFFFFFFF,则接收该报文。根据SAEJl939—71协议,此报文为:PGN61444一电子发动机控制器。因此,可得第4,5字节为发动机转速,并遵循低位在前,高位在后的传输方式,则发动机转速=原始数×分辨率+偏移量=21 831x0.125+0=2 728.875 r/m。同理可计算其他汽车仪表所需数值。图4为CAN总线数据接收程序流程图。
4 结语
在研究了汽车CAN总线通讯协议及SAE J1939协议的基础上,实现基于CAN总线的汽车数字仪表系统设计。该系统设计利用LM3S2948、CTM8251、VID6606等器件的功能,最大程度地降低外围电路成本。该汽车数字仪表系统工作稳定、性能良好,目前正进行装车试验。随着欧Ⅲ排放标准在国内的推广,基于CAN总线的数字仪表必将进入快速发展的新阶段。