基于ARM9与WinCE的GPS定位信息采集系统
GPS可提供连续、高精度、实时的时间基准、三维位置、三维速度、整周模糊度等数据,具有性能好、精度高的特点,因而广泛应用于GPS载波相位测姿、精确制导、SINS/GPS组合导航、嵌入式车辆导航监控等军事与民用领域。而嵌入式系统以其低功耗、小体积、高稳定性和便携等优势,在GPS的应用中占据重要的位置。本文研究基于ARM920T内核的嵌入式微处理器S3C2440和WindowsCE 5.0(简称WindowsCE)的某型军车GPS定位信息的采集与处理。
1 系统硬/软件平台概述
车辆GPS定位信息采集系统的硬件平台结构如图l所示。
该平台可以分为3大模块:
1)微系统核心模块 由基于ARM920T的32位嵌入式微处理器S3C2440、SDRAM和Nand Flash构成和总线接口构成。2片32 MB的HY57V561620构成64 MB的SDRAM存储器,用于运行系统主程序。存储容量为64 M×8 bit的Nand FlashK9F1208UOM,因其具有掉点保护功能,用于存储操作系统内核、Bootloader的启动代码和用户程序。
2)GPS原始数据接收模块 由一台遵循NMEA-0183协议标准的GPS接收机和PS天线组成。通过外接GPS接收机,将接收到的GPS原始信息,送入到嵌入式微处理器进行数据解析,最终得出战车所在位置的位置、速度和海拔等信息。
3)外设控制模块 包括LCD+触摸屏、USB主/从口、电源、JTAG调试接口、复位电路。选用东华的自带4线模拟电阻式触摸屏和硬件驱动的3.5#TFT型LCD,用于人机交互以及现实解析后的GPS信息。USB主口用于扩展U盘,用于数据存储,从口用于下载WinCE内核文件以及与软件开发主机进行数据交互,JTAG调试接口用于硬件调试以及烧载Bootloader。
软件平台为微软公司的嵌入式操作系统WindowsCE,它界面友好,支持嵌套中断、更好的线程响应、更多的优先级别;支持串口和网络通信;具有丰富的API函数,具有强大的开发工具;多硬件平台支持,支持ARM、MIPS等处理器。经过Platform. Builder定制移植的WindowsCE操作系统如图2所示。
2 定位信息数据格式
GPS的输出数据遵循NMEA-0183协议标准,即美海军的电子设备标准。根据NMEA-0183协议,获取GPS定位信息,必须将串行口的波特率设置为4800b/s,数据位设置为8 bit,停止位设置为1 bit,校验为设置为无。该协议定义了GPS接收机输出的标准信息,最常用、兼容性最广的语句格式包括:$GPRMC、$GPGGA、$GPGSV、$GPGSA、$GPGLL等。应用到的GPS数据格式包括$GPRMC、$GPGGA、$GPGSV三种。其中,用$GPRMC语句获取时间、经纬度、速度、年月日信息,用$GPGSV语句获取海拔高度信息,用$GPGSV语句获取可见卫星数信息及卫星的方位角和仰角信息,用以获取卫星的视图。各语句的数据段的含义,参考NMEA-0183协议标准。
3 GPS定位信息采集和处理的软件实现
本系统的软件开发在可视化开发工具Embedded VisualC++(简称EVC)中,采用MFC编程技术实现。
3.1 GPS数据处理状态转换
GPS与ARM之间用RS232串口方式进行通信,串口对象负责接收数据,并把接收到的数据放置到串口缓冲区。GPS对象按照协议结构负责处理串口对象接收到的数据。图3为GPS数据处理之间的状态转换示意图。GPS数据处理状态共包括4个状态:开始状态、数据帧头状态、GPS数据正文状态和校验状态。
开始状态是一个数据帧的起始状态,它处理和判断数据帧的起始字符$。若起始符号不是其中的$,则一直停留在开始状态,直到$到来位置,数据帧头状态用于判断数据帧的格式是否与我们目前需要的目标数据帧相匹配。如果相匹配,那么将退转到下一个状态:GPS数据正文状态,开始进行数据处理。如果不匹配,则转移到开始状态。
数据处理中用到了缓冲区的概念,它一边累积计算接收的数据的异或和,一边把相应的数据域送入缓冲区。这样既降低了数据提取校验的复杂度,也提高了数据处理的延续性和正确性。当GPS数据正文状态完成,进入“*”字符的时候,将进入数据校验状态,它用于判断数据接收和处理的有效与否。若校验成功,则接收有效,收到CR,LF字符后又重新跳转到开始状态。若校验失败,则放弃处理的数据,直接跳转至开始状态。
3.2 完整GPS数据帧的截取
了解了GPS数据处理的四个状态之间的相互转换,下面论述一个完整的GPS数据帧的提取和处理,它是获取车辆GPS定位数据的关键。一个完整的GPS数据帧的提取流程如图4所示。
图4中,m_strRecDisp为一个CString变量,用于表示接收数据的字符串,该程序流程中,用到两个最重要的函数即:字符(串)查找函数和字符串截取函数。
1)字符(串)查找函数 该函数CString∷Find()用于从一个已有的字符串当中查找与目标字符(串)相匹配的首次出现
- 革新2410D开发板试用手记(04-21)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- 嵌入式Web服务器移植与测试(03-03)
- 基于ARM9与Linux的门禁监控系统软件设计(03-08)
- 嵌入式Linux下基于ARM9的媒体播放的设计(03-27)
- SamsungS3C2440平台上的VxworksBSP移植(10-28)