集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1064|回复: 0

基于嵌入式Linux汽车智能仪表系统的设计

[复制链接]
zhiweiqiang33 发表于 2014-4-3 17:06:28 | 显示全部楼层 |阅读模式
汽车的显示仪器作为驾驶员与汽车信息交流的主要途径,实时地将汽车的驾驶情况反馈给驾驶员。作为人机交换信息的一个重要窗口,汽车显示仪器有了很大的发展:第一代基于器械作用力,用机械指针显示;第二代基于电测原理,通过各类传感器采集非电量数据并转换成电信号显示;经过第三代的模拟电路电子式的发展到第四代全数字仪表,将各种输入信号转换成数字信号,通过专用的中央处理器处理各种信号,在LCD屏、VFD等显示屏上显示各种信息,全数字仪表重复性好、线性度好、可靠性高,适合现代生活对产品的智能化、数字化的要求[1]。
   本文提出了一种虚拟智能仪表系统,S5PV210为中央处理器;通过CAN总线传输各种显示所需要的数据;采用实时性嵌入式系统Linux为汽车的操作系统;图形应用界面库Qt开发终端应用程序。系统的性能得到提高,同时可扩展性和可维护性都有了很大的改善,具有很大的商业价值。
1 总体设计
    通过CAN总线实时地采集汽车的各种数据,包括汽车运行的转速、车速、水温、油量、电压、油压、里程等信息,然后由嵌入式处理器S5PV210处理数据,将得到的数据在显示屏上用图形界面虚拟显示。同时,系统在汽车异常运行时语音报警,显示器显示具体的异常原因。
2 硬件组成
    汽车智能仪表系统的硬件设计如图1所示,系统的控制核心采用SAMSUNG的S5PV210,采用ARM cortexTM-A8内核,ARM V7指令集,主频高达1 GHz,64/32 bit内部总线结构,具有非常高的运算能力。S5PV210包含很多强大的硬件编解码功能,同时内建高性能PowerVR SGX540 3D图形引擎和2D图形引擎,支持2D/3D图形加速,能更快地解码更高质量的图像和视频[2]。采用外置CAN控制器承担CAN节点控制器的任务,通过SPI接口与CAN控制器通信,快速高效。S5PV210嵌入了许多外围设备的功能,减少了系统芯片的数量。各种传感器将采集到的转速、车速、水温、油量、电压、油压、里程等模拟信号通过CAN总线传递给控制器自带的A/D输入口转换成数字信号,LCD屏实时显示采集到的信息,显示的图片信息存储在SD卡中,通过辅助小键盘调节显示效果。中心控制器处理信息,当信息不符合设定的正常数值时显示器显示异常原因,语音模块[3]发出警报。软件采用嵌入式实时操作系统Linux2.6.30高效地管理整个系统。

智能仪表采用网路化的集中管理,通过CAN总线将汽车各部分的信息传递给控制器,控制器通过CAN总线反馈实现汽车的有效操作。系统的CAN总线通信系统选用Microchip的MCP2515为控制核心,MCP2515是一款独立CAN协议的控制器[4-5],完全支持CAN V2.0B技术规范,通过符合工业标准的SPI口与控制器连接。LCD显示器选用CPT的8英寸工业屏CLAA080XA03BT,分辨率高达1 024×768,可视角度大、亮度高、对比度好、反应时间快,满足仪表系统对显示屏显示的各种要求。
3 软件设计
    汽车智能仪表系统采用嵌入式Linux为操作系统,Linux源代码开放并遵循GPL规则,选择Linux2.6.30版本,经过系统裁剪,以适合本系统的嵌入式和实时的应用,同时在Linux系统平台下编写各模块的驱动程序和应用程序。控制面板采用Qt/Embedded图形界面,外观显示的是传统机械仪表图形和数字图形结合的图形界面。传感器采集各种数据,经过CAN总线传输,控制器对各种数据处理,同时通过仪表图形界面显示各种数据,当出现异常时,界面显示原因并且语音提示报警。整个系统软件如图2所示。系统主要分为两个部分:Linux系统下各个应用模块的驱动程序设计和Qt图形界面设计。

3.1 驱动程序设计
 外部和内置设备驱动程序设计如下[6]:
    (1)8英寸的TFT-LCD屏驱动设计。在驱动LCD中首要配置LCD控制器,尤其是帧缓冲区(FrameBuffer)的指定,LCD是以字符设备方式加以访问和管理,采用“文件层-驱动层”的接口方式。文件层定义的数据结构为file_operation结构体中的接口函数,如读/写的read/write函数和用于控制的ioctl等。将LCD驱动程序模块化,将编写好的LCD驱动程序lcd.c放到arm/linux/drivers/char目录下,进行make menuconfig选择静态加载LCD驱动。
    (2)CAN模块驱动设计。系统中采用MCP2515独立控制器和TJA1050高速CAN总线收发器为一体的外接模块。MCP2515与主控芯片使用SPI数据总线进行交互,将SPI封装成SPI设备注册与驱动注册两部分,分别由platform_device和device_driver两个结构体实现。成功注册SPI总线后,将CAN总线驱动作为SPI子设备挂载到SPI总线上,与主控芯片传递数据。
    (3)A/D转换器驱动程序设计。S5PV210带有10路12 bit的模拟输入通道,A/D转换的驱动程序流程为:打开A/D转换器→采集模拟信号→进行A/D转换→输出数字信号→关闭A/D转换器。A/D转换驱动程序也是一个字符设备驱动,将编译好的A/D转换程序烧入内核。
    (4)5×5键盘驱动程序。键盘驱动程序采用层次型体系结构,分上下两层实现。上层为通用键盘抽象层,为底层服务;下层为硬件处理,对硬件直接操作。主要的工作在于编写底层处理函数,键盘中断处理获取按键的扫描码,调用handle_scancode(),识别按键在键盘的位置,实现按键驱动。
    (5)网口驱动程序、USB协议、控制信号输出驱动程序等驱动程序在Linux2.6.30中由官方给出,可直接调用。所有的驱动程序在系统中均采用静态编译方式,不需要模块加载。

您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-25 12:20 , Processed in 0.062335 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表