GPRMC定位数据提取课程设计.doc

上传人:文库蛋蛋多 文档编号:2888920 上传时间:2023-03-01 格式:DOC 页数:13 大小:50KB
返回 下载 相关 举报
GPRMC定位数据提取课程设计.doc_第1页
第1页 / 共13页
GPRMC定位数据提取课程设计.doc_第2页
第2页 / 共13页
GPRMC定位数据提取课程设计.doc_第3页
第3页 / 共13页
GPRMC定位数据提取课程设计.doc_第4页
第4页 / 共13页
GPRMC定位数据提取课程设计.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《GPRMC定位数据提取课程设计.doc》由会员分享,可在线阅读,更多相关《GPRMC定位数据提取课程设计.doc(13页珍藏版)》请在三一办公上搜索。

1、目录绪论 21设计要求说明 32. 全球卫星定位系统(GPS)组成及原理 33定位信息的发送 54. 定位信息的接收 65. 提取GPRMC定位数据 76小结 10参考文献 11谢辞 11附录 12绪论数字信号处理技术包括硬件和软件实现两大部分。数字信号处理器(Digital Signal Processor, DSP)是数字信号处理技术实现的重要工具,它以高速数字信号处理为目标进行芯片设计,采用改进的哈佛结构、内部具有硬件乘法器、应用流水线技术、具有良好的并行性和专门用于数字信号处理的指令等特点。由于它的高速处理性能使得许多以前难以实现的复杂数字信号处理算法得以应用,许多必须由模拟电路完成的

2、信号处理和处理电路可以用软件实现,因而DSP为信息处理技术的发展提供了广阔的应用空间。DSP虽然也是集成了CPU及相应外设的单片芯片,但它与普通的单片机相比还是有许多不同之处,主要是超强处理速度和高处理精度,便于满足那些图像和语音处理中的大数据量要求及模式识别、神经网络等复杂算法的实时实现。而普通单片机由于处理速度及精度的限制难以完成这些工作。正是由于DSP追求的是计算速度和运算精度,所以它的特点包括了许多单周期复杂运算指令。而对于一些管理程序,例如键盘程序、显示程序等普通单片机擅长的处理,DSP并没有特别的优势。为了节省硬件资本及制造成本,在运算空间和时间允许的情况下,也可以使用单片DSP同

3、时完成信号处理和系统管理功能。通用DSP芯片代表性的产品主要有TI公司的TMS320系列、AD公司ADSP21xx系列、Motorola公司的DSP56xx系列和DSP96xx系列等单片器件,其中占市场份额最大的是美国德州仪器(TI)公司。TI生产OMAP芯片,集成了一个TMS320C55的核和一个ARM9的单片机核,这样的组合既有DSP长于复杂计算的功能,又有单片机易于管理的特点,更适合于便携式仪器设备的使用。DSP技术属于应用技术,实践是学习此类应用技术的必经途径,而这次课程设计正是用来检验实践学习效果的重要手段。1设计要求说明 基于DSP的GPRMC定位数据提取要求:1.1、利用异步串口

4、传输实验程序,修改适当程序段,实现解调功能; 1.2、利用串口调试助手做卫星信号源,提取出定位信息,显示在LCD上; 1.3、能把设计文件下载到实验箱进行观察;1.4、给出相应的设计报告。2.全球卫星定位系统(GPS)组成及原理 全球定位系统(GPS, Global Positioning System)是利用人造地球卫星进行点位测量导航技术的一种,全称是NAVSTAR(NAVigation Satellite Timing And Ranging)/GPS,由美国军方组织研制建立,从1973年开始实施,到九十年代初完成。用户通过测量到太空各可视卫星的距离来计算他们的当前位置,左右卫星相当于精

5、确的已知参考点。每颗GPS卫星时刻发布其位置和时间数据信号,用户接收机可以测量每颗卫星信号到接收机的时间延迟,根据信号传输的速度就可以计算出接收机到不同卫星的距离。同时收集到至少四颗卫星的数据时就可以解算出三维坐标、速度和时间。2.1 GPS系统组成 GPS系统包括三大部分: 空间部分一一GPS卫星星座;GPS由21颗上作卫星和3颗备用卫星组成,它们均匀分布在六个相互夹角为60度的轨道平面内,即每个轨道上有四颗卫星。卫星高度离地面约20000公里,绕地球运行一周的时间是12恒星时,即一天绕地球两周。GPS卫星用L波段两种频率的无线电波(1575. 42MHz和1227. 6MHz)向用户发射导

