基于ARM 和Qt/E的车载HMI终端设计

最新更新时间:2012-04-29来源: 21IC关键字:车载HMI终端  CAN接口  RS232 手机看文章 扫描二维码
随时随地手机看文章

  改善HMI (Human Machine Interface)终端性能可降低车辆控制系统操作的复杂性,也可提高驾驶员对自己车辆的控制力。车载HMI通过单一结构中控台,可以减少零部件数量,提高性价比。传统机械式的控制终端正在逐步向直观、便捷的HMI终端发展。2009年6月29日,美国汽车多媒体与通信研究服务公司Strategy Analytics发布最新研究报告,认为“车载人机界面市场领先者保持强势地位”。报告预测,2015年,车载语音和触摸屏市场规模将达到29 亿美元。目前,HMI设备,尤其是语音、触觉控制和触摸屏,在汽车市场上被大量应用。

  本文报告了一种基于触摸控制与数字显示理念的车载HMI终端,通过在ARM 上移植Qt/E接TFT-LCD触摸面板加以实现。

  1 系统结构介绍

  基于ARM 和Qt/E的车载HMI终端主要由两个模块组成,分别是ARM 处理器与触摸显示屏组成的HMI触控平台和CAN/RS232协议转换器模块。该终端可接入车载CAN网络中实现车载设备的触摸控制与状态信息显示。其结构框图如图1所示。

  

  图1 车载HMI终端结构

  HMI触控平台主要是将Qt/E交叉编译后移植到ARM 平台,调用GUI在触摸面板显示。通过点击触控界面发送控制字,经CAN/RS232网关发送到CAN网络中对各设备进行控制,同时实时采集各设备运行状态参数并显示,便于驾驶员及时了解车辆运行状态。该平台还预留了UART和USB端口分别可外接GPS模块,无线上网卡或U 盘设备,实现导航、无线上网和多媒体播放功能。

  CAN/RS232协议转换模块主要由MCU、CAN 接口与UART接口组成,其中CAN 接口采用CAN 控制器SJA1000和CAN收发器PCA82C250设计,RS232接口采用MAX232设计,以此实现两种不同总线协议数据帧的透明转换,是HMI终端与CAN网络中各设备交互的纽带。

  车载CAN网络模块主要以Polo车CAN 试验台为平台,试验台集成了车灯、电动车窗、雨刷和后视镜CAN 节点模块。

  2 Qt/E在ARM 上的移植

  Qt/E是Trolltech公司专为嵌入式Linux系统开发的图像用户界面(GUI)工具包。提供了窗口操作系统、开发环境、工作辅助应用程序和个性选项等,是基于C++ 可跨平台的GUI应用程序框架;还提供给开发者建立艺术级GUI所需的功能,开发者可根据需求定制整个软件解决方案。目前,众多手机、PDA、机顶盒都采用Qt作为图形引擎。因此,选择了Qt/E作为HMI终端的开发工具

  2.1 交叉编译环境的搭建

  采用宿主机Fedora9.0作为开发平台,移植ARM 版Qt/E4.7进行设计。因编译Linux内核和Qt/E都需要交叉编译工具链,交叉编译器版本过高过低都会与Qt/E4.7不兼容,最终导致安装失败,所以一定要根据Qt的版本来选择对应的编译器。本系统采用arm-linux-gcc-4.5.1.安装过程如下:

  首先,解压arm-linux-gcc-4.5.1安装包,运行#tarxvzf arm-linux-gcc-4.5.1.tgz命令;然后将编译器所在路径加入系统环境变量,运行#gedit/root/.bashrc编辑该文件,修改最后一行为export PATH=PATH:/usrt/local/arm/4.5.1/binPATH,此时交叉编译器已经安装好;最后执行#arm-linux-gcc-v显示编译器版本信息,验证是否安装成功。

  2.2 Qt/E4.7的编译与移植

  减压ARM 版Qt/E安装包到指定目录,然后进入该目录执行编译配置源码命令#echo yes | 。/configure -opensource-embedded arm –xplatform qws/linux-arm-g++-no-webkit-qt-libtiff-qt-libmng-qt-mouse-tslib-qt-mouse-pc-no-mouse-linuxtp-no-neon.其中编译ARM 平台的embedded版本配置参数为embedded arm,使用arm-linux交叉编译器进行编译为xplatform qws/linuxarm-g++,qt-mouse-tslib是使用tslib来驱动触摸屏。然后执行make命令进行编译,当编译完成之后执行安装命令make install.最后把安装文件打包#tar cvzf qt4.7.tgz,下载到ARM 开发板,并解压到指定目录。至此Qt/E在ARM 开发板上移植完成。

  安装Linux环境下X86版Qt SDK软件-Qt Creator2.0进行Qt程序开发,设置为支持Qt4.7ARM 的交叉编译。最后将设计好的程序通过编译,生产二进制文件下载到ARM 开发板运行,以此实现HMI界面显示功能。

  3 车载HMI终端的硬件设计

  3.1 CAN/RS232协议转换器的硬件设计

  CAN/RS232协议转换器主要有主控制器、CAN接口模块与RS232接口模块组成,其中主控制器采用STC89C52单片机负责处理CAN总线与RS232总线的数据接收与发送,实现两种不同协议数据帧的透明转换与传输。

  CAN接口模块采用Philips公司的CAN 控制器SJA1000和CAN收发器PCA82C250芯片组成,主要实现CAN协议的物理层和数据链路层功能。其中CAN控制器完成数据链路层功能,实现与主控制器的信息读写操作,物理层通过CAN收发器实现电平转换和传输。SJA1000的AD0~AD7与单片机P0口连接,实现地址/数据复用;片选/CS与P2.7相连,则基地址为0x7F00;/RD、/WD、ALE引脚依次与单片机各引脚相连;中断/INT接单片机/INT0,因此可通过中断方式对SJA1000进行实时访问。SJA1000的MODE 引脚用于选择CAN控制器在Intel模式还是在Motorola模式工作。由于STC89C52属于Intel系列微控制器,故MODE引脚接+5V高电平设置为Intel模式,以满足89C52的读写时序要求。为了增强节点的抗干扰能力,以及避免当CAN收发器失效时出现过流导致CAN控制器击穿,SJA1000的TX0和RX0引脚通过光耦N6137后与PCA82C250的TXD和RXD连接,以此实现总线上节点间电器隔离;收发器CAN_H 和CAN_L引脚通过5Ω电阻与CAN总线端口连接起到限流作用;同时两端接120Ω终端匹配电阻。

  RS232接口电路采用MAX232芯片,实现单片机串口TTL电平与RS232电平相互转换,完成HMI终端UART口的信息传输。STC89C52串口端(P3.0和P3.1)与MAX232的T1IN和R1OUT连接,T1OUT与R1IN接九针串口,然后通过交叉线与HMI终端连接实现数据通信。

  3.2 车载HMI触控平台的设计

  HMI触控平台以ARM 为处理器,接7.0寸LCD触摸屏来实现,可取代传统的(如图2A)机械按键与表盘显示的中控平台。HMI触控平台如图2B所示,由车灯、车窗、后视镜、多媒体、空调、导航以及状态参数显示菜单组成。将该终端嵌入到方向盘,驾驶员可点击触控菜单进入车灯、车窗等控制界面(如图2C和D)实现车灯、车窗等设备的触摸控制,也可实时采集与显示设备状态参数如:车速、故障码等。其中,触控与显示数据需调用ARM 底层串口驱动来实现读写操作,触控界面通过Button控件的信号与槽机制来实现数据的发送,状态参数的采集与显示通过事件驱动方式实现。终端可外接GPS模块实现导航功能,设计了Qt媒体媒体播放器实现娱乐功能,也可接入无线网卡来实现无线上网功能。

  

  图2 车载HMI终端

  4 车载HMI终端的软件设计

  4.1 CAN/RS232网关软件设计

  主程序中首先要完成初始化操作, 包括单片机、SJA1000、RS232通信以及中断源的初始化。其中SJA1000的初始化是整个设计最重要的部分,也是保证CAN 通信的前提。考虑车辆内部网络的兼容性,SJA1000配置为Peli模式,支持CAN2.0A和B规范,实现标准帧和扩展帧两种报文传输。SJA1000初始化寄存器配置流程如图3所示。

  

  图3 SJA1000初始化寄存器配置流程

  为保证数据实时传输,采用中断方式进行数据收发。

  当CAN总线有数据接收时SJA1000会跳入接收中断函数将数据接收并存储到接收缓存,根据数据帧头来判别数据类型和所带数据长度,最后提取CAN 数据拆分为单字节通过串口发送,并在HMI终端显示;当HMI终端有控制字发送,串口接收中断函数将所发送的控制字依次接收存入接收缓存,并根据首字节来判别所发数据类型和长度,组装成CAN数据帧格式发送到网络中去,以此实现各节点的控制。具体流程如图4所示。

  

  图4 数据接收与发送流程图

  4.2 车载HMI界面的设计

  HMI界面采用Qt Creator2.0来设计,因为HMI终端是通过UART接口接入CAN网络中,所以通信时需接上面所介绍的CAN/RS232协议转换器来实现。同时,还需在Linux下编写Qt串口通信程序。

  首先,在Linux下利用open函数打开串口设备,用tcsetattr函数来设置串口属性。打开驱动设备UART0进行读写操作:const char*devName= “ /dev/ttySAC0”;fd = ::

  open (devName,O_RDWR|O_NONBLOCK);设置波特率等参数:serialAttr.c_cflag= B115200| HUPCL| CS8|CREAD|CLOCAL;serialAttr.c_cc[VMIN]=1;其中串口设备可使用Linux下I/O函数进行Read和Write操作。但是,在数据接收时当数据量过大会导致界面被阻塞(造成界面假死),于是创建了一个线程通过事件驱动实现数据接收。

  Qt中可采用QSocketNotifier类来实现设备事件驱动的设计要求。QSocketNotifier类关联Signal/Slot机制,当有数据可读时会触发Ativated信号,LCD Number控件Slot会被调用来连接到该信号并显示,从而实现数据采集与显示功能。在数据发送时,可通过Button控件Signal/Slot调用QObject对象的connect()函数来实现[3]。当按键被按下时触发Signal信号,Slot会调用pressed ()函数将定义好的数据通过串口Write函数发送到总线上。函数实现如下:

  void Glass::on_lu_pressed(){char msg[]= {160,34,16,0};//定义所发送数据myserial-》myCom-》write(msg,4);//写发送数据}

  通过QPainter类进行对窗体界面和按键图像界面进行设计,达到美观的人机界面。最后将设计好的程序通过交叉编译,生产二进制文件移植到ARM 中,然后在文件系统中调用执行,最终在LCD触摸屏上显示,如图2所示。

  5 系统集成与测试

  首先将设计好的HMI终端通过交叉串口线与PC机连接,进行相互通信,测试是否能够进行数据收发,测试成功后通过CAN/RS232网关接入Polo车CAN试验台进行综合测试。试验台设备节点可通过触摸方式控制,同时可实时采集与显示运行状态信息,经过多次实验测试,运行稳定可靠,达到了设计要求。

  6 结束语

  本文所设计的车载HMI终端集车身控制、仪表显示、导航、多媒体和无线上网为一体,简化了车载中控平台,降低了车辆控制系统操作的复杂性。经实验测试实现了车身设备的触摸控制,能够对各设备运行状态信息进行采集与显示。为车载HMI开发提供了一种可行的设计思路与性价比更合理的解决方案。

关键字:车载HMI终端  CAN接口  RS232 编辑:探路者 引用地址:基于ARM 和Qt/E的车载HMI终端设计

上一篇:机车视频监控系统的设计与实现
下一篇:模拟IC与数字IC对比

推荐阅读最新更新时间:2023-10-18 16:42

基于单片机的CAN总线接口转换卡设计
1 引言 控制器局域网(Controller Area Network,简称CAN)是德国奔驰公司20世纪80年代为解决汽车众多控制设备与仪器仪表之间的数据交换开发的一种串行通信协议。它作为现场总线的一种广泛应用于各种工业现场,根据不同的需要或以主从方式、或以多主方式工作。CAN总线使用的通信介质为双绞线或其他电缆,传输速率可达lMb/s。CAN总线与其他通信网的不同之处有二:一是报文传送中不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,该收的收下,不该收的弃而不用。其好处是可在线上网下网、即插即用和多站接收;二是特别强化了对数据安全性的关注,满足控制系统及其他较高数据要求的系统需求。鉴于
[单片机]
基于单片机的<font color='red'>CAN</font>总线<font color='red'>接口</font>转换卡设计
LOTO 示波器软件功能演示——RS232串口解码
我们今天演示一下怎么用LOTO示波器对串口进行解码,使用了一个USB转串口的设备,来产生串口数据,用OSCA02 LOTO示波器演示。 示波器我们只需要建立一个通道,连到A通道上,接上探头。 DB9是一个标准的串口接口,这种串口的电平就不是ttl电平。当然我们做单片机或者做arm开发的时候,芯片有一些是ttl电平的串口,通过RS232可以转成这种电脑上用的对接的这种串口,这种大概十几伏。 这边我们加了一个接口,方便把他的2,3脚短接,就是自发自收,5脚是接地。这样的话我用示波器的黑夹子接他的地,然后用探针接他2,3脚的短接。在自发自收的过程中监测他的数据波形来做解码。因为我们不是ttl电平,所以他的电平比较大。 接上后
[测试测量]
LOTO 示波器软件功能演示——<font color='red'>RS232</font>串口解码
基于ARM的数字化病房呼叫系统
数字化病房呼叫系统是一种应用于医院病房、养老院等地方,用来联系沟通医护人员和病员的专用呼叫系统,是提高医院护理水平的必备设备之一。 目前市场上存在着许多医院病房呼叫系统,主要为有线式和无线式两大类。 无线式系统采用无线传输,但是无线电波会干扰其它医疗仪器设备,同时医疗设备也会影响该呼叫系统的正常通讯,导致设备不能正常工作等状况;传统的有线式病房呼叫系统采用集中式结构,电源线、数据通信线、语音通信线分开传输,具有较好的稳定性。目前大多数医院采用此类有线呼叫系统。 本系统以ARM为核心设计,整个系统只需一条网线即可完成通讯。主机通过网线向各终端设备即分机提供数据通信和语音通信的通道,同时终端设备的供电也由该网线提供。在系
[单片机]
基于ARM的数字化病房呼叫系统
RS485/RS232转换器实现的串行通信
在电参数仪的设计中,数据采集由单片机AT89C52负责,上位PC机主要负责通信(包括与单片机之间的串行通信和数据的远程通信),以及数据处理等工作。在工作中,单片机需要定时向上位PC机传送大批量的采样数据。通常,主控PC机和由单片机构成的现场数据采集系统相距较远,近则几十米,远则上百米,并且数据传输通道环境比较恶劣,经常有大容量的电器(如电动机,电焊机等)启动或切断。为了保证下位机的数据能高速及时、安全地传送至上位PC 机,单片机和PC机之间采用RS485协议的串行通信方式较为合理。 实际应用中,由于大多数普通PC机只有常用的RS232串行通信口,而不具备RS485通信接口。因此,为了实现RS485协议的串行通信,必须在PC机侧
[嵌入式]
基于RS232行列式矩阵键盘接口的设计方案
  一、引言   本方案是用VHDL语言来实现的基于RS232按位串行通信总线的行列式矩阵键盘接口电路,具有复位和串行数据的接收与发送功能,根据发光二极管led0-led2的显示状态可判断芯片的工作情况;实现所有电路功能的程序均是在美国ALTERA公司生产的具有现场可编程功能的芯片EPM7128SLC84-15上调试通过的。能通过动态扫描来判有键按下、将键值转换成对应的ASCII码值,在时钟脉冲的作用实现串行数据的接收与发送。   二、设计方案   1.芯片引脚定义      reset复位输入端;clk时钟输入端;rxd串行数据接收端;retn0-retn7键盘扫描行输入线;txd串行数据发送端;scan0-
[嵌入式]
基于PIC18F458的CAN总线接口设计
   1 引言   在ff、lonworks、profibus、can、hart等主流现场总线工业通讯技术之中,can(controller area network,又称控制器局域网)总线除了具备现场总线的开放式、互操作性、数字化通讯等特点外,还具有以下特点:(1)以多主机方式工作;(2)can上的节点信息分不同的优先级,可满足不同的实时要求;(3)采用非破坏性总线仲裁技术,节省了总线冲突仲裁时间;(4)采用短帧结构,传输时间短,受干扰率降低,具有极好的检错效果;(5)每帧信息都有crc校验及其它检错措施,数据出错率极低;(6)通信介质可灵活地选择;(7)can上的节点数高达110个;(8)有很高的可靠性和性能价格比等。
[嵌入式]
RS232总线的控制系统开发
引言     在飞机飞控系统地面模拟试验中,常常需要函数信号发生器、动态分析仪等传统仪器给被测系统注入正弦、阶跃和扫频等信号。这些仪器往往存在着操作比较繁琐,容易误操作引起系统损坏等现象,这不仅影响试验的效率,还大大降低了试验的安全性。因此,如果能用相应的软件控制这些传统仪器的话,不仅可以提高工作效率,还可通过软件提示对误操作发出告警信息,使试验的安全性得到保障。RS-232(RecommendedStandard-232,推荐标准)可把这些可编程的传统仪器与计算机紧密地联系起来,通过接口函数,对其进行二次开发,最终实现软件控制仪器的目的。 1 测控系统的硬件平台     1.1 RS一232总线简介     RS
[嵌入式]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved