DSP课程设计_基于DSP的GPGGA提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP课程设计_基于DSP的GPGGA提取绪论
GPS定位的数据格式NMER一0183标准应用于GPS方面时,数据串以“$GP”开头,主要有GGA、GL、ZDA、GSV、GSA、ALM等格式。
这次设计主要是基于DSP的GPGGA定位信息的提取,在实验箱上实现GPGGA定位数据的提取。
第一部分为GPS原理的介绍,GPS定位的一些原理,再详细阐述GPGGA信息的接收和提取。
第二部分为NEMA—0183数据标准在GPS中的应用。
第三部分为系统整体设计,硬件的配置,以及整个系统的设计原理图。
第四部分为系统程序设计思路以及程序的实现。
第五部分为调试结果与分析。
华东交大课程设计基于DSP 的GPGGA提取
第一章 GPS原理介绍
1.1 GPS简介
GPS 是英文Global Positioning System(全球定位系统)的简称,而其中文简称为“球位系”。
GPS是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。
其主要目的是为陆、海、空三大领域提供实时、全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,简单地说,这是一个由覆盖全球的24颗卫星组成的卫星系统。
这个系统可以保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。
这项技术可以用来引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达目的地。
GPS主要由空间部分、地面控制系统、用户设备等部分组成,GPS的空间部分
是由24颗卫星组成(21颗工作卫星,3颗备用卫星),它位于距地表20200km的上空,均匀分布在6 个轨道面上(每个轨道面4 颗) ,轨道倾角为55?。
卫星的分布使
得在全球任何地方、任何时间都可观测到4 颗以上的卫星,并能在卫星中预存的导
航信息。
GPS的卫星因为大气摩擦等问题,随着时间的推移,导航精度会逐渐降低;地面控制系统由监测站(Monitor Station)、主控制站(Master
主控制站位于美国科罗Monitor Station)、地面天线(Ground Antenna)所组成, 拉多州春田市(Colorado Spring)。
地面控制站负责收集由卫星传回之讯息,并
计算卫星星历、相对距离,大气校正等数据;用户设备部分即GPS 信号接收机。
其
主要功能是能够捕获到按一定卫星截止角所选择的待测卫星,并跟踪这些卫星的运行。
当接收机捕获到跟踪的卫星信号后,就可测量出接收天线至卫星的伪距离和距离的变化率,解调出卫星轨道参数等数据。
根据这些数据,接收机中的微处理计算
机就可按定位解算方法进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。
接收机硬件和机内软件以及GPS 数据的后处理软件包构成完
整的GPS 用户设备。
GPS 接收机的结构分为天线单元和接收单元两部分。
1
1.2 GPS 定位原理
GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采
用空间距离后方交会的方法,确定待测点的位置。
如图所示,假设t时刻在地面待测点上安置GPS接收机,可以测定GPS信号到达接收机的时间?t,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式:
上述四个方程式中待测点坐标x、 y、 z 和Vto为未知参数,其中di=c?ti
(i=1、2、3、4),di (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4到接收机之间的距离,?ti (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4的
信号到达接收机所经历的时间,c为GPS信号的传播速度(即光速)。
四个方程式中各个参数意义如下:x、y、z 为待测点坐标的空间直角坐标。
xi 、yi 、zi
(i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4在t时刻的空间直角坐标,可由卫星导航电文求得。
Vt i (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4的卫星钟的钟差,由卫星星历提供。
Vto为接收机的钟差。
由以
y、z 和接收机的钟差Vto. 上四个方程即可解算出待测点的坐标x、
1.3 GPS定位方法
GPS定位的方法是多种多样的,用户可以根据不同的用途采用不同的定位方
法。
GPS定位方法可依据不同的分类标准,可分为:(1)根据定位所采用的观测值:1.伪距定位:伪距定位所采用的观测值为GPS伪距观测值,所采用的伪距观测值既可以是C/A码伪距,也可以是P码伪距。
伪距定位的优点是数据处理简单,对定位条件的要求低,不存在整周模糊度的问题,可以非常容易地实现实时定位;其缺点是观测值精度低,C/A 码伪距观测值的精度一般为3米,而P码伪距观测值的精度一般也在30个厘米左右,从而导致定位成果精度低,另外,若采用精度较高的P码伪距观测值,还存在AS的问题,2载波相位定位 :载波相位定位所采用的观测值
为GPS的载波相位观测值,即L1、L2或它们的某种线性组合。
载波相位定位的优
点是观测值的精度高,一般优于2个毫米;其缺点是数据处理过程复杂,存在整周模糊度的问题。
根据定位的模式:1. 绝对定位:绝对定位又称为单点定位,这是一种采用一台接收机进行定位的模式,它所确定的是接收机天线的绝对坐标。
这种定位模式的特点是作业方式简单,可以单机作业。
绝对定位一般用于导航和精度要求不高华东交大课程设计基于DSP 的GPGGA提取的应用中;
2 相对定位:相对定位又称为差分定位,这种定位模式采用两台以上的接收机,同时对一组相同的卫星进行观测,以确定接收机天线间的相互位置关系; 根据获取定位结果的时间:1、实时定位::据接收机观测到的数据,实时地解算出接收机天线所在的位置.。
2 、非实时定位:又称后处理定位,它是通过对接收机接收到的数据进行后处理以进行定位得方法。
根据定位时接收机的运动状态:1、动态定位:就是在进行GPS定位时,认为接收机的天线在整个观测过程中的位置是变化的。
也就是说,在数据处理时,将接收机天线的位置作为一个随时间的改变而改变的量。
动态定位又分为Kinematic和Dynamic两类。
3 静态定位:在进行GPS定位时,认为接收机的天线在整个观测过程中的位置是保持不变的。
也就是说,在数据处理时,将接收机天线的位置作为一个不随时间的改变而改变的量。
在测量中,静态定位一般用于高精度的测量定位,其具体观测模式多台接收机在不同的测站上进行静止同步观测,时间由几分钟、几小时甚至数十小时不等。
1.4 GPS定位的特点
全球定位系统的主要特点:(1)全球、全天候工作 (2)定位精度高应用实践已经证明,GPS相对定位精度在50KM以内可达10-6,100-500KM可达10-7m,1000KM 可达10-9m。
在300-1500M工程精密定位中,1小时以上观测的解其平面其平面位
置误差小于1mm,与ME-5000电磁波测距仪测定得边长比较,其边长较差最大为0.5mm,校差中误差为0.3mm。
(3)、观测时间短随着GPS系统的不断完善,软件的不断更新,目前,20KM以内相对静态定位,仅需15-20分钟;快速静态相对定位测量时,当每个流动站与基准站相距在15KM以内时,流动站观测时间只需1-2分钟,然后可随时定位,每站观测只需几秒钟。
第二章数据的格式与提取
2.1 NMEA-0183数据格式介绍
NMEA系列标准是其制定的关于海洋电子设备之间通信接口和协议的标准,1983年制定了NMEA一0183标准。
这一标准在兼容NMEA一0180和NMEA一0182标准的基础上,增加了GPS、测深仪、罗经方位系统等多种设备的接口和通信协议定义,同时,标准还允许一些特定设备制造商对其设备(如Garmin GPS一38、TfimbleEnsign XL)通信自行定义协议。
由于NMEA一0183标准的通用性和灵活性,因而在全世界被广泛使用。
NMEA一0183格式定义:
(1) 数据串定义:NEMA一0183格式数据串的所有字符均为母的“语句ID”,其后是数据体,数据字段以逗号分隔,语句末尾为checksum(可选),以回车换行结束。
每行语句最多包含82个字符(包括回车换行和“$”符号)。
数据串以逗号分隔符识别,空字段保留逗号。
语句结束的checksum 由一个“*”和两个数据位的十六进制数组成。
NI、伍A 一0183标准允许个别厂商自己定义语句格式,这些语句以“$P”开头,其后是
3
3个字符的厂家ID识别号,后接自定义数据体。
NMEA一0183标准应用于GPS方面时,数据串以“$GP”开头,主要有GGA、GL、ZDA、GSV、GSA、ALM等格式,这些格式的作用分别是:
$GP0GA:输出GPS的定位信息;
$GPGLL:输出大地坐标信息;
$GPZDA:输出UTC时间信息;
$GPGSV::输出可见的卫星信息;
$GPGST:输出定位标准差信息;
$GPGSA:输出卫星DOP值信息;
$GPALM:输出卫星星历信息。
(2)通信协议定义:NMEA一0183格式通信采用RS232通信标准,RS232标准用于DTE和DCE。
GPS和微机之间的通信属于DTE。
标准的RS232通信连接采用25针串口(DB一25),也可用于现在多数微机流行的9针串口(DE一9)。
在试验中,不需要了解NMEA0183通信协议的全部信息,仅需要从中挑选出需要的那部分定位数据,其余的信息忽略掉。
GPS与掌上电脑通信时,通过串口每秒钟发送10条数据。
实际导航应用读取GPS的空间定位数据时,可以根据需要每隔几秒钟更新一次经纬度和时问数据,不必频繁地更新数据,否则,会浪费掌上设备有限的电能。
如果和卫星通信正常,可以接收到的数据格式如下:$GPGGA,。
<l>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<u>,
<12>*hh<cR><LF>
一个完整的NEMA0183语句是从起始符“$GPGGA”到终止符“<CR><LF>”为止的一段字符串。
需要掌握的信息是经纬度、经纬度方向、GPS定位状态和接收信号的时间。
所以当接收到这样一个完整的NEMA0183语句时,提取有用信息的方法是:先判定起始符$GPGGA的位置,从起始符开始读人数据,再通过异或校验后的语句中寻找字符“,”,然后截取前后两个“,”之间的字符(串)获得所关心的数据,并以回车符为一个CPS语句的终止符,得到一个完整的GPS信号。
在提取出的GPS
语句中,找寻经纬度所在的逗号位置,读出经纬度坐标,再将经纬度坐标进行度数的转换。
因为地图的坐标是以度数为标准的。
” 2.2 提取GPGGA定位数据GPS 接收机只要处于工作状态就会源源不断地把接收并计算出的GPS 导航定位信息通过串口传送到计算机中。
前面的代码只负责从串口接收数据并将其放置于缓存, 在没有进一步处理之前缓存中是一长串字节流, 这些信息在没有经过分类提取之前是无法加以利用的。
因此, 必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的, 可供高层决策使用的定位信息数据。
同其他通讯协议类似, 对GPS 进行信息提取必须首先明确其帧结构, 然后才能根据其结构完成对各定位信息的提取数据主要由帧头、帧尾和帧内数据组成, 根据数据帧的不同, 帧头也不相同, 主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。
这些帧头标识了后续帧内数据的组成结构, 各帧均以回车符和换行符作为帧尾标识一帧的结束。
由于帧内各数据段由逗号分割, 因此在处理缓存数据时一般是通过搜寻
华东交大课程设计基于DSP 的GPGGA提取 ASCII
码"$"来判断是否是帧头, 在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。
在本次设计中定位数据如经纬度、速度、时间等均可以从"$GPGGA"帧中获取得到, $GPGGA语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。
该数据帧的结构及各字段释义如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR> <
LF> $GPGGA:起始引导符及语句格式说明(本句为GPS定位数据); <1> UTC时间,格式为hhmmss.sss;
<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送); <3> 纬度半球,N或
S(北纬或南纬) ;
<4> 经度,格式为dddmm.mmmm(第一位零也将传送);
<5> 经度半球,E或W(东经或西经) ;
<6> GPS状态, 0未定位, 1非差分定位, 2差分定位, 3无效PPS, 6正在估算 ;
<7> 使用卫星数量,从00到12(第一个零也将传送) ;
<8> 水平精确度,0.5到99.9;
<9> 天线离海平面的高度,-9999.9到9999.9米;
M 指单位米
<10> 大地水准面高度,-9999.9到9999.9米 ;
M 指单位米
<11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空;
<12> 差分参考基站标号,从0000到1023(首位0也将传送); * 语句结束标志符
xx 从$开始到*之间的所有ASCII码的异或校验和
<CR> 回车
<LF> 换行
5
第三章系统总体设计
3.1 DSP介绍
DSP是Digital Signal Processing的缩写,表示数字信号处理器,信息化的基础是数字化,数字化的核心技术之一是数字信号处理,数字信号处理的任务在很大程度上需要由DSP器件来完成,DSP技术已成为人们日益关注的并得到迅速发展的前沿技术。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
DSP技术的应用
语音处理:语音编码、语音合成、语音识别、语音增强、语音邮件、语音储存等。
图像/图形:二维和三维图形处理、图像压缩与传输、图像识别、动画、机器人视觉、多媒体、电子地图、图像增强等。
由于DSP可以实现数字信号的处理和计算。
从理论上讲,只要有了算法,任何具有计算能力的设备都可以用来实现数字信号处理。
所以在各模块功能确定的情况下,用DSP软件开发平台CODE Composer Studio(简称CCS)进行借条函数的设计,便可以达到预想中的功能。
下图所示为DSP实现解调功能的模块组成:
图3.1 DSP实现解调功能的模块
3.2 异步传输方式
通用数字信号处理器(DSP)以其很强的数据处理能力使其在高速数字信号处理方面得到广泛的应用,但是它的通信接口控制能力比较弱,由于DSP的工作频率很高,如TMS320C6201 时钟频率为200MHz,ADSP21060时钟频率为40MHZ,故其数据读写周期很短,然而PC机串口读写速度较低,最大数据吞吐量约为115kbps,尽管DSp在与这些慢速外进行数据交换时可以加入额外的等待周期,
华东交大课程设计基于DSP 的GPGGA提取但是在实时性要求苛刻,算法复杂的场合,将DSP从这些冗长的等待周期中解放出来,将其时间重点放在处理关键的实时任务中去,有着重要的实际意义。
故DSP与PC机之间串口通信的速度匹配是保证快速、准确通信的关键。
PC机一般带有一个或两个内置串口,每个端口的机箱背后有一个9针或25针的公插口。
串口是以bit来传输数据的,传输数率取决于UART芯片,该芯片将PC 总线上的并行数据(单字节或多字节)分割成以比特为单位的串行数据流,从而实现在串口线缆中的数据传输。
在本次课设中用到了TL16C550B来实现并行数据和串行数据的格式转换,它的最大数据吞吐量为115kbps,这已经能够满足大多数串行设备的需要了。
TL16C550B是通用异步接收/发送器(UART)芯片,它不仅能够把从CPU接收的数据进行并-串转换,还能够把从外围设备或MODEM接收到的数据进行串-并转换。
该UART包括一个可编程的波特率产生器。
可将输入的时钟信号进行分频,并可产生16倍的时钟来驱动内部的传输逻辑单元。
TL16C550还具有MODEMN控制能力。
包含一个处理器中断系统,根据用户的专用需要而设计,在处理通讯连接时,计算量是最小的。
并且,TL16C550B管脚与TL16C750兼容,采用44引脚,,,,封装。
它的最高可达,,的波特率,且波特率发生器可编程设定,可以由软件设定的,,,,来减少,,,中断,并有可编程的串行数据发送格式:数据位长度为5、6、7、8。
还有奇、偶校验或无校验模式,它的停止位长度为1、1.5、2.
同时它内部集成了中断逻辑,另外通过对其内部的寄存器的设置可以完成相应功能,这些寄存器主要有:线路控制寄存器、FIFO控制寄存器、中断使能寄存器MODEMN控制寄存器、线路状态寄存器等11个寄存器。
这些寄存器分别用于实现通信参数的设置、对线路及MODEMN的状态访问、数据的发送和接收及中断管理功能。
因而它可以与大多数的CPU实现无缝接口、使用很方便。
图3.2 C5402与,,机串行通信的硬件电路图
图中TL16C550B的CS0和CS1都接高电平,CS2 接C5402的外部I/O空间,选择线IS。
当,,,、,,,,端外接,(,,,,,,,晶振时,,,,,,
7
以4800的波特率与,,机通信,所以,波特率因子寄存器的低位设为30HZ,高位设为00hz。
TL16C550B的数据线D0-D7数据线相连,TL16C550的片内寄存器选择线接C5402的A0-A2。
3.2 系统硬件部分
以下为系统硬件部分PC机的连接与异步串口通信在实验箱上实现的原理图:
图3.3 系统整体硬件部分电路图
第四章系统程序设计
4.1 CCS介绍
CCS(Code Composer Studio)代码调试器是一种集成开发环境(IDE,Integrated Development Environment)。
CCS是一种针对标准TMS320调试器接口的交互式方法。
CCS目前有CCS1.1 CCS1.2 CCS2.0等三个不同的版本,每个版本应有CC2000(针对C2XX)
CCS5000(针对C54XX)CCS6000(针对C6X)等三个不同的型号。
我们所使用的是CCS5000、1.2的版本。
这里所说明的CCS的一切问题都是基于CCS5000所讨论,对其他版本的使用其差别不是很大,请参考其他有关资料。
CCS5000具有以下特性:
(1) TI编译器的完全集成的环境
CCS5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个Windows环境中。
华东交大课程设计基于DSP 的GPGGA提取
(2) 对C和DSP汇编文件的目标管理
目标编辑器保持对所有文件及相关内容的跟踪。
它只对最近一次编译中改变过的文件重新编译,以节省编译时间。
(3)高集成的编辑器调整C和DSP汇编代码
CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示,使用户能很容易地阅读代码和当场发现语法错误。
(4) 编辑和调试时的后台编辑
用户在使用编译器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。
在其窗口中,错误会加亮显示,只要双击错误就可以直接到达出错处。
(5) 在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器,CCS5000在 Windows95和Windows-me中支持多处理器。
PDM允许将命令传播给所有的或所选择的处理器。
(6) 任何算法点观察信号的图形窗口探针
图形显示窗口使用户能够观察时域或者频域的信号。
对于频域图,FFT在主机这样就可以观察所感兴趣的部分而无须改变它的DSP代码。
图形显示内执行,也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。
(7) 文件探针在算法处通过文件提取或加入信号或数据
CCS5000允许用户从PC机读或写信号流。
而不是实时的读信号,这就可以用已知的例子来仿真算法。
(8) 图形分析
CCS5000的图形分析能力在其环境中是集成的。
(9) 在后台(系统命令)执行用户的DOS程序
用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出窗口。
且允许用户将应用集成到CCS5000。
4.2 系统程序设计与流程图
GPS模块以9600波特的速率串行输出数据。
有用的时间、经纬度及海拔高度信息就包含在其中。
实验的任务就是从选出有用的信息并送液晶显示器显示。
实验的导航电文由串口调试助手导入,导航电文里头的GGA格式的数据就是我们这次实验要接收的,找到该组的有用信息。
在字符串找到指定的字符串,并返回它的位置。
在这里就找“$GPGGA”和“,”找到后,把这个位置以后的字符串重新赋给一个以前的字符串,一直循环,就可以找到所有的信息了。
具体步骤如下:
系统进行初始化,主要是对DSP芯片的ASP(异步串口)进行初始化,将DSP异步通信口得数据传送率设为9600bit/s,通信数据格式的设置为1个起始位,8
9
位数据位,一个停止位,并设置接受数据缓冲区。
对于波特率的设置可在串口驱动程序中设置。
使程序指向接受数据缓冲区首地址,系统处于读接受状态。
采用查询方式、进行GPS数据流的数据起始位置时,开始数据接收,否则就放弃,重新开始查询过程。
判断是否再次查找到'$'f符号,若是,则跳回第二步,重新进行数据接收。
接收数据并查找所需的数据前面的逗号的位置。
将查找到的逗号后的数据保存到中间数组变量中。
数据处理,筛选出时间、经度、纬度等基本数据进行传输并调整格式在LCD上显示。
DSP串口初始化
数据接收
是
是 '$'
查找到所需数据
前面逗号的位置
将数据赋给输出
的中间变量
发送数据到PC
机上
调整数据格式在LCD上显示
图4.2 程序设计流程图
华东交大课程设计基于DSP 的GPGGA提取
4.3 系统程序设计
4.3.1 初始化程序模块:
init_exint1_interrupt(); init_GPIO();
init_lcd();
LCD_clear(0);
cur_row=2;
cur_col=20; /*列*/
LCD_pr_chars(" UART TEST ",16); cur_row=3;
cur_col=1;
LCD_pr_chars("------------------",23);
Close_LED_sign();
Close_LED_Data();
Close_LED_Traf();
waitloop( 0x0400 );
4.3.2 键盘控制程序模块
本课设中利用键盘来控制显示,设置键盘值1键来设置控制,下载成功后,按1键即开始进行接收显示。
while(1)
{
flag=0xffff;
i=Get_Key();
waitloop( 0x040000L );
j=Get_Key();
if(i==j)
{
key_val=j; /*save key_val*/
while(Get_Key())
{
asm("\tnop"); /*wait blank_key*/
}
switch(key_val) /*由键值来控制*/
11
{
default:
break;
case 1:
LCD_clear(0); /*LCD清屏幕*/
uart_rece(); /*调用 uart_race()接收函数*/ break;
4.3.3 中断程序程序模块:
void init_exint1_interrupt() {
IFR=0Xffff;
IMR=0x0002; /*TINT=IMR.3 EXINT1=IMR.1*/ asm("\trsbx\tintm"); }
interrupt void EXINT1_isr()
{
Close_LED_sign();
Close_LED_Data();
Close_LED_Traf();
// while(!(GPIOSR&0X01))
{
asm("\tnop");
asm("\tnop");
}
// flag=~flag;
flag=0;
cur_row=7;
cur_col=15;
LCD_pr_chars(" Uart_Stop ",17); }
4.3.4 数据处理模块
定位信息通过串口来实现传输。
本程序的关键在于串口数据的提取及相关处理操
华东交大课程设计基于DSP 的GPGGA提取作。
前面的代码负责从串口接收数据并将其放置于缓存。
在没有进一步处理之前缓存是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。
因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。
同期他通讯协议类似。
对该实验采用NMEA_0183xieyi协议的GPS固定数据输出语句($GPGGA)数据结构。
先定义305个数据的数组来存放导航电文的串行数据,逗号、时间、纬度、及经度的中间接收数组,以及输出的字符数组。
void uart_rece(void)
{
//char buf[16];
unsigned int
data[305],mc,tm[7],weidu[10],jingdu[11],geshu[3],deep[5];
unsigned int jj,ii,ni;
unsigned int locate=0; char
chartable[10]={'0','1','2','3','4','5','6','7','8','9'};/*定义显示值*/ 由于串口数据的读取速度和对数据中参数的提取操作速度需要匹配,所以难免
会有数据的丢失,为了保证参数的正确提取,程序的开始就需要对语句的正确性进
行控制。
处理时一般先通过对帧头的判断,即对“$GPGGA”帧进行判断。
由于帧内
个数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII码‘$’来判
断是否是帧头,在对帧头的类别进行识别后再通过所经历逗号个数的计数来判断出
当前处理地是那一种定位导航参数,并作出相应的处理。
判断数据格式的程序如下: do
{
jj=Uart_rx();/*串行数据输出的调用函数*/
if(!flag)
{
asm("\tnop");
break;
}
}while(jj==0xFFFF);
if(locate<300)//是发送数据存放在数组中的位置
{。