基于MC9S12HZ256的总线式汽车数字仪表设计
扫描二维码
随时随地手机看文章
摘要:首先研究CAN总线和SAE J1939协议,提出一种基于MC9S12HZ256微控制器的总线式汽车数字仪表解决方案。详细介绍SAE J1939协议的报文帧格式及应用层协议中发动机相关参数的定义,以及步进电机及其驱动和车速信号的处理方法。该数字仪表系统硬件平台由微处理器和信号采集和信息处理及显示等模块组成。软件设计部分编程实现了对CAN总线和各传感器数据的读取、处理。该系统能够实时反映车辆工况。
关键词:汽车数字仪表;MC9Si2HZ256;步进电机;CAN总线;SAE J1939
汽车仪表经历机械式、电气式、模拟电路电子式和全数字式的发展过程,日前正处在从模拟电路电子式转向全数字式的时期。带CAN总线接口的汽车仪表采集并处理传感器的车速、油量、油压等信号,并根据SAE J1939协议读取发动机转速、水温等信息。陔型汽车仪表具有指示精度高、反应灵敏、结构简单、可靠性高等优点,代表汽车仪表的发展方向。
1 CAN总线与SAE J1939协议
1.1 CAN总线与SAE J1939协议简介
控制器局域网CAN(Controller Area Network)是用于众多控制单元、测试仪器之间实时数据交换而开发的一种串行通信协议,CAN2.0包括2.OA和2.0B两部分。CAN拓扑结构为总线式,所以也称CAN总线。SAE J1939协议是以CAN2.0B作为网络核心协议,用于客车、货车、农业及建筑车辆的网络串行通信和控制协议。该协议通过对CAN扩展帧的29位标识符编码,用CAN数据帧封装其数据信息,从而形成独特的编码系统。作为车辆通讯标准,该协议明确规定汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等,详细说明汽车内部具体ECU通讯内容。SAE J1939协议标准更大限度地发挥CAN优异的性能,减少线束数量,实现车辆电子设备间高速数据传输。
1.2 SAE J1939协议下CAN通讯报文帧格式
CAN支持4种类型的报文帧传送信息:数据帧(Data Frame)、远程帧(Remote Frame)、出错帧(Error Frame)和超载帧(Overload Fram-e)。CAN有2类消息帧:标准帧和扩展帧,其本质的差别在于标识符(ID)的长度,标准帧的ID有11位,扩展帧则有18位。表1为CAN扩展格式数据帧结构。
CAN数据帧分为以下位场:起始场(SOF)、仲裁场、控制场、数据场、循环冗余校验场(CRC)、应答场(ACK)和帧结束(EOF)。控制场由6位组成,包括数据长度码(DLC)和2个保留位r1、r0,在数据帧里这2位必须为显性位。DLC为4位,指出数据场里的字节数目,编码为0~8。循环冗余校验CRC场由15位CRC序列及CRC边界符组成。CRC范围包括帧起始、仲裁场、控制场和数据场。应答场(ACK)长度为2位,包含应答间隙和应答界定符。在应答场中,发送器发送这2位为隐性位。当接收器正确接收到有效报文时,会在应答间隙期间向发送器发送一显性位以示应答。每一数据帧均由7位隐性电平组成帧结束。
J1939协议支持CAN 2.0协议标准,使用扩展帧格式以报文为单位传送信息。协议数据单元(PDU)是J1939协议定义的一个框架,用以组织CAN数据帧中与J1939协议相关的关键信息。PDU由优先权域(P)、保留域(R)、数据页域(DP)、PDU格式域(PF)、组成标识符的PDU特定域(PS)和源地址域(SA),以及数据域(Data Field)共7个位域组成。这些位域分别对应CAN扩展帧的29位标识符和数据域。其中PS是一个8位段,其定义取决于PF值。若PF值小于240,PS是目标地址(DA);若PF值在240~255之间,则PS为组扩展(GE)。CAN扩展帧格式和SAE J1939信息帧格式标识符比较如表2所示。PDU的定义并未将CAN帧中的SOF(帧起始)、SRR(替代远程请求)、IDE(识别符扩展)、RTR(远程请求),部分控制域、CRC(校验域)、ACK(应答域)及EOF(帧结束)等控制域归入,因为这些域已由CAN2.0规范明确定义,并且当OSI模型高于数据链路层时它们是不可见的。
1.3 SAE J1939协议应用层
应用层定义J1939协议的数据长度、数据类型、分辨率、范同及参考标签等参数,并为每个参数分配1个编号(SPN)。由于J1939协议是以协议数据单元(PDU)的形式传输数据,而1个PDU可传输8个字节数据。所以,需要对参数进行组合传输。J1939应用层协议中定义参数组,并为每个参数组分配一个编号(PGN)作为该参数组的唯一标签。参数组内容包括该组参数的更新率、有效数据长度、数据页、PDU格式、PDU待定、默认优先级以及数据域的具体内容。以电子发动机控制器l(EECl)为例说明SAE J1939协议标准下的CAN数据帧。J1939对电子发动机控制器1(EECl)定义如下:
PGN 61444 电子发动机控制器1
发动机相关参数:
传输循环速度:依发动机转速决定;数据长度:8个字节;数据页:0;PDU格式(PF):240;PDU待定(PS):3;默认优先级:3;参数组编号(PGN):61444(0xF004)
起始位置 长度 参数名 SPN
……
4-5 2字节 发动机转速 190
……
根据SAE J1939协议的定义,参数EECl的PDU编码应为“OC FO 04 00 XX XX XX XX XX XX XX XX(XX表示任意数据)”,其中前4个字节为29位标识符,后8个字节为数据域,其中数据域中第4、5字节表示发动机转速。若收到来自发动机控制单元的数据为OC F0 04 00 XX XX XX 5D CO XX XX XX,根据这2个字节的数值及SPNl90中的定义可算得发动机转速:
发动机转速=原始数×分辨率+偏移量=24 000(0x5DC0)×0.125+0=3 000 r/m。
同样,根据J1939的定义还可以计算出汽车仪表所需的其他数据。然后交由仪表ECU处理并驱动显示部件准确显示当前的车辆状态。
2 数字仪表系统设计
该汽车数字仪表系统由信号采集和处理显示等模块组成,图l为应用MC9S12HZ256微控制器的总线式汽车数字仪表组成框图。
信号采集包含CAN总线数据采集和传感器数据采集。通过模拟量信号分压,脉冲信号滤波整形,开关信号光电隔离,微处理器采集传感器信号,同时通过收发器读取CAN总线信号,然后进行信号处理,再通过控制器驱动步进电机,LCD液晶屏及其他器件。在实际车载环境中,该系统设计遵循SAE J1939协议在CAN总线上获取发动机转速、水温和故障代码信息,车速、油量、机油压力、制动气压等信息则以模拟量和脉冲量形式从相应传感器读取。
2.1 MC9S12HZ256微控制器
MC9S12HZ256是飞思卡尔公司生产的MC9S12系列面向汽车仪表应用的增强型16位单片机微控制器(MCU)。其集成度高,片内资源丰富,功能强大,接口模块包括SPI、SCI、FC、A/D、PWM等。采用增强型16位S12CPU,加入锁相环电路,可产生高于外部晶振频率的时钟信号,片内总线时钟频率最高达25 MHz;具有12.KB RAM、2 KB的EEPROM;2个异步串行通信接口(SCI),1个同步串行设备接口(SPI),1个FC总线接口(12C);1个8通道16位定时器(TIM),1个16通道10位模数转换器(ATD),1个6通道脉冲宽度调制器(PWM),2个CAN控制器模块(兼容CAN 2.0 A/B)。此外,这款MCU还集成1个32x4的液晶驱动模块(LCD)。再有该单片机的背景调试模式(BDM)和CodeWarrior开发环境,使应用该款单片机的总线式汽车数字仪表的外围硬件电路相对简化,开发过程简单、方便。
2.2 步进电机及其驱动
步进电机是将电脉冲信号转换成相应的角位移或线位移的转换器,且其转速或线速度与脉冲频率成正比。步进电机可以用脉冲信号直接进行开环定位控制,无需位置或速度传感器。VID29系列步进电机内置减速比180/1的齿轮系,可工作于5~10 V的脉冲下。在微步模式下,1个脉冲可使转子转动15°,相应输出轴转动(1/12)°,最大角速度600°/s。每片VId66-06仪表步进电机驱动芯片可同时驱动4路步进电机以微步模式工作,工作原理如图2所示。每个步进电机只需2路控制信号。在输入信号F(SCX)的上升沿驱动电机输出轴转动1个微步,即(1/12)°,输入信号“CW/CCW”(顺时针/逆时针)控制步进电机输出轴转向。
2.3 CAN节点设计
主控器件MC9S12H256集成有支持CAN2.0A/B的CAN控制器,并集成CAN协议的物理层和数据链路层功能,可完成对数据通信的成帧处理,包括位填充、数据块编码、CRC校验和优先级判别等。选用CAN收发器PCA82C250,该收发器适用于汽车中高速(高达l Mb/s)CAN总线数据传输。设置终端电阻(一般为120 Ω)与CAN控制器与物理总线间的接口,以提升总线的差动发送和接收功能。图3为CAN接口电路。
2.4 脉冲信号处理
霍尔式车速传感器的输出信号为矩形波。磁电式车速传感器的输出信号为正弦波,信号频率与车速均成正比。速度信号经处理电路转换为单片机能够处理的矩形波信号,测量车速即测量矩形波频率。
周期法是利用标准时钟信号序列填充被测信号的一个或多个周期。通过计数标准时钟脉冲个数来计算被测信号周期的测量方法。被测信号周期为T,参考时基信号周期为τ,标准脉冲个数为n,被填充的被测信号周期个数为N,则有:
测量误差主要来自2部分:一部分是标准时基的相对误差dτ/τ,由于标准时基是由单片机内部的石英晶振产生的,这部分误差通常在10-6以下,可忽略;另一部分是计数误差dn/n,该误差产生的原理如图4所示。
时基信号序列的最后一个正跳变未处在被填充的被测信号范围内,可产生的最大计数误差为-1。这部分误差在低速时很小,在高速时稍大。以车辆特征系数(车辆行驶每公里里程时速度传感器的转数)为l 320,8脉冲车速传感器为例,标准时基信号周期为50 μs,车速为100 km/h时。最大相对误差为1.47%,车速为180 km/h时,最大相对误差为2.64%。完全符合汽车摩托车仪表标准QC/T727-2004中对车速表误差的基本要求。适当降低时基信号周期τ和高速时增加N值可减小误差。周期法计算车速V:
式中,Z为轮速传感器旋转一周输出脉冲个数;Ω为车辆特征系数,即汽车每行驶1 km轮速传感器的转数。
3 软件设计
主程序流程和读取CAN信息流程如图5所示。该汽车数字仪表主要完成数据采集、数据处理、数值显示以及与上位机通信等功能。本仪表的功能是不断接收信息并进行信息传送、处理、输m显示和报警的循环过程。开机后系统首先初始化主控制器、CAN节点、LCD液晶屏、步进电机,读取EEPROM中数值并使能CAN中断,设置CAN屏蔽码和验收码。接着进入主程序,各步进电机快速回位,指针归零。然后采集外部信号,计算车速、油压等信息并读取CAN总线上的消息队列。根据J1939协议计算判断发动机转速、水温和故障代码信息,处理这些信息并控制步进电机和液晶屏显示。
4 结论
研究CAN总线通讯协议及SAE J1939协议,实现了基于CAN总线的汽车数字仪表系统设计。软件设计实现了汽车仪表的各项功能。该软件设计充分利用MC9S12HZ256微控制器中集成的功能模块,减少外围电路器件用量。该仪表响应快速、定位精确、工作可靠。随着总线技术的日益发展以及相关法规对汽车电子控制要求的提高,基于CAN总线的汽车数字仪表将得到更广泛的应用。