基于嵌入式系统的汽车行驶记录仪的设计
引言
汽车行驶记录仪是能够记录和再现汽车行驶状态的一种数字式电子记录装置,它可以全程记录汽车的行驶数据,并通过对所记录的行驶信息数据的分析,对车辆的行驶状况予以精确的掌控。汽车行驶记录仪可有效预防驾驶员的违章驾驶,降低车辆的交通事故。早在20世纪70年代,欧共体就开始全面强制使用机电模拟式汽车行驶记录仪并使得交通事故率降低了30%-50%。90年代以来,美国、日本、马来西亚、新加坡等国家也纷纷制定汽车行驶记录仪的法规。
我国从20世纪80年代开始进行汽车行驶记录仪的研制。2003年4月15日,由公安部有关部门起草、国家标准化管理委员会、国家经贸委审定通过,国家质量监督检查检疫总局发布了汽车行驶记录仪的国家标准(GB/T19056-2003),于2003年9月1日起正式实施。实施对象包括所有的在用车和新车,将逐步由点到面,分批分时的展开。
1、汽车行驶记录仪的功能
汽车行驶记录仪包括汽车行驶记录仪的主机和计算机端的数据分析软件这两部分组成。该课题中重点设计汽车行驶记录仪的主机部分。参照汽车行驶记录仪的国家标准(GB/T19056-2003)的要求,本课题所设计的汽车行驶记录仪主要实现如下功能:自检功能;实时时间、日期及驾驶时间的采集、记录、存储功能;车辆行驶速度的测量、记录、存储功能;车辆行驶里程的测量、记录、存储功能;驾驶员身份记录功能;键盘操作功能;数据显示;数据打印输出功能;数据通信功能。在数据通信接口部分除了国家标准所规定的USB标准接口和标准RS232CD型9针接口的这两种通信方式外,该课题中还增加了CAN总线接口功能。
2、系统的硬件设计
该课题所设计的汽车行驶记录仪选用带有ARM7TDMI-S内核的LPC2292为微控制器,操作系统采用UC/OS-Ⅱ嵌入式操作系统。该系统可实现对车速信号、开关量信号以及模拟量信号的采集、处理以及数据的实时存储和显示,通过串口、USB接口可以实现与PC机之间的数据通信,通过CAN总线接口可实现与汽车上的CAN节点间的数据通信。该系统的外围接口模块有电源模块、复位电路模块、信号采集模块、键盘操作模块、存储器模块、时钟模块、显示模块、JTAG调试接口以及通信接口模块,系统的组成框图如图1所示。
图1 汽车行驶记录仪的组成框图
2.1 微控制器
LPC2292是PHILIPS公司开发的基于一个支持实时仿真和跟踪的32 位 ARM7TDMI-S CPU 的微控制器,并带有256kB嵌入的高速 Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。该控制器有两路CAN通道和10路A/D转换通道,并带有外部存储器接口,可方便的进行外部存储器的扩展。
2.2 电源模块
由于车载电源不稳定,首先要对车内的12v电源进行稳压,然后通过线性稳压芯片L7805把电压转换为5V。由于微控制器LPC2292的供电电压为3.3v和1.8v,故还需要通过低压差(LDO)稳压器SPX117M3-3.3和SPX117M3-1.8把5v分别转换为3.3v、1.8v。
2.3 信号采集模块
信号采集模块需要采集的信号有1路车速信号、15路开关量信号以及2路模拟量信号。
通过霍尔式车速传感器输出汽车的车速信号,由于传感器输出的信号不是标准的脉冲信号,故需要对该车速信号进行整形处理。车速信号先通过运算放大器 OP2340进行信号的放大,然后通过施密特触发器74HC14把车速信号整形成脉冲信号,然后把该脉冲信号与微处理器的P0.11 CAP1.1引脚相连。通过定时器的脉冲捕获功能,可测量出脉冲信号的脉宽,经过运算可获得汽车的车速。通过对脉冲信号的计数,可得到汽车的里程
开关信号分别为:前照灯远光、前照灯近光、左转向开关、右转向开关、尾灯、倒车灯、汽车喇叭开关、刮水器开关、点火开关、制动开关、中央控制门锁、车门开关(驾驶员侧、前座乘客侧、后座左侧、后座右侧)。这15路开关量信号先经过TLP521光耦隔离后,再经过16路开关量信号检测芯片 CD4067进行信号通道的选通,输出信号与LPC2292的P0.8 TXD1引脚相连。通过CD4067的 4个输入端依次进行这15路开关信号的通道选择,然后分别读取P0.8 TXD1引脚的状态,就可知道各路开关的状态。
两路模拟量信号分别为冷却水温信号和节气门开度信号。由于冷却水温传感器、节气门传感器的输出信号均为电阻信号,故先把传感器输出的电阻信号转换为电压信号,经过4路运算放大器LM124对这两路电压信号整形,然后再把这两路信号输出到微处理器的模数转换引脚P0.27 ANT0、P0.28ANT1进行模数转换。
2.4 存储器模块
根据国 家标准规定,汽车行驶记录仪中的数据应该包括2个部分:汽车实时数据(存放汽车发生事故前后的20 s时间内数据);汽车历史数据(存放360 h内汽车和司机的行驶状况)。
由于汽车的实时数据更新频繁,要求有较高的可靠性,在该课题中选用NOR型 flash存储器SST39VF1601作为数据存储器。该存储器是一个1Mⅹ16的CMOS多功能Flash MPF器件。SST39LF/VF160 具有高性能的字编程功能,字编程时间为 14us。该芯片有10,000个周期的耐用性和大于100年的数据保持时间,可广泛用于设计制造和测试等应用中。它的使用可显著增强系统的性能和可靠性,降低功耗。
2.5 实时时钟模块
汽车行驶记录仪需要对状态发生时对应的时间信息作相应的记录,以便后来的分析使用,所以需要详细的时间信息。LPC2292有内置的实时时钟 RTC模块,但该模块不支持微控制器的断电模式,故需要对汽车行驶记录仪设计外部实时时钟模块。由于行驶记录仪对时间的实时性要求较高,并在系统断电时钟仍要运行,故选择具备掉电检测功能并且提供附加电池供电的时钟芯片DS1302。
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节的静态RAM,可通过串行接口与微控制器进行通信,同步串行通信时仅需要3个口线。其实时时钟/日历电路可提供秒、分、时、日、期、月、年的信息,每个月的天数和闰年的天数可自动调整。该芯片工作时功耗低并支持备用电源供电。
2.6 键盘操作模块
由于LPC2292的GPIO口的引脚位置不连续,故该模块采用了ZLG7290来驱动4ⅹ4行列式小键盘。其中ZLG7290是I2C串行接口器件,能提供键盘中断信号,可以方便地与处理器相连。在4ⅹ4行列式小键盘上设置车速显示按键、里程显示按键、模拟量显示按键、USB数据传输按键、串口数据传输按键、驾驶员信息输入按键、时间的调整按键、打印输出按键。
2.7 显示模块
该系统中显示模块采用YLF240128点阵式液晶显示模块,被光源颜色为黄绿色,STN液晶屏。它的内嵌控制器为TOSHIBA公司的 T6963C,外部显示存储器为32KB。该显示模块用于显示汽车行驶记录仪的显示瞬时车速、每分钟最高车速、每10 分钟内最高车速、时间、日期、总里程数、冷却水温度、节气门的位置等行驶数据信息。
2.8 通信接口模块
该课题中所设计的通信接口有USB标准接口和标准RS232CD串行接口以及 CAN总线接口。其中USB标准接口和标准RS232CD串行接口可以实现由PC机向汽车行驶记录仪主机的数据下传功能和由记录仪主机向PC机的数据上载功能。这样能方便驾驶员的身份识别以及发生交通事故时获取汽车的行驶数据,从而有利于对交通事故的分析。USB标准接口采用PDIUSBD12器件,该器件完全符合USB1.1的规范。RS232CD串行接口部分采用SP3232进行RS232的电平转换,SP3232是3V电源的RS232转换芯片
随着总线技术的发展,汽车上很多电子控制系统都带有CAN接口。为了方便汽车行驶记录仪与汽车上的带有CAN接口的电子控制系统之间进行通信,故给该系统增加了CAN接口。由于LPC2292带有两路CAN通道,故在CAN总线接口电路的设计时只需考虑信号的隔离和CAN总线收发器的设计。 LPC2292的CAN控制器的引出端TD1、P0.25RD1分别经过高速光耦TLP113隔离后与CAN总线收发器PCA82C250的TXD、 RXD相连。该CAN总线接口可与汽车上的其它CAN节点进行数据的通信。
3、系统的软件设计
本课题中汽车行驶记录仪软件部分所要实现的功能是对汽车的行驶状态数据的定时采集、存储、与PC机进行串口和USB通信、与汽车的其它CAN节点间的通信、LCD显示、键盘输入、打印输出等功能。该系统的主程序流程图如图2所示。
图2 系统的主程序流程图
汽车行驶记录仪有两种工作状态。汽车运行时,记录当前驾驶员的驾驶信息,如速度、里程、驾车连续时间、超速记录、停车时间等,并在汽车超速时提供蜂鸣器报警。汽车停止时,经过键盘扫描程序选择采用USB或 RS232这两种通信模式和PC机进行数据交换,数据既可以上载也可以下传。
嵌入式操作系统是设计完成复杂功能的硬件和软件,并使其结合在一起的计算机系统。嵌入式系统可提高系统的可靠性,提高产品的开发效率并能缩短开发周期。目前常用的操作系统有Linux,Windows CE,VxWorks,OSE,Nucleus,eCos,UC/OS-Ⅱ等。UC/OS-Ⅱ是一个源码公开、可移植、可固化、可裁减及占先式的实时多任务操作系统。UC/OS-Ⅱ通过联邦航空局商用航空器认证,自 1992年问世以来,以被应用到数以百计的产品中。由于UC/OS-Ⅱ的上述优点,在本课题中采用UC/OS-Ⅱ操作系统。
汽车行驶记录仪的软件编写过程中采用模块化程序设计的方法,建立不同的任务,对任务进行优先级的分配,并在任务之间采用信号量和消息邮箱这两种通信机制。UC/OS-II的文件系统结构包括核心代码部分、设置代码部分、与处理器相关的移植代码部分。其中核心代码与处理器无关,该部分包括7个源代码文件和1个头文件,这些文件所实现的功能分别是内核管理、事件管理、消息队列管理、存储管理、消息管理、信号量处理、任务调度和定时管理。设置代码与应用有关,该部分包括2个头文件,用来配置事件控制块的数目以及是否包含消息管理相关代码。移植代码部分与处理器相关,这部分在系统移植过程中需要修改,该部分包括OS CPU.H,汇编文件OS CPU A.S和OS CPU.C。把UC/OS-Ⅱ移植到LPC2292微处理器,需要完成的主要工作是对上述移植代码部分的这3个文件的修改。
4、结论
本课题中设计了汽车行驶记录仪的硬件和软件部分,该记录仪系统完成了对车速脉冲信号、开关量信号、水温和节气门信号的实时采集、存储和显示,实现了对驾驶员的身份记录功能,并成功实现了USB和串口通信这两种数据传输方式,很好的满足国家标准(GB/T19056-2003)的要求。
本文作者创新点:在汽车行驶记录仪系统的设计中以带有ARM7内核的芯片LPC2292为微处理器,数据通信模块增加了CAN接口模块,软件设计方面采用了UC/OS-Ⅱ操作系统,并成功实现了该操作系统在LPC2292上的移植。该系统的开发周期短,易维护和修改,是汽车行驶记录仪发展的方向。