1 引 言
嵌入式系统是以应用为中心,计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。使用嵌入式系统不仅对稳定性有很大的改善,而且使应用模块化,极大提高程序的可读性、可扩展性和可移植性[1]。
全球定位系统(Global Position System,GPS)是可在海、陆、空进行全方位实时三维导航与定位的新一代卫星导航定位系统,具有全天候、高精度和高效益等特点,现GPS已在各领域得到广泛应用[2]。
本文采用嵌入式操作系统μC/OS-II,控制OEM板接收导航信息,并对GPS数据采集系统的硬件和软件提出了详细的设计方案,给出了提取GPS特征数据的算法,这些对研究嵌入式系统应用、GPS定位及其在组合导航中的应用以及对OEM板的二次开发等都是实用的。
2 系统总体设计
嵌入式GPS数据采集系统由接收部分(OEM板)、电平转换部分(MAX232)、控制部分、显示部分组成,硬件结构如图1所示。
OEM板通过天线接收来自GPS的导航数据并经过电平转换后发送给EP7312, EP7312接收OEM板发来
的数据并存储、显示。EP7312与OEM板之间采用异步串行方式通信,帧格式1位起始位,8位数据位,1位停止位,无校验位,波特率为9600 bit.s-1。通过软件控制EP7312对GPS信号进行实时处理,以获得当前的经度、纬度坐标等所需信息,并通过液晶显示。
3 系统硬件配置
3.1 接收模块
GPS-OEM板主要是由变频器、标频器、信号通道、微处理器和存储单元等构成。在上电完成初始自检后,它将自动地接收来自天线的GPS射频信号,经过变频、放大、相关、混频等一系列处理后,完成并行通道对其视界内几何位置最佳的数颗卫星的连续跟踪,并且测出信号从卫星到接收天线的传播时间,解译出GPS卫星所发送的导航电文,最后经由I/0口输出串行数据,这些数据主要是向用户提供定位信息,包括纬度、经度、速度、时间等。
系统接收部分选用的Jupiter TU30-D410 -031,是美国Rockwell公司生产的并行12通道OEM板。该OEM板具有体积小、定时时间短、无静态漂移等特点,能够提供位置、速度、时间、定位与导航信息,以载波相位输出、1PPS时标和10kHz方波输出,适合各种导航定位的应用。
3.2 控制模块
系统采用Cirrus Logic公司的32位嵌入式处理器EP7312。该ARM处理器内带8K缓存,支持Thumb指令。EP7312资源丰富,功能强大,有27个通用I/O,2个UART,2个定时器,并内带LCD控制器,可直接连接单色、彩色LCD。EP7312功耗很低,最大不超过90mW。
采用EP7312构成的GPS应用系统,具有功耗低、体积小、使用灵活的特点,系统的结构和功能可以根据需求的不同进行个性化配置,而且可以很方便地进行系统外设的扩展。
3.3 显示模块
本系统采用液晶显示器是SHARP公司的彩色LCD,有效显示点阵为320×240,其功耗较低,抗干扰能力强,体积小。由于EP7312内部带有LCD控制器,当系统接收OEM板输出的导航数据信息时,只要设置其内部控制器的寄存器就可以对LCD实现控制,然后再通过向Frame Buffer输出接收到的并经过处理的导航信息,这时显示屏上就可以显示定位点精确的经度、纬度及本地时间了。
4 系统软件设计及实现
4.1 μC/OS-II简介
μC/OS-II是开源实时嵌入式操作系统,绝大部分代码是用C编写的,其可移植性较强,可广泛地应用于各种不同的硬件平台上[3]。μC/OS-II是一个占先式实时系统,当有优先级高的任务就绪时,原任务将被打断而转为优先级较高的任务,这也是实时性的重要保证。μC/OS-II具体移植可参照其它资料。
4.2 应用程序设计
根据设计要求,系统将应用程序划分为采集存储和显示两个任务,其优先级分别为10和11。采集存储任务的主要功能是对导航数据采集,并且每30秒作为历史记录存储一次,以便与当前的导航信息比较。首先必须掌握系统的通信协议。GPS-OEM板采用NMEA-0183通信标准格式,可以输出多种句型,均以“$”开头。输出的语句按串口通信协议,波特率9600bit.s-1,1位开始位,8位数据位,1位停止位,无奇偶校验。输出数据采用的是ASCⅡ码字符,内容包含了纬度、经度、速度、日期、航向及卫星状况等信息。语句达十余种,本系统所使用的语句仅限于$GPRMC定位数据语句。其结构为:
$GPRMC,<1>,<2>,<3>,<4>,<5>,
<6>,<7>,<8>,<9>,<10>,<11>*hh
其中“GP”为交谈识别符;“RMC”为语句识别符;“*”为校验和识别符;“hh”为校验和,其代表了“$”与“*”之间所有字符的按位异或值(不包括这两个字符)。
$GPRMC语句数据区的内容为:
<1>定位点的协调世界时间(UTC),hhmmss(时分秒)格式;
<2>定位状态,A=有效定位,V=无效定位;
<3>定位点纬度,ddmm.mmmm(度分)格式;
<4>纬度半球,N(北半球)或S(南半球);
<5>定位点经度,dddmm.mmmmm(度分)格式;
<6>经度半球,E(东经)或W(西经);
<7>地面速率,000.0节~999.9节;
<8>地面航向,000.0度~359.9度;
<9>UTC日期,ddmmyy(日月年)格式;
<
10>磁偏角,000.0度~180度;
<11>磁偏角方向,E(东)或W(西)。
由于TU30-D410-031的波特率设置为9600bit.s-1,因此任务运行时,首先应将串行口的波特率设为此值,EP7312就会接收到OEM板的定位数据。在串口收到信息后,先判别是否为语句引导头“$GPRMC”,否,则放弃此次接收;是,则接收数据内容。由于接收到$GPRMC帧头后,再接收11个数据包即完成整帧数据的接收,存储后系统将调用等待延时函数。
显示任务的功能是负责所采集的数据在LCD上显示出来,每隔一秒刷新一次。$GPRMC语句输出了基本的定位信息,可以满足一般用户的使用要求。接收来的数据存放在内存中,提取时先从数据中读取定位状态判断是否有效,若有效再提取相应的时间及经纬度等信息。应注意的是在处理北京时间时应在UTC时间上加上8h才是准确的北京时,在超出24h时应作减24h处理。系统运行时GPS定位信息在LCD上显示界面如图2。
5 结束语
本文论述了嵌入式系统对GPS数据的读取、处理及显示的方法,分析了GPS模块的信息格式并编制通信软件,成功地实现了GPS定位信息的接收与显示。该系统程序简单,可靠,可运用于车辆的导航系统中,另外,其方法思路对嵌入式系统、OEM板开发也具有很好的参考价值。
参考文献
[1] 王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社,2003.
[2] 王惠南. GPS导航原理与应用[M].北京:科学出版社,2003.
[3] Jean J. Labrosse.μC/OS-II—源码公开的实时嵌入式操作系统[M].邵贝贝,译.北京:中国电力出版社.