6、航定位信号,同时接收地面发送的导航电文以及调度命令。 地面控制部分一一地面监控系统;对于导航定位而言,GPS卫星是一动态已知点,而卫星的位置是依据卫星发射的星历一一描述卫星运动及其轨道的参数一一计算得到的。每颗GPS卫星播发的星历是由地面监控系统提供的,同时卫星设备的上作监测以及卫星轨道的控制,都由地面控制系统完成。GPS卫星的地面控制站系统包括位于美国科罗拉多的主控站以及分布全球的三个注入站和五个监测站组成,实现对GPS卫星运行的监控。 用户设备部分一一GPS信号接收机。GPS信号接收机的任务是,捕获GPS卫星发射的信号,并进行处理,根据信号到达接收机的时间,确定接收机到卫星的距离。如果计算

7、出四颗或者更多卫星到接收机的距离,再参照卫星的位置,就可以确定出接收机在三维空间中的位置。2.2 G PS原理 GPS接收机可接收到可用于授时的准确至纳秒级的时间信息;用于预报未来几个月内卫星所处概略位置的预报星历;用于计算定位时所需卫星坐标的广播星历,精度为几米至几十米(各个卫星不同,随时变化);以及GPS系统信息,如卫星状况等。 GPS接收机通过对码的量测可得到卫星到接收机的距离,由于含有接收机卫星钟的误差及大气传播误差,故称为伪距。对OA码测得的伪距称为UA码伪距,精度约为20米左右,对P码测得的伪距称为P码伪距,精度约为2米左右。 按定位方式,GPS定位分为单点定位和相对定位(差分定位

8、)。单点定位就是根据一台接收机的观测数据来确定接收机位置的方式,它只能采用伪距观测量,可用于车船等的概略导航定位。相对定位(差分定位)是根据两台以上接收机的观测数据来确定观测点之间的相对位置的方法,它既可采用伪距观测量也可采用相位观测量,大地测量或上程测量均应采用相位观测值进行相对定位。 在GPS观测量中包含了卫星和接收机的钟差、大气传播延迟、多路径效应等误差,在定位计算时还要受到卫星广播星历误差的影响,在进行相对定位时大部分公共误差被抵消或削弱,因此定位精度将大大提高,双频接收机可以根据两个频率的观测量抵消大气中电离层误差的主要部分,在精度要求高,接收机间距离较远时(大气有明显差别),应选用

9、双频接收机。在定位观测时,若接收机相对于地球表面运动,则称为动态定位,如用于车船等概略导航定位的精度为30一一100米的伪距单点定位,或用于城市车辆导航定位的米级精度的伪距差分定位,或用于测量放样等的厘米级的相位差分定位(RTK),实时差分定位需要数据链将两个或多个站的观测数据实时传输到一起计算。在定位观测时,若接收机相对于地球表面静止,则称为静态定位,在进行控制网观测时,一般均采用这种方式由几台接收机同时观测,它能最大限度地发挥GPS的定位精度,专用于这种目的的接收机被称为大地型接收机,是接收机中性能最好的一类。目前,GPS已经能够达到地壳形变观测的精度要求,工GS的常年观测台站已经能构成毫

10、米级的全球坐标框架。3. 定位信息的发送这里我们用串口调试助手做卫星信号源来发送卫星定位信息数据,PC机作为GPS接收机,其程序流程图如下图所示。其中卫星数据波特率为4800 B/s. 通过启动Uart_tx函数发送信息:unsigned int Uart_tx(unsigned int data)volatile unsigned long ii = 0L; while(!(UART_LSR & 0x20) if(ii+1000000) return(0xffff); UART_THR = data;return(0);定位信息发送程序调异步串口初始化库函数初始化变量 发送数据=0调异步串口

11、发送库函数(发送数据+1)&0XFFN标志寄存器=0?结束Y4. 定位信息的接收由于GPS定位信息内容较少,因此多用RS-232串口将定位信息(NEMA0183语句)进行信息提取处理。从串口读取数据有多种方法,在对串口进行侦听之前需要打开串口,并对其进行相关参数配置,在成功打开并设置通讯口后,可采取轮询串口和事件触发两种方式对数据进行接收处理,在此采取效率比较高的事件触发方式进行接收处理,通过启动Uart_rx函数完成对GPS定位信息的接收:unsigned int Uart_rx(void)volatile unsigned long ii = 0L; while(!(UART_LSR &

12、0x01)if(ii+2000000) return(0xffff);定位信息接收程序return(UART_RBR);调异步串口初始化库函数其程序流程图如右图所示:初始化变量 调异步串口接收库函数将接收数据送LCD显示调异步串口发送库函数N标志寄存器=0?Y结束5. 提取GPRMC定位数据 对GPS进行GPRMC定位数据提取必须首先明确其帧结构,然后才能根据其结构完成对各定位数据的提取。对于本论文所使用的串口调试助手,其发送到计算机的数据主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有$GPGGA、$GPGSA、$GPGSV以及$GPRMC等。这些帧头标识了后续帧内数据

13、的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。而在此,我们所关心的是GPRMC定位数据提取,即提取如经纬度、速度、时间等定位数据,$GPRMC帧的结构及各字段释义如下:$GPRMC,*hh UTC 时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 纬度ddmm.mmmm(度分)格式(前面的0 也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0 也将被传输) 经度半球E(东经)或W(西经) 地面速率(000.0-999.9 节,前面的0 也将被传输) 地面航向(000.0-359.9 度,以真北为参考基准,前面的0

14、也将被传输) UTC 日期,ddmmyy(日月年)格式 磁偏角(000.0-180.0 度,前面的0 也将被传输) 磁偏角方向,E(东)或W(西) 模式指示(仅NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)由于帧内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII码$来判断是否是帧头,在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。下面就是对缓存Data中的数据进行解帧处理的主要代码,在此只关心时间(日期和时间)和地理坐标(经、纬度):while(ii300) /提取出帧头$

15、GPRMC if(dataii=36) / $ if(ii+1)300&dataii+1=71) / G if(ii+2)300&dataii+2=80) / P if(ii+3)300&dataii+3=82) / R if(ii+4)300&dataii+4=77) / M if(ii+5)300&dataii+5=67) / C break; ii+; ii+=6; mc=0; /为逗号计数for(;ii400;ii+) if(dataii=36)break; if(mc=1) /提取出时间tmni=dataii;ni+; else if(mc=3) /提取出纬度weiduni=data

16、ii;ni+; else if(mc=5) /提取出经度jingduni=dataii;ni+; else if(mc=9) /提取出日期riqini=dataii;ni+; else if(mc=10) /提取出磁偏角cipianni=dataii;ni+; if(dataii=44)mc+;ni=0; 最后将接收到的数据在LCD上显示: cur_col = 1; cur_row = 3; /显示时间 LCD_pr_chars(TIME: ,5); for(ii=0;ii6;ii+) LCD_nextchar(chartabletmii-48); cur_col = 1; cur_row =

17、 4; /显示纬度 LCD_pr_chars(WeiDu: ,5); for(ii=0;ii9;ii+) if(weiduii=46)LCD_nextchar(.); else LCD_nextchar(chartableweiduii-48); cur_col = 1; cur_row = 5; /显示经度 LCD_pr_chars(JinDu: ,6); for(ii=0;ii10;ii+) if(jingduii=46)LCD_nextchar(.); else LCD_nextchar(chartablejingduii-48); cur_col = 1; cur_row = 6; /

18、显示日期 LCD_pr_chars(riqi: ,5); for(ii=0;ii6;ii+) if(jingduii=46)LCD_nextchar(.); else LCD_nextchar(chartableriqiii-48); cur_col = 1; cur_row = 7; /显示磁偏角 LCD_pr_chars(cipian: ,7); for(ii=0;ii5;ii+) if(jingduii=46)LCD_nextchar(.); else LCD_nextchar(chartablecipianii-48); break;6小结通过这次设计,进一步加深了对dsp的了解,不仅

19、巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,我总觉得在写一个程序的时候,事先把程序原理方框图化出来,这样做没必要,很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎

20、么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计也使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献李利。DSP原理及应用。北京:中国水利水电出版社,2004。郑红,王鹏,董云凤,吴冠。DSP应用系统设计实践。北京:北京航空航天大学出版社,2005。张雄伟,陈亮,徐光辉。DSP集成开发与应用实例。北京:电子工业出版社,2002。苏涛,卢光跃,张林让。DSP实用技术。西安:西安电子科技大学出版社,2002。李哲英,骆丽,刘

