基于ARM9的嵌入式智能车载系统设计
引 言 随着社会经济的发展,汽车已成为人们工作、生活中不可缺少的一种交通工具。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,开发了各种各样的电子控制系统。本文设计一种基于ARM9 S3C2410A的智能车载系统,它能够通过GPS全球定位系统和GPRS无线通信技术,实现车辆定位以及车辆与控制中心之间的数据通信,构建CAN总线控制模块用于采集车辆主要部分的工作状态,实时监控汽车的主要技术参数,并通过LCD模块显示车载信息的综合信息。
1 智能车载系统的功能 车载智能导航终端应具有如下功能: 车辆定位 它指通过GPS全球定位系统获取车辆的当前所处位置,包括经度、纬度、运动速度、标准时间以及海拔高度等信息;
网络通信 它采用GPRS无线通信技术,与监控中心保持联系,实时获取道路交通状况,为交通道路的智能管理提供基础;
故障检测 它通过CAN总线实时检测汽车的主要技术参数;
信息显示 它通过LCD液晶屏显示车辆位置、调度信息以及检测到的汽车技术参数。
智能车载系统可根据用户需要实现其他功能,例如通过GPRS自动报警增加自动报警功能,扩展音频设备和IDE接口设备以增加娱乐功能,通过USB接口连接图像采集设备,对车内外进行视频监控等功能。
2 智能车载硬件系统设计 本系统以S3C2410A为主控模块,扩展了64 MBNand Flash,用于存放启动代码和嵌入式Linux操作系统等;64 MB SDRAM用作系统运行时的内存;LCD提供了更好的人机交互界面,并通过串口与GPS模块相连,通过UART异步串口与GPRS模块相连,通过SPI接口与CAN总线相连,利用CAN总线挂接传感器,检测汽车主要技术参数,系统框图如图1所示。
2.1 主控模块 S3C2410A高信价比、低功耗和低价格而设计的一款基于ARM920T内核的16/32位RISC嵌入式微处理器。它采用5级流水线,资源丰富;带有独立的16 KB的指令Cache和16 KB的数据Cache,64 MB SDRAM,64 MB NandFLAsH,LCD控制器,RAM控制器,NAND内存控制器,3路UART,4路DMA,4路带PWM的定时器,并行I/O口,8路10位ADC,Touch Screen接口,I2C接口,I2S接口,2个USB接口控制器,2路SPI,其工作频率最高达到203 MHz。 2.2 GPS模块 GPS模块主要完成GPS定位信息的接收和处理。根据设计性能的要求和节约系统成本的考虑,选用的就是GARMIN公司的GPS25-LVC接收机,其内置了GPS25OEM板。该接收机与主控模块的接口方式采用RS 232兼容TTL的串行口方式,因此设计中将其与S3C2410A的串口1相连。GPS-25LVC与S3C2410A之间信号线仅需要连接GPS25-LVC的TXD1与S3C2410A的TXD1。另外,还要将GPS25-LVC的地线和电源线连接到主控板的地线和5 V电源上。 2.3 GPRS模块 GPRS模块主要完成车辆与车辆、车辆与控制中心的通信。在本系统中,GPRS模块选用MC35。MC35的数据输入/输出接口实际上是一个UART,它可以与S3C2410中的UART接口直接相连。 2.4 CAN总线模块 CAN总线模块可以使本系统与其他车载模块的连接,完成收集车辆的状态信息以及进一步控制。CAN总线模块主要包括CAN总线的控制器和收发器,在这里分别选用的是Microchip公司的MCP2510和飞利浦公司的PCA82C250。其中,CAN总线控制器MCP2510实现了CAN总线的协议,CAN总线收发器PCA82C250提供协议控制器和物理传输线路之间的接口。由于CAN总线控制器MCP2510具有SPI接口,因此,系统中将其与S3C2410A的SPI0相连。 2.5 故障检测模块 故障检测模块主要是对汽车的主要技术参数进行检测,并显示到LCD显示器上,如果检测到故障,会发出报警信号。本文主要检测的技术参数包括燃油消耗量、制动力、转向力、发动机温度、冷却液温度、前照灯,以及车内噪声和尾气等方面。该模块主要是通过各种传感器把各种信号转换为电信号,再利用信号处理电路把电信号进行相应的处理,使其能与CAN总线模块进行数据传输。 2.6 LCD模块 LCD模块用以实现信息的显示,提供一个良好的人机交互界面。本系统主控模块的处理器S3C2410内置了LCD控制器,支持STN-LCD和TFT-LCD。本文选用夏普公司的TFT-LCD模块LQ080V3DG01,该模块具有640×480的分辨率,18位的颜色深度,可与S3C2410A的LCD接口直接相连。
3 智能车载系统软件设计 由于Linux具有源代码公开、剪裁方便、移植方便等诸多优点,所以本系统选择嵌入式Linux作为软件运行平台。嵌入式Linux是将Linux内核移植到S3C2410A平台上。嵌入式Linux操作系统不仅可使软件的开发更加灵活,也能使整个系统的可靠性得到提高。该软件设计的具体流程如图2所示。 交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。BootLoader是系统加电启动运行的第一段软件代码,类似于PC机的BIOS加上硬盘MBR中的引导程序。它可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核或用户应用程序准备好合适的环境。Linux操作系统的移植是将Linux内核经过重新的剪裁、编译后移入到S3C2410A上。下面主要阐述各模块驱动和应用程序的编写。 3.1 GPS定位功能实现 GPS模块软件设计的基本思想如下:首先接收完整的NMEA0183语句,然后提取相关的数据(时间、经纬度、速度),再将这些数据送去显示或者发送出去,并且可以保存,以便日后查看。 由于GPS模块是通过串行口1与S3C2410A进行通信的,因此本文设计了Linux系统下相应的串行口通信程序。串口程序设计具体步骤如下: (1)串行口1的初始化:设置串行口1的通信方式为8位数据位,1位停止位,无奇偶校验位。波特率为4 800 b/s。 (2)一帧一帧接收ASCII码字符信息。 (3)对每一帧ASCII码字符信息进行数据处理。 在数据处理过程中,针对需要的定位信息要求,设计了如下的串行通信思想: ①以“$GPRMC”为过滤条件,接收定位语句。 ②在“$GPRMc”之后的59个字符为有用的信息,所以用“59”作为判断定位语句完整的依据。 ③在数据接收的过程中往往会有两种情况,一种是每帧会得到一个以“$GPRMC”开头的完整语句,另一种是上一帧的后半部分在加下一帧的前一部分共同组成的完整定位语句。 3.2 GPRS通信模块实现 GPRS模块是借助GPRS无线网络实现数据的无线传输,从而在不同的车辆或车辆与控制中心之间架起沟通的桥梁,所以软件的功能主要是建立无线连接,按照GPRS通信协议传输数据。 GPRS模块的通信主要是通过串口驱动实现,在嵌入式Linux内核中已经提供了对串设备的支持,因此在配置内核编译选项时,只需要选中对串口设备的支持,就可以实现对GPRS模块的串口数据通信功能。为了实现与Internet的通信,还需要在配置内核编译选项时选中PPP和TCP/IP协议。这样一旦网络连接建立,就可以使用应用程序来实现网络数据的通信。 本系统数据链路层采用PPP协议,它是一种面向字符的协议,是为在两个对等实体间传输数据包连接而设计的,使用可扩展的链路控制协议LCP来建立、配置和测试数据链路。用网络控制协议族NCP来建立和配置不同的网络层协议,并且允许采用多种网络层协议。一个PPP会话分四个步骤:建立连接、连接质量控制、网络层协议配置和连接终止。 嵌入式Linux系统内核源自于Linux内核,并保留了对TCP/IP以及其他的网络协议的支持。在嵌入式Linux系统上编写网络应用程序与在Linux上编写网络应用程序没什么大区别,通常只需要做很小的修改就可以移植到嵌入式Linux系统上。至此,GPRS模块完整地集成到嵌入式终端中。 3.3 CAN模块实现 CAN总线驱动程序要完成的报文发送、接收等任务都是围绕CAN总线控制器展开的,因此驱动程序主要是对控制器MCP2510内部寄存器进行操作。CAN总线控制器MCP2510的初始化按照以下步骤进行: (1)软件复位,进入配置模式; (2)设置CAN总线波特率; (3)关闭中断,设置ID过滤器; (4)切换MCP2510到正常状态; (5)清空接收和发送缓冲区; (6)开启接收缓冲区,开启中断。
4 结 语 该系统不仅能够通过GPS和GPRs实现车辆定位以及车辆与控制中心之间的数据通信,还能够通过CAN总线检测汽车主要技术参数,为交通道路的智能管理以及汽车的安全驾驶提供了可靠保障。
|