基于CAN总线的汽车数字仪表的设计
扫描二维码
随时随地手机看文章
引言
汽车仪表作为车辆与驾驶员交流的窗口,承担向驾驶员实时提供车辆工况任务。汽车仪表是汽车电子在车辆中应用研究的重点之一。随着欧洲排放标准在国内推广,符合欧洲排放标准具备控制器局域网络(ControllerAreaNetwork,简称CAN)总线接口的发动机和与之通讯的总线式数字仪表也逐渐扩大市场。随着车载总线技术发展,带有CAN总线接口的汽车数字仪表得到广泛应用。应用层SAEJ1939协议是目前国内汽车行业应用最广泛的CAN总线应用层协议。
这里提出的基于CAN总线的汽车数字仪表是利用CAN总线使其成为车身网络一部分,遵循SAEJ1939协议读取发动机转速、水温等信息。考虑到车辆实际状况,该汽车数字仪表还能接收传感器的车速、油量、油压、制动气压等信号并显示,为驾驶员提供实时车辆工况。
2 SAEJ1939协议简介
SAEJ1939协议是美国汽车工程师协会SAE(SocietyofAutomotiveEngineer)发布的以CAN2.0B作为网络核心协议的车辆网络串行通信和控制协议。SAEJ1939协议使用CAN的数据帧封装其数据信息,对CAN扩展帧的29位标识符编码,形成独特的编码系统作为车辆通讯标准。该协议明确规定了汽车内部ECU的地址配置、命名、通讯方式以及报文发送优先级等,详细说明了汽车内部具体的ECU通讯内容。实现车辆电子设备间高速数据传输,减少线路数量,最大限度利用CAN总线优越性能。
2.1 SAEJ1939报文格式
SAEJ1939数据帧是以PDU(协议数据单元)为单位,共由优先权(P)、保留位(R)、数据页(DP)、PDU格式(PF)、PDU细节(PS)、源地址(SA)及数据域(DateField)等7个域组成。除了数据域外的PDU对应于CAN扩展帧的29位标识符,其对应关系如表1所列。其中PS是一个8位段,其定义取决于PF值。若PF值小于240,PS是目标地址(DA)。若PF值介于240和255之间,则PS为组扩展(GE)。
2.2 SAEJ1939应用层
应用层详细定义了SAEJ1939协议中使用的每个参数,包括数据长度、数据类型、结果、范围以及参数组编号(PGN)等。这些参数分为控制参数、动力传动系统状态参数、动力传动系统控制参数、动力传动系统配置参数、信息参数以及信息状态参数。SAEJ1939使用参数组编号(PGN)作为一参数组的唯一标签。该标签包括:保留位(R),数据页(DP)、PDU格式域(PF8位)和组扩展域(GE8位)。另外,PF值小于240时,PGN低字节位置0。参数组中的每个参数都能用ASCII码表示,其状态量最少可用两个位表示。文字数字数据采用最高位在前的传输方式,其他包括两个或多个数据字节的参数则采用最低位在前的传输方式。除此之外,应用层中还详细定义了参数组属性。该参数组属性包括:优先权、更新率、参数组的协议数据单元格式、参数组编号,参数组的数据参数号及其在参数组中的位置。
3 基于CAN总线的汽车数字仪表系统设计
3.1 硬件电路设计
该汽车数字仪表系统由信号采集和处理显示等模块组成,如图1所示。通过模拟量信号分压,滤波整形脉冲信号,CAN总线信号通过收发器发送至中央处理器,然后再将处理后的信号通过步进电机控制器控制步进电机,驱动LCD液晶屏显示。其中信号采集模块包含CAN总线数据采集和传感器数据采集。在实际的车载环境中,该系统设计遵循SAEJ1939协议在CAN总线上获取发动机转速、水温和故障代码,而其他信息包括车速、油量、机油压力、制动气压则从相应传感器以模拟量和脉冲量形式读取。通过测量车速传感器脉冲信号获取车速信号,油量传感器的信号经分压后直接发送给中央处理器内A/D转换器处理。
图2给出信号采集模块电路。图中,采用带隔离的通用CAN收发器CTM825lT接收CAN总线信号。CTM8251T内部集成所有必需的CAN隔离及CAN收发器,可实现CAN节点的收发与隔离功能,从而替代了传统设计中采用光电耦合器、DC-DC隔离、CAN收发器等元件实现的具有隔离功能的CAN收发电路。该模块电路可将CAN控制器的逻辑电平转换为CAN总线的差分电平,并具有直流2500V的隔离功能。该模块电路设计体积小,集成度高,可取代PCA82C25l等传统的CAN总线收发器及其外围电路,从而降低了系统设计成本。传感器模拟量信号经分压传输至中央处理器,图中的VD40和C40两元件可对微控制器LM3S2948的引脚提供过压保护。
LM3S2948型微控制器完成信号处理。它是一款基于ARM Cortex-M3内核的微控制器,采用32位RISC,内嵌CAN控制器、A/D转换器、模拟比较器、I2C接口等功能模块,极大降低了外围电路设计成本。LM3S2948微控制器具有运算速度快、功耗小、体积小、价位低等特点。LM3S2948的CAN控制器模块支持CAN2.0B协议,支持符合SAEJ1939协议的扩展帧的报文传输,其传输速率可编程设置为1Mb/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=不相关)。只有标识符中的相关位与验收码相应位相同,系统才接收报文。如满足屏蔽条件则从寄存器读取数据并存入缓存区,再根据SAEJ1939协议判断计算发动机转速、水温和故障代码信息,传输至步进电机和液晶屏显示。例如:接收的数据为:OCF00400XXXXXX4F55XXXXXX(XX为任意数据),若设置验收码为Ox00000000,屏蔽码为0xlFFFFFFF,则接收该报文。根据SAEJl939-71协议,此报文为:PGN61444一电子发动机控制器。因此,可得第4,5字节为发动机转速,并遵循低位在前,高位在后的传输方式,则发动机转速=原始数×分辨率+偏移量=21831x0.125+0=2728.875r/m。同理可计算其他汽车仪表所需数值。图4为CAN总线数据接收程序流程图。
4 结语
在研究了汽车CAN总线通讯协议及SAEJ1939协议的基础上,实现基于CAN总线的汽车数字仪表系统设计。该系统设计利用LM3S2948、CTM8251、VID6606等器件的功能,最大程度地降低外围电路成本。该汽车数字仪表系统工作稳定、性能良好,目前正进行装车试验。随着欧洲排放标准在国内的推广,基于CAN总线的数字仪表必将进入快速发展的新阶段。