21、元盛。DSP基础理论与应用技术。北京:北京航空航天大学出版社,2002。谢辞首先要感谢教导我dsp课程的老师,没有他平时细心地教导,我是不可能完成这次课程设计。同时,这次课设的顺利完成,也离不开实验室里的黄老师及各位同学的关心和帮助。在整个的课程设计过程中,老师和同学们都积极的帮助我查资料和提供有利于课程设计的建议和意见,在他们的帮助下,课设得以不断的完善,最终帮助我完成了这次课程设计。感谢所有给我帮助的老师和同学,谢谢你们!附录The Direct Memory Access process, DMAThe Direct Memory Access, DMA, facilities prov

22、ided on some DSP devices can be used to automatically transfer blocks of data between memory areas and external devices without disrupting the flow of normal DSP execution. The DMA processor is usually in the form of an on-chip operational block that can, once correctly initialized, operate independ

23、ently of the main processing core. This is an extremely useful facility because it helps to free up more of the processing time for more useful and arithmetically demanding operations. The structure of the memory within a DSP system is an important issue if the DMA facility is to be able to perform

24、any useful function. This is because DMA accesses to memory areas are likely to take place concurrently with accesses by the main processing core. If the DMA processor and the processing core are required to access a particular area of memory at the same time then either there will be a memory confl

25、ict or some mechanism has to be put into place so that a conflict does not occur. One approach is to divide the memory areas into separate blocks which can be independently and simultaneously accessed or the DMA processor should be allowed to access the memory during an idle part of the DSP instruct

26、ion cycle. With highly optimized DSP processors where efficient pipelining techniques are used, it is unlikely that an idle period will exist and so the memory division approach is most commonly used. The Texas Instruments C6xxx DSP is a good example of this where, as we have already seen, the data

27、memory is divided into a series of blank and blocks which can be accessed simultaneously without conflict. On the C6xxx the data memory space is also managed by a data memory controller, which arbitrates between accesses in the background in order to avoid potential conflicts. A good example of the

28、use of DMA is in a system where a high-speed CODEC transfer sample data to and from the DSP continuously. If the DSP core itself had to handle the exchange of CODEC data, through the use of a software routine, then a significant chunk of processing time would be wasted. With the use of DMA, the DMA

29、processor can be configured to handle the exchange of sample data, place it in a specified memory location, and then flag the DSP core, through the use of an interrupt, to tell it that data is ready and waiting. In this DMA-CODEC example, typically the DMA processor would be configure to transfer a

30、whole block of sample data into memory and then flag the DSP core only when the block transfer is complete. Using the block transfer method, often referred to as frame based processing, a further reduction in the number of times the DSP core is interrupted is achieved and hence an even greater incre

31、ase in processing throughput can be obtained. 翻译直接存取器访问处理器DMA在一些DSP器件上,提供的DMA装置能够用来在存储器和外部器件之间自动传送数据块而不干扰DSP的正常执行流程. DMA的处理器通常是片内工作块的形式,一旦被正确初始化,它就能 独立于处理内核工作. 这是一个非常有用的功能,因为这将有助于腾出更多的处理时间到有用的和计算要求的操作中. 一个DSP系统内的存储器结构是一个重要的问题,如果DMA装置要执行任何有用的功能. 这是因为的DMA与主处理内核对存储器的访问很可能同时发生.如果DMA处理器和主处理内核在同一时间需要访问存储器

32、的特定区域,那么或者发生一次存储器冲突或者设置一些机制来防止冲突的发生。一个方法是把存储器区域划分为分离的块,这些块是独立的并且能够同时被访问,或者应允许DMA处理器在DSP指令周期的闲置期间访问存储器。使用高效的流水线技术对DSP处理器进行高度优化,一个闲置的周期是不可能存在的,因此存储器划分方法得到更普遍的使用。 TI C6xxx DSP是一个很好的例子,这在那里,正如我们已经看到, 数据存储器分为一系列库和块,可同时被访问而不发生冲突. C6xxx上的数据存储器空间通过一个数据存储器管理器来管理,它在为了避免潜在冲突的背景下进行仲裁. 一个很好的例子,利用DMA技术在一个系统中,高速CODEC和DSP之间不断传送样值数据. 如果DSP内核通过软件程序,自己来处理CODEC数据交换,很显然,大量处理时间被浪费. 能够配置DMA来处理样值数据的交换,把它放在一个指定的存储器位置,然后通过使用一个中断,标志DSP内核,来告诉它数据准备好了和正在等待. 在这个DMA-CODEC例子里,设置DMA处理器,将一整块样值数据传送到存储器内,然后在块传送完成以后标志DSP内核. 用块传输方法,常常被称作是基于帧处理。DSP内核被中断的次数越少,那么能够获得的处理量就越大。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号