基于wince的GPS系统设计.docx
《基于wince的GPS系统设计.docx》由会员分享,可在线阅读,更多相关《基于wince的GPS系统设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于wince的GPS系统设计
基于wince的GPS系统设计
摘要:
WindowsCE操作系统是大部分手持移动设备的操作系统,其风格类似PC机,本系统是以wince系统为核心的嵌入式设备,在ARM920T开发平台上嵌入wince6.0的系统,与GPS模块相连后构成基本的定位系统,本文描述了GPS的通信协议和数据格式,GPS数据的接收和处理;剖析了整个系统的硬件结构和组成,为wince系统的移植提供了硬件基础;详细的阐述了整个应用程序的开发过程以及系统的测试,系统的主要功能是把经度、纬度、时间、日期以及所有的未解析的GPS数据显示在LCD屏幕上,如此,整个系统便能实现GPS定位.
关键字:
嵌入式系统,wince,GPS模块,ARM开发平台
DesignofGPSsystembasedonWinCE
Abstract:
theWindowsCEoperatingsystemistheoperatingsystemmosthandheldmobiledevices,itsstyleissimilartothePCmachine,thissystemisembeddedequipmentbasedonWinCEsystem,theembeddedwince6.0developmentplatformintheARM920T,whichconstitutethebasicpositioningsystemconnectedwiththeGPSmodule,thispaperdescribestheGPScommunicationprotocolanddataformat,receivingandprocessingofGPSdata;analysisofthehardwarestructureandcompositionofthesystem,whichprovidesahardwarefoundationforthetransplantofWinCEsystem;elaboratesthedevelopmentprocessofapplicationandtestofthesystem,themainfunctionofthesystemisthelongitude,latitude,time,dateandGPSdataallunresolveddisplayedontheLCDscreen,so,thewholesystemcanrealizelocalizationofGPS.
Keywords:
Embeddedsystem,windowsCE,GPSmodule,ARMdevelopmentplatform.
第1章引言
1.1课题背景
全球定位系统(GlobalPositioningSystem-GPS)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。
随着全球定位系统的不断改进,硬、软件的不断完善,应用领域正在不断地开拓,目前已遍及国民经济各种部门,并开始逐步深入人们的日常生活。
因其在众多领域的应用,使得研究其应用方法是很有必要的,并且随着科学技术的发展,产品的发展趋势也越来越倾向于小巧,便携,节能,功能齐全的方向发展着.就这一发展趋势,本文设计了一个带有操作系统的GPS显示系统的嵌入式设备.下面就相关知识做一个简单的介绍.
1.1.1嵌入式系统定义
国内对嵌入式系统的一般定义是:
以应用为中心,一计算机技术为基础,软硬件可剪切,从而能够适应实际应用中对功能,可靠性,成本,体积,功耗等眼科的要求的专业计算机系统.
1.1.2嵌入式系统的组成
嵌入式系统通常是由嵌入式处理器,外围设备,嵌入式操作系统和应用软件等几大部分组成.
1.嵌入式处理器
嵌入式处理器是嵌入式系统的核心部件.嵌入式处理器与通用处理器的最大不同点在于嵌入式处理器大多工作在为特定的用户群设计的系统中.它通常把通用计算机中许多部件集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,并具有高效率,高可靠性等特征.
2.外设备
外围设备是指在一个嵌入式系统中,嵌入式处理器以外的完成存储,通信,调试,显示等辅助功能的其他部件.根据外围设备的功能可分为以下3类:
1)存储器,2)接口,3)人机交互
3.嵌入式操作系统
在大型嵌入式应用系统中,为了使嵌入式开发更兼方便,快捷,需要具备一种稳定,安全的软件模块集合,用来管理存储器分配,中断处理,任务间通信和定时器响应,以及提供多任务处理等,这样的软件模块集合就是嵌入式操作系统.嵌入式操作系统的引入大大扩展了嵌入式系统的功能,方便了应用软件的设计,但同时也占用了嵌入式系统的宝贵资源.一般在比较大型或多任务的应用场合,才考虑使用嵌入式操作系统.
4.应用软件
嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期的任务的计算机软件.用户的任务可能有时间和精度的要求,因此,有些应用软件需要嵌操作系统的支持.
1.1.3嵌入式系统的特点
嵌入式系统是应用于特定环境下,面对专业领域的应用系统,它具有以下特点:
1)功耗低
2)体积小
3)集成度高
4)成本低
1.2课题意义
通过以上介绍,在WINDOWSCE操作系统上开发显示从GPS模块上下载的位置信息,这可以为以后开发诸如车载导航系统,防盗定位系统等产品提供有力的参考.从这个设计中,我们不仅能够了解和掌握有关GPS方面的有关信息,还能掌握在WINDOWSCE系统上,如何编写程序,以及深刻理解操作系统的基本原理.在通信领域中,如何通过嵌入式系统在与各种器件通信.
第二章GPS硬件系统方案设计
根据题目的要求,确定一下方案:
采用又由S3C2440做主控芯片的TQ2440开发板做主要载体,再配上GPS模块构成整体的硬件结构,主机搭载wince6.0操作系统,已达到我们所需要的软硬件要求,这种方案能实现系统进行定位,可满足对系统的各项要求.
2.1主板芯片的选择
主机的主控芯片市面上流行的主要有基于arm7的s3c2410和基于arm9的s3c2440以及基于arm11以上的ok6410等,由于我们是基于wince系统,arm7主要用于工业控制更多的时候我们只把它当做“高级的单片机”用,对于有操作系统的消费类电子它已不太合适,而arm11主要是是用于跑android系统这样的智能设备,所以说arm9对我们所要实现的设备是完全可以的,基于以上,我们选择以s3c2440作为主板芯片,选取TQ2440开发板作为我们的主板.
2.2GPS搜星选择
方案一选用usb蓝牙gps,需要适配蓝牙模块,将蓝牙作为串口.
方案二选用串口gps,TQ2440提供了一个串口,选择其作为gps的接口.这里我们选择串口gps模块.
2.3系统设计方案
本系统由TQ2440开发板和GPS模块构成.
2.3.1硬件系统设计框图
图1硬件系统框图
2.3.2开发平台构成
TQ2440开发板是由s3c2440a作为主控芯片,外加SDRAM作为内存芯片,以及3.3V供电电路、复位电路、Jtag电路、Nor/Nandfalsh启动选择电路、串口电路等构成,以下简单介绍其中部分相关芯片及其电路.
主控芯片是S3C2440A芯片,它由128个管脚组成,内部集成了LCD控制器、UART控制器、Jtag控制器、nand控制器等,下面介绍系统的基本硬件模块.
1.、供电电路如下:
图23.3v电源电路
图31.25v电源电路
3、复位电路如下:
图4系统复位电路
4、Jtag接口电路如下:
图5Jtag接口电路
5、开发板带有一个五线异步接口和一个UART扩展接口,其电路如下:
图6开发平台的串口电路
6、lcd液晶屏接口电路:
图7LCD液晶接口电路
其中跳线J4可以在3.3v与5v间选择液晶屏的供电电压.
7、系统时间电路:
系统时钟源直接采用外部晶振,内部PLL电路可以调整系统时钟,使系统运行速度更快.系统时钟电路如下图
图8系统晶振电路
8、usb接口电路
Usb模块集成在s3c2440A芯片中,所以使用S3C2440A时,可以直接利用其中的usb模块。
实验板上有个HOSTUSB1.1接口和一个DeviceUSB1.1接口,USB接口电路如下:
图9usb接口电路
以上为开发板基本的一些模块,当然还有一些其他的电路比如说SD卡接口电路、IIC接口电路、网卡接口电路等由于涉及的电路比较多如果一一叙述的话可能会占用比较大的篇幅,所以在本文中就不在嗷述。
2.3.3GPS协议及其模块
GPS信息协议:
NMEA是全国海洋电子协会(NationalMarineElectronicsAssociation);国际海上电子协会(NationalMarineElectronicsAssociation)或(NationalMarineElectronicsAssociation)获得国际海事电子协会
缩写,同时也是数据传输标准工业协会,在这里,实际上应为NMEA0183。
它是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不等,通常以每秒间隔选择输出,最常用的格式为"GGA",它包含了定位时间,纬度,经度,高度,定位所用的卫星数,DOP值,差分状态和校正时段等,其他的有速度,跟踪,日期等。
NMEA实际上已成为所有的GPS接收机和最通用的数据输出的格式。
NMEA数据如下:
$GPGGA,111342.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77
$GPRMC,111342.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54
$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04
$GPGGA,111342.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,,0000*72
$GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D
$GPGSV,3,1,10,18,84,067,23,09,67,067,27,22,49,312,28,15,47,231,30*70
$GPGSV,3,2,10,21,32,199,23,14,25,272,24,05,21,140,32,26,14,070,20*7E
$GPGSV,3,3,10,29,07,074,,30,07,163,28*7D
说明:
NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等
1、GPSDOPandActiveSatellites(GSA)当前卫星信息
$GPGSA,A,3,14,15,05,22,18,26,2.1,1.2,1.7*3D
$GPGSA,<1>,<2>,<3>,<3>,<4>,<5>,<6>,<7>,,
<1>模式:
M=手动,A=自动。
<2>定位型式1=未定位,2=二维定位,3=三维定位。
<3>PRN数字:
01至32表天空使用中的卫星编号,最多可接收12颗卫星信息。
<4>PDOP位置精度因子(0.5~99.9)
<5>HDOP水平精度因子(0.5~99.9)
<6>VDOP垂直精度因子(0.5~99.9)
<7>Checksum.(检查位).
2、GPSSatellitesinView(GSV)可见卫星信息
$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,?
<4>,<5>,<6>,<7>,<8>
$GPGSV,3,3,12,25,00,000,00,20,00,000,28,00,000,00,30,-01,000,00*5A
<1>GSV语句的总数
<2>本句GSV的编号
<3>可见卫星的总数,00至12。
<4>卫星编号,01至32。
<5>卫星仰角,00至90度。
<6>卫星方位角,000至359度。
实际值。
<7>讯号噪声比(C/No),00至99dB;无表未接收到讯号。
<8>Checksum.(检查位).
3、GlobalPositioningSystemFixData(GGA)GPS定位信息
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh
<1>UTC时间,hhmmss(时分秒)格式
<2>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3>纬度半球N(北半球)或S(南半球)
<4>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5>经度半球E(东经)或W(西经)
<6>GPS状态:
0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7>正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8>HDOP水平精度因子(0.5~99.9)
<9>海拔高度(-9999.9~99999.9)
<10>地球椭球面相对大地水准面的高度
<11>差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12>差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)
4、RecommendedMinimumSpecificGPS/TRANSITData(RMC)推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1>UTC时间,hhmmss(时分秒)格式
<2>定位状态,A=有效定位,V=无效定位
<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4>纬度半球N(北半球)或S(南半球)
<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6>经度半球E(东经)或W(西经)
<7>地面速率(000.0~999.9节,前面的0也将被传输)
<8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9>UTC日期,ddmmyy(日月年)格式
<10>磁偏角(000.0~180.0度,前面的0也将被传输)
<11>磁偏角方向,E(东)或W(西)
<12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=
数据无效)
5、TrackMadeGoodandGroundSpeed(VTG)地面速度信息
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
<1>以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
<2>以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
<3>地面速率(000.0~999.9节,前面的0也将被传输)
<4>地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
<5>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=
数据无效)
GPS模块电路:
本设计主要用HX-87manual-GPSENGINEBOARD模块作为GPS模块.
产品介绍:
SIRFHX-87seriesGPS模块具有高精度,高性能的SIRFSTarIII芯片组解决方案.该模块在同一时间跟踪20个人造卫星,同时提供快速时钟校准和1赫兹程序导航控制及电源管理系统.全球定位系统所需的硬件连接图:
图10GPS模块与串口连接的电路图
图10我们示意了GPS模块与串口的连接电路,由图我们可以看出,除了电源和地之外,只连了两根线一个是RXD,一个是TXD,需要注意的是串口与GPS模块的发送和接收是交叉相连的.
第3章软件系统设计
3.1wince操作系统的装载
开始时用uboot启动开发板,然后通过uboot命令一步一步的实现wince镜像的烧写,在这里我们是首先通过norflash的方式启动开发板。
基本的步骤如下:
第一步烧写stepldr镜像:
在命令列表里选择:
【1】Downloadu_bootorSTEPLDR.nb1orotherbootloadertoNandFlash.
第二步烧写eboot镜像:
在命令列表中选择:
【2】DownloadEboot(eboot.nb0)toNandFlash
第三步烧写logo镜像:
在命令列表中选择:
【b】DownloadLOGOPicture.bintoNandFlash
第四步烧写NK镜像:
关闭TQ2440开发板电源选择由nandflash重新启动分别通过:
命令b-》命令9-》命令u完成NK镜像的烧写
当然除了上述主要步骤外还需要其他的地方配合比如USB下载软件DNW的配合,在此我们不再敖述,下面我们主要介绍一下应用程序的开发。
3.2应用程序流程图
在本系统设计中,软件系统是我们非常重要的一环,本系统主要由三个部分组成分别是:
GPS主窗口处理、串口设置、GPS数据读线程,下面介绍软件系统主要流程思想.
3.2.1GPS主窗口流程
图11是GPS主窗口的消息处理流程,在这个流程里主要是创建了主窗口,需要主窗口处理的消息有三个分别是:
打开串口、关闭串口、关闭窗口,其中打开串口和关闭串口这两个按钮时互斥的。
3.2.2串口设置流程
图12是串口设置的流程,由于我们已经知道了GPS模块的波特率,所以在本系统中我们就是直接给出了串口号、波特率、数据位、停止位、奇偶校验位等参数,也就是不需要我们自己去选择这些参数了,我们在程序中直接就设置了这些参数,当然假如串口打不开程序也会出现错误提示,所以这样设置尽管显得简单直接,但基本的步骤都在,不会出现基本的错误。
图11GPS主窗口消息流程
图12串口设置流程
在我们的串口设置中,我们做了些出错处理,在此我们没有列出来.
3.2.3GPS读线程流程
图13是GPS读线程的流程图,GPS读线程是串口设置好后才开始启动的,在这个线程中线程函数会一直等待串口字符事件,一有事件发生,线程就会去读取串口数据.
图13GPS读线程流程
3.3开发环境及应用程序各个部分源代码
3.3.1软件开发环境介绍
VisualStudio2005是基于.NET2.0框架的。
它同时也能开发跨平台应用程序,如开发使用wince的程序等。
总体来说是一个非常庞大的软件,甚至包含代码测试功能。
这个版本的VisualStudio包含有众多版本,分别面向不同的开发角色。
同时还永久提供免费的VisualStudioExpress版本。
.Microsoft®Windows®CE.NET是WindowsCE3.0的后续产品,它不仅是一个功能强劲的实时嵌入式操作系统,而且提供了众多强大工具,允许用户利用它快速开发出下一代的智能化小体积连接设备。
借助于完善的操作系统功能和开发工具,WindowsCE.NET为开发人员提供了构建、调试和部署基于WindowsCE.NET的定制设备所需的一切特性。
平台开发工具PlatformBuilder是一个完全集成的开发环境(IDE),并且包括一个软件开发工具包(SDK)导出工具。
WindowsCE.NET支持MicrosofteMbeddedVisualC++®和MicrosoftVisualStudio®.NET,为面向Microsoft.NETCompactFramework(Microsoft.NETFramework的一个子集)的Web服务和应用程序开发提供了一个完整的开发环境。
利用这些工具,开发人员可以迅速开发出能够在最新硬件上运行各种应用程序的智能化设计。
3.3.2源代码开发过程介绍
1.在PC机的Windows中打开vs2005集成开发环境。
2.打开环境后,选择文件,然后选择新建,在项目选项中选择智能设备项目在勾上空项目,在ProjectName框中填写本工程的名称:
myGPS;再选择当前Win32(WCEARMV4I),建立工程名为myGPS的工程.
图14新建项目界面
建立好工程后,在资源中添加一个设置串口的对话框:
图15串口设置对话框
3.在myGPS工程项目中创建gps.h头文件,主要内容如下:
LRESULTCALLBACKMainWndProc(HWND,UINT,WPARAM,LPARAM);//主窗口处理函数
BOOLCALLBACKDialogProc(HWNDhwndDlg,UINTuMsg,WPARAMwParam,LPARAMlParam);//串口处理函数
DWORDReadThread(LPVOIDlpParameter);//读线程函数
LRESULTDoPaintMain(HWND,UINT,WPARAM,LPARAM);//主窗口刷新处理函数
LRESULTDoDestroyMain(HWND,UINT,WPARAM,LPARAM);//主窗口销毁处理函数
LRESULTDoCreate(HWND,UINT,WPARAM,LPARAM);//主窗口创建处理函数
LRESULTDoCommand(HWND,UINT,WPARAM,LPARAM);//主窗口命令处理函数
voidSetCom(HWNDhh);//串口设置函数
intfindchar(char*s,intlen,inti);//在GPS解析函数内用来寻找','的函数
intfindstr(TCHAR*s,TCHAR*s1);//在GPS数据中寻找字串的函数
BOOLGPS_jiexi(TCHAR*buf);//GPS解析函数
4.在工程中新建gps.c文件,在该文件中主要实现头文件声明的各个函数,下面对主要函数进行介绍:
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
LPWSTRlpCmdLine,intnCmdShow){
MSGmsg;
intrc=0;
//HWNDhwndMain;
hwndMain=InitInstance(hInstance,lpCmdLine,nCmdShow);