王 琼, 钱润生, 孙保群
(1.合肥工业大学 计算机与信息学院,安徽 合肥 230009;2.合肥工业大学 汽车工程技术研究院,安徽 合肥 230009)
随着现代汽车电子技术和计算机技术的飞速发展,汽车驾驶室车载电子、电控和仪表设备不断增加且安装分立,占用空间大,成本高,显示精度与分辨率低下、功能单一且电磁干扰大,不利于驾驶员行车中观察和操作,给行车过程带来了不安全的隐患。随着微电子技术的迅猛发展,嵌入式处理器的性能达到了一个前所未有的高度,应用高性能ARM处理器和TFT显示屏实现车载前屏综合显示是一个高性价比的解决方案。
本文提出了车载仪表前屏系统的硬件平台为SoC芯片S3C2440A,基于Qt4.6.3开发技术,实现了车辆行驶信息图形化显示。系统显示画面直观、精美,使得驾驶环境更为舒适。以TFT触摸屏为人车交互界面,使得驾驶员操作更加便捷、高效,提高了行车安全性,降低了成本,为自主研发智能化汽车电子产品进行了初步尝试。
本文设计的车载仪表前屏系统由嵌入式处理器模块、车载传感器模块、TFT显示模块、存储单元和系统接口模块组成,总体结构如图1所示。
图1 多功能前屏系统总体结构
嵌入式处理器模块是系统的控制核心,选用Samsung公司生产设计的32位RISC微处理器S3C2440A,其工作频率最高达405MHz,能够满足系统快速采集数据和处理数据的要求。车载传感器模块主要实现对汽车行驶数据快速采集功能。TFT-LCD模块完成车速、发动机转速、水温、油量、时间日期、转向灯及各种报警信号的实时动态显示功能。触摸屏实现显示界面切换等人机交互功能。存储单元包括1GB NAND FLASH和128MB SDRAM。系统扩展通信接口包括RS-232口、CAN总线口,主要完成与车载电子和电控设备交换信息[1-2]等功能。
系统硬件电路主要包括SDRAM、NAND FLASH、LCD接口以及数据采集口和通信接口等。
1.2.1 存储模块电路的设计
系统的内核、文件系统和应用程序大小约60MB,而且媒体文件和电子地图较大,所以为了给系统软件提供充足的程序存储和堆栈空间,本系统扩展了32位宽、128MB的RAM存储系统。采用Hynix公司的HY57V121620的SDRAM芯片,结构为4Banks×8MB×16bit。由于S3C2440A芯片是32位,由2片HY57V121620组成32位宽、128MB的内存系统。
另外,由于车身信息多且仪表系统数据需要永久存放,本系统还扩展了大容量NAND FLASH来存储软件系统和数据。本车载仪表前屏系统采用了三星公司的K9K8G08U0BNAND FLASH芯片。该芯片存储容量为1GB,8位bit数据端口,3.3V供电。
1.2.2 显示器与触摸屏接口电路的设计
系统显示屏选用群创7寸TFT-LCD,包含LCD垂直同步信号VSYNC、水平同步信号HSYSNC、行结束信号LEND、时钟信号VCLK、数据信号VD[23:0]、电源开关信号PWREN。
系统触摸屏采用4线电阻触摸屏,x轴引线为XP和XM,y轴引线YP和YM。系统控制器S3C2440A包含这4个引脚,可直接与4线电阻触摸屏连接。系统的触摸屏和LCD 2类信号通过共用DF9B-41P-1V2接口器件连接到群创7寸显示触摸屏[3]。
1.2.3 数据采集接口和通信接口设计
系统的通信接口和车载数据采集接口包括CAN总线口、RS-232口、AD输入和脉冲信号输入接口。系统串行通信接口通过MAX3232收发器实现S3C2440A与RS-232总线的通信,实现与PC交互和信息输出。系统CAN总线控制器选用MCP2515,CAN收发器为SN65HVD230。其中MCP2515带有SPI总线接口,可直接连接到S3C2440A的SPI总线上,通过收发器SN65HVD230连接到车身系统CAN总线。
系统数据采集接口包括输入数字脉冲信号、模拟电压信号和开关量信号,用于连接车身油量、水温、车速和发动机转速等传感器信息以及车灯信号。其中数字脉冲信号引入S3C2440的tclk0(输入频率为0~720Hz)和tclk1(输入频率为0~8kHz)2个 引 脚;模 拟 电 压 信 号 引 入S3C2440A的AD输入引脚ad0和ad1,2个AD输入引脚电压范围为0~3.3V;车灯信号接S3C2440A的外部I/O引脚GPF[1:2],车身报警信号接EINT[3:5]。
车载仪表前屏系统的应用软件运行在操作系统内核版本为Linux-2.6.34.4上,界面开发环境为 Qt4.6.3[4]。本文主要介绍汽车行驶信息 GUI界面模块的设计与实现。
车载GUI模块包括GUI界面显示程序、车载数据采集程序和通信程序。模块的设计平台是Qt4.6.3,为了实现对采集的汽车行驶信息动画显示,模块设计时必须解决GUI界面实时刷新、车载传感器信号与GUI界面实时通信、触摸屏人机交互通信3个关键问题。
本文设计的GUI界面程序能够实现实时采集车速、发动机转速、水温、油量、时间日期、转向灯及车载各种报警信号等汽车行驶信息,并在TFT-LCD上通过图形直观、动画地实时显示等功能。其中车速、发动机转速、水温和油量以仪表盘图形显示,时间以模拟钟表图形显示,转向灯以箭头显示,报警信号以白炽灯形状显示[5]。
仪表盘是界面程序设计的重点和难点。为了得到仪表盘图形的动画显示效果,要快速地刷新画面,保证对采集的汽车行驶信息实时响应。设计时将仪表盘图形分为静态函数(如仪表盘)和动态函数(如仪表指针)。
2.1.1 静态仪表盘函数设计
本系统设计时应用rotate()、drawLine()、drawChord()、drawText()等Qt函数完成静态仪表盘外形轮廓的绘图设计,表盘刻度线的绘制算法是静态仪表盘函数关键技术之一。本文应用坐标系旋转设计刻度线算法,算法公式为:
其中,(x,y)为原始坐标系值;(x′,y′)为坐标系旋转θ角度后的值;θ为旋转角度。
静态仪表盘函数另一个设计难点是表盘数字位置计算,通过反复实验调试得出的计算公式为:
其中,θ为位置角度,根据表盘尺寸要求,θ取值范围为[-30°,210°];r为仪表的半径;m 为位置修正表达式,即
其中,num为数字的位数;font为字体的磅数。
本文设计的静态车速仪表盘如图2所示,函数部分源代码如下:
图2 静态车速仪表盘
2.1.2 仪表指针动态函数设计
本文设计的仪表指针转动角度以车速为0km/h的相对旋转角度的范围为0°~240°,对应的车速范围为0~240km/h。经过反复实验调试得到脉冲个数值与车速值、指针转动角度与车速值三者之间的关系[6]见表1所列。
表1 仪表指针、输入脉冲与车速的关系
动态函数设计时先确定指针转动位置,再应用rotate()和drawConvexPolygon()函数绘制指针,函数部分源代码如下:
车载信息的采集与通信模块主要完成传感器模块的数据采集和处理,并将处理的信息反馈给界面程序。数据通信和显示在界面显示主线程建立完成,界面显示主线程流程如图3所示。信号通信模块中,采用signal与slot机制与主线程进行通信,当收到需要更新的数据信息后,将当前信号值发送到主线程的刷新界面函数,执行界面刷新功能模块。
signal与slot连接代码如下:
图3 界面显示主线程流程
数据采集程序设计时,将车载信息分为2类:① 实时更新信息,如车速、发动机转速、油耗和温度等;② 随机信息,如倒车报警、转向灯指示等。对车速类实时信号采集设计为查询算法,而对于倒车等随机信号采用轮询算法[7-8]。
(1)查询法程序设计时,为了保证采集信号实时性,考虑到更新实时信号的线程不过分占用CPU以及人眼视觉的惰性等因素,程序将采集率设定为10~20Hz。当数据采集线程采集到实时信号值后,应用emit、update函数通过信号与槽机制将当前信号值发送到主线程的刷新界面函数,从而保证了车载信息实时显示。车速信号采集流程如图4所示。
图4 实时信息采集流程
采集程序部分代码如下:
(2)由于倒车、报警类随机信息通常由外部某个突发事件触发产生硬件中断,因此,随机信息采集不适宜用查询法,本文采用select/poll轮询函数监测外部中断信号。如果信号未发生中断请求,此线程将一直阻塞,放弃当前CPU资源。报警信号轮询法采集流程如图5所示。轮询法采集程序的部分代码如下:
图5 报警信号采集流程
本文研制的车载GUI前屏终端,实现了车辆行驶信息实时采集和GUI显示、电子地图以及车载信息媒体播放等功能的集成。部分车载信息显示界面测试如图6所示,包括系统启动主界面、车速与发动机转速测试、油量与水温测试。
实验结果表明,屏幕显示稳定,实时数据准确,动画效果好。系统图形界面切换以触摸屏实现人机交互,具有界面友好、操作便捷、界面反应灵敏、切换流畅等特点。本系统还有多种通信接口,可扩展性强,具有很好的应用前景。
图6 车载信息显示界面
[1]王 琼,白武博,夏 光.基于非特定人车载电器语音控制系统的研究与实现[J].合肥工业大学学报:自然科学版,2012,35(5):590-594,656.
[2]九江中弘电子科技有限公司.一种汽车集成信息液晶显示及控制装置:中国,201010583104.1[P].2010-12-11.
[3]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2011:294-361.
[4]唐 浩,代少升.Qt/Embedded在S3C2440平台上的移植与开发[J].电视技术,2010,34(10):32-35.
[5]郑完富,钟龙平.汽车数字仪表盘图形界面显示研究[J].厦门大学学报:自然科学版,2009,48(6):830-834.
[6]张显成.汽车数字式速度/燃油表的设计[D].沈阳:东北大学,2005.
[7]曹成昆,何 彬,唐航波.混合动力汽车真彩液晶数字仪表软件设计[J].上海交通大学学报,2008,42(7):1081-1084.
[8]杨 槐.基于嵌入技术的车载虚拟仪表系统的研究[D].重庆:重庆大学,2007.