电动汽车液晶数字仪表的设计*
2013-09-03张桂香肖奇云
陈 新,张桂香,肖奇云
(1.湖南大学,汽车车身先进设计制造国家重点实验室,长沙 410082; 2.湖南人文科技学院,娄底 417000;3.娄底市大丰和电动车辆有限公司,娄底 417000)
前言
目前汽车仪表主要分为以下几种。
(1)纯机械式 仪表使用电机和机械结构驱动指针,其它信息通过仪表板上的灯点亮显示。
(2)插接显示屏 仪表盘显示屏仍然使用机械针,但是提供了一个或者多个额外的显示屏,通常位于量程之间的中心位置。该显示屏可用于显示当前油料消耗、温度或类似的信息。
(3)纯液晶显示屏 全面可配置的仪表盘使用高分辨率的大尺寸显示屏;没有使用机械式指针,通过图形处理呈现出逼真的模拟指针。仪表盘内容完全由软件定义,可灵活地针对具体使用情形调整。
汽车仪表演变过程中第一步是引入液晶显示屏来显示里程信息和其它简单的字母数字信息。由于嵌入式系统的发展和液晶显示屏价格的下降,这使基于图形用户界面的汽车纯液晶仪表的解决方案在性能上和价格上变得现实。
目前由于电动汽车的仪表和传统仪表显示内容有差异,而且电动汽车车型和类别众多。开发一个汽车仪表板须重新设计硬件和外观,这将导致汽车厂在汽车仪表上投入大量人力和资金。汽车纯液晶仪表盘总体思路就是以带有图形和动画显示的方式显示汽车复杂的信息,不少电动汽车公司对纯液晶仪表设计表现出了强烈的兴趣和开发意愿。本文中针对某电动车厂的仪表进行了改造和设计。
1 硬件设计
纯液晶仪表包含传统仪表的所有功能,以液晶屏作为显示终端,将所需的大量、复杂的信息以图形和文字方式,灵活、准确地显示在LCD屏幕上,可以准确、清晰地显示速度、转速、里程、左右转向、大灯和报警等信息。仪表基本的要求是:高实时性响应、高亮度显示图形和指针动画,能接收来自CAN总线和传感器的信号等。对于仪表硬件的选择须考虑如下几点。
(1)屏幕尺寸 根据实际仪表大小,可选择7~10英寸的高分辨率液晶。
(2)动画频率 为实时显示指针的快速移动,就必须提供一个较高的动画频率,如速度表和转速表中的量程指针。
(3)处理能力和内存大小 由于要运行复杂的图形系统和处理各种信息,要保证主控芯片有足够的处理速度;另外为防止刷新屏幕时抖动,须先进行运算等操作,要有足够大的内存空间进行存储。
整个系统硬件采用了三星公司生产的基于ARM920T内核的 S3C2440A,最高运行频率为400MHz,集成专用DMA的LCD控制器,支持最多4K色STN和256K色TFT液晶,可较方便地连接高分辨率液晶。S3C2440A丰富的外设方便了用户的硬件设计,该仪表包括液晶模块、大容量NANDFLASH、64M的SDRAM、CAN总线接口、音频接口、按键和EEPROM存储芯片AT24C08等,如图1所示。
1.1 液晶接口电路
液晶模块采用了群创公司生产的7英寸AT070TN83 V.1液晶,分辨率为800×480,采用40脚数字接口。S3C2440A集成的LCD控制器有1个支持从系统存储器的视频缓冲器接收图像数据的专用DMA,可在屏幕上显示视频数据而无须CPU的介入。LCD控制器包括用于传输图像的数据端口VD[23:0]和必要的控制信号,如 VFRAME、VLINE、VCLK、VM等。LCD控制器和AT070TN83 V.1液晶模块的电路示意图如图2所示。除了上述控制线外,LCD中的MODE管脚定义液晶控制模式,L/R和U/D则定义液晶的扫描模式,S3C2440A通过I/O口提供一个200Hz频率的方波给管脚,利用占空比调节 LCD 亮度[1]。
1.2 CAN总线电路
CAN总线部分电路原理图如图3所示。S3C2440A本身不带 CAN控制器,须通过外部的CAN控制器来实现CAN总线通信。MCP2510是一种带有SPI接口的CAN控制器,它支持CAN技术规范V2.0 A/B,能发送或接收标准的和扩展的信息帧,同时具有接收滤波和信息管理的功能。S3C2440A通过SPI接口与MCP2510进行数据传输,最高数据传输速率可达5Mb/s。SN65HVD230是德州仪器公司生产的3.3V CAN总线收发器,该收发器具备差分收发能力,最高速率可达1Mb/s。广泛用于汽车和工业自动化等相关领域。
2 软件设计
图形用户界面是软件和最终用户的接口,在很大程度上决定着软件的成败和显示效果。目前嵌入式图形用户界面开发工具主要包括:(1)诺基亚公司的产品Qt,是完全面向对象的跨平台图形用户界面开发工具,是Linux系统中最流行的开发工具之一,也是在 Unix上自由软件开发的主流[2];(2)MiniGUI是一个高效、可靠、可定制和小巧灵活的图形用户界面支持系统,具有跨硬件平台、跨操作系统的可移植性[3];(3)μC/GUI是 Micrium 公司开发的通用的嵌入式图形用户界面软件,该界面软件被设计用于为任何使用1个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。μC/GUI适用于使用任何LCD控制器和CPU的任何尺寸的物理和虚拟显示,具有源代码开放和模块化设计的特点。
汽车仪表涉及多个任务,如图形显示与刷新和CAN总线的通信与语音提示等,图形界面设计也须用到消息和多任务支持,设计中使用了μC/OS-Ⅱ操作系统+μC/GUI图形用户界面的组合,系统软件的整体架构如图4所示。
2.1 μC/OS-Ⅱ操作系统
μC/OS-Ⅱ的代码被分为处理无关的代码、与应用相关的代码和与处理器相关的代码3个部分。系统移植时只要考虑与处理器相关的代码。与处理器相关的代码由OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S 3个文件组成。OS_CPU.H中包括数据类型的定义和实现宏S_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。OS_CPU_C.C中最主要的是实现任务的堆栈结构,操作系统的一些钩子函数也在文件中实现。OS_CPU_A.S包括处理器部分汇编函数实现,其中包括:OSStartHighRdy()来使就绪态任务中优先级最高的任务开始运行;OSCtxSw()任务级上下文切换函数;OSIntCtxSw()中断任务退出函数;OSTickISR()时钟中断处理函数[4]。
由于μC/OS-Ⅱ是一个占先式的内核,采用基于优先级的抢先式调度算法,有效地保证了实时性的要求。根据需要,系统的主要任务为:(1)J1939协议通信;(2)图形显示与刷新;(3)RTC时间读取;(4)语音播放和按键读取;(5)将里程写入EEPROM。每个任务都有自己的堆栈和CPU寄存器,并且被赋予一定的优先级。这些任务优先级由低到高,优先级高的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。μC/OS-Ⅱ有任务级和中断级两种任务调度方式,其中J1939协议通信采用了中断级任务调度,其它采用任务级任务调度,这样保证了J1939协议通信的实时性和避免其它任务的干扰。
2.2 μC/GUI图形显示界面的实现
μC/GUI是一个通用的嵌入式图形软件,具有模块化的特点,由于μC/GUI采用分层结构,即具有驱动接口层和应用层;而且μC/GUI的代码全部用C语言编写,因此它可方便地移植到各种CPU下使用。μC/GUI目录结构见表1。
表1 μC/GUI目录
μC/GUI移植步骤如下。
第一步:S3C2440A内置一个LCD控制器,其实现须根据屏幕的参数对内置的LCD控制器相关寄存器进行设置,保证时序、扫描模式和显示类型等的正确设置,保证TFT底层驱动程序正确。
第二步:ADS编译器加入UCGUI程序包。
第三步:配置 LCDConf.h、GUIConf.h和GUITouchConf.h。LCDConf.h文件中包括分辨率和像素的位数。GUIConf.h文件中包括操作系统多任务支持、动态内存的大小、窗口控件支持和抗锯齿等。其中由于采用高分辨率屏幕和动画显示等原因,动态内存分配必须大于4M以上。
第四步:修改 LCDDriver驱动。可根据示例LCDWin.c进行修改,其中最重要的两个函数为底层驱动设置像素函数LCD_SetPixel(x,y,PixelIndex)和获取像素函数LCD_GetPixel(x,y)。这两个函数是最基本函数,其他函数比如画线、点、圆都须调用该函数。
第五步:在GUI_X_uCos.c中通过μC/OS-Ⅱ操作系统中的延时程序同μC/GUI挂接实现整合。
在μC/GUI图形界面移植完成后可直接调用μC/GUI的API函数在LCD上显示各种图形、文字和特效显示[5]。
字体和图片显示可采用μC/GUI通过点阵来显示字体和图片,可利用μC-GUI-FontConvert.exe字体转换器和μC-GUI-BitmapConvert.exe位图转换器,将矢量字体和图片转换为C语言代码,用数组保存字体相关信息。通过加入编译和gui.h中进行声明,即可调用API函数进行字体和图片显示。仪表显示中使用了多种字体,包括宋体中文和数码管字体,图片主要包括警告灯等图片显示。
指针动画显示可采用如图5所示的动画显示制作流程。动画显示主要用到视窗管理器,使用时在一个视窗内(屏幕上的一块区域)显示仪表所有内容。该区域作为一个绘制或显示对象的用户接口部件,其视窗可以是任意大小,可在屏幕上同时显示多个视窗,甚至能在其它视窗上部分或完全地显示。视窗管理器提供了一套函数,使之能很容易地对许多视窗进行创建、移动、尺寸调整和其它操作。
2.3 J1939协议的实现
SAE J1939协议是美国汽车工程师协会SAE发布的以CAN总线为基础、以CAN2.0B作为网络核心协议的车辆网络串行通信和控制协议。它是以CAN总线为基础并涉及了应用层的上层协议,可达到250Kb/s的通信速率,是目前最有实用参考价值的车用网络协议,在国内汽车行业中应用最广。它对汽车内部ECU的地址配置、命名、通信方式和报文发送优先级等都作了明确的规定,并对汽车内部各个具体的ECU通信内容作了详细说明。在本系统中车速和转速等信号依照J1939协议从CAN总线获得[6-7]。在《电动汽车非车载传导式充电机与电池管理系统通信协议》中也定义了电池管理系统和充电机的通信协议[8],通信采用了标准推荐的125Kb/s的通信速率,帧格式采用CAN扩展帧的29位标识符,具体每个位分配的相应定义符合SAE J1939—21的规定。
利用Microchip公司提供的J1939协议库函数,大大简化了软件开发的过程。J1939协议实现流程是:(1)根据 S3C2440A硬件修改 SPI16.C和SPI16.h的底层管脚定义和中断等实现SPI驱动,加入库函数并根据实际情况对配置进行修改;(2)利用中断接收J1939协议数据;(3)根据SAE J1939协议判断计算车辆工况和故障代码等信息[9]。例如仪表地址为0x17,接收到数据0C F00400 XX XX XX 4E 20 XX XX XX,根据协议报文为PGN61444和SPN190,源地址:发动机,发动机转速位置在4~5B,分辨率:0.125(r/min)/b,0偏移。4~5B为0x4E20,发动机转速可计算为20000×0.125=2500r/min。
3 界面显示和实际测试
液晶仪表模拟真实仪表的外观,除了可显示常规仪表显示的所有内容外,还可显示时间、汉字说明等。仪表内部可设置几套显示界面,用户可自己根据喜好选择,比常规汽车仪表更加人性化。国家标准规定电动汽车仪表类别包括指示仪表装置、警告和指示信号装置。其中指示仪表装置包括动力蓄电池指示仪表、荷电状态指示器、电压表、电流表、驱动电动机指示仪表和转速表。警告和指示信号装置包括过热、超速和剩余容量,通过光学和(或)声学信号告知驾驶员[10]。
由于电动汽车用仪表和传统汽车仪表显示内容的不同,参考电动汽车用仪表国家标准所需的显示内容和ISO标准2575《道路车辆控制装置、指示器和信息装置的符号》中规定的图形标志,设计了适合电动汽车使用的LCD仪表界面。仪表显示示意图如图6所示。图中对国家标准所规定的显示内容都有指针动画、数字指示或者提示图标显示,在仪表的最下一行对车辆的重要信息可以提供中文提示和说明。
在电动汽车充电的过程中,液晶屏幕也可通过清晰、直观的进度条方式显示目前充电状态和电池目前的容量情况等信息,如图7所示。
图8为在某电动汽车厂家进行实车测试时的汽车仪表实物图,测试时能够通过车辆通信协议实时读取车辆参数并在液晶屏幕上准确显示,指针动画转动平滑,反应无迟钝现象,数字变化正常。
4 结束语
汽车液晶数字仪表是未来发展方向,本文中研究和实现了新一代的汽车纯液晶数字仪表,硬件采用了以S3C2440A为主控芯片的高分辨率7英寸液晶屏等。软件使用了μC/OS-Ⅱ操作系统和μC/GUI图形显示界面,软硬件保证了系统的实时性和图形界面的显示效果,通过J1939协议保证汽车仪表可通过CAN总线读取车辆实时工况。所设计的汽车纯液晶仪表可满足实际的使用和显示需求,节约了厂家开发成本,只须适当的软件修改即可满足不同客户的个性化显示需求。由于μC/GUI图形显示界面目前支持的特效较少,还不能达到非常完美的显示效果。另外由于液晶长宽比原因显得有点拥挤,加大长宽比可得到更加接近实际汽车仪表尺寸,并满足驾驶员习惯。
[1]纪宁宁,孙灵燕.S3C2440A驱动RGB接口TFT LCD的研究[J].液晶与显示,2008,23(1):96-100.
[2]倪红波,周兴社,谷建华.基于QT/E的嵌入式图形支持系统[J].计算机工程,2007,33(20):256-258.
[3]刘昌盛,郭勇,谢习华.嵌入式Linux环境下MiniGUI的研究与移植[J].哈尔滨理工大学学报,2009,14(1):23-27.
[4]Labrosse Jean J.μC/OS-Ⅱ源码公开的实时嵌入式操作系统[M].邵贝贝,译.北京:中国电力出版社,2008.
[5]陈文辉,蔡启仲.uC/GUI在单片机系统上的移植[J].计算机工程,2007,33(12):275-279.
[6]夏继强,李晓君,等.SAE J1939协议栈设计及μC/OS-Ⅱ系统下的开发平台的研究[J].汽车工程,2008,30(12):1069-1074.
[7]闫哲铭,王建,王启慧,等.基于Luminary LM3S8962的汽车数字仪表系统设计[J].汽车工程,2010,32(2):163-137.
[8]GB/T 27930—2011.电动汽车非车载传导式充电机与电池管理系统通信协议[S].北京:中国标准出版社,2011.
[9]谢东坡,张仪栋,等.基于SAE J1939协议的客车ECU参数测试系统[J].汽车技术,2010(12):45-47.
[10]GB/T 19836—2005.电动汽车用仪表[S].北京:中国国家标准化管理委员会,2005.