![DSP课程设计基于DSP的GPGGA提取_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-4/2/1c59ac3a-df5f-4d60-b127-8103c49b250f/1c59ac3a-df5f-4d60-b127-8103c49b250f1.gif)
![DSP课程设计基于DSP的GPGGA提取_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-4/2/1c59ac3a-df5f-4d60-b127-8103c49b250f/1c59ac3a-df5f-4d60-b127-8103c49b250f2.gif)
![DSP课程设计基于DSP的GPGGA提取_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-4/2/1c59ac3a-df5f-4d60-b127-8103c49b250f/1c59ac3a-df5f-4d60-b127-8103c49b250f3.gif)
![DSP课程设计基于DSP的GPGGA提取_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-4/2/1c59ac3a-df5f-4d60-b127-8103c49b250f/1c59ac3a-df5f-4d60-b127-8103c49b250f4.gif)
![DSP课程设计基于DSP的GPGGA提取_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-4/2/1c59ac3a-df5f-4d60-b127-8103c49b250f/1c59ac3a-df5f-4d60-b127-8103c49b250f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 绪论 gps定位的数据格式nmer一0183标准应用于gps方面时,数据串以“$gp”开头,主要有gga、gl、zda、gsv、gsa、alm等格式。这次设计主要是基于dsp的gpgga定位信息的提取,在实验箱上实现gpgga定位数据的提取。第一部分为gps原理的介绍,gps定位的一些原理,再详细阐述gpgga信息的接收和提取。第二部分为nema0183数据标准在gps中的应用。第三部分为系统整体设计,硬件的配置,以及整个系统的设计原理图。第四部分为系统程序设计思路以及程序的实现。第五部分为调试结果与分析。 第一章 gps原理介绍1.1 gps简介 gps 是英文global positio
2、ning system(全球定位系统)的简称,而其中文简称为“球位系”。gps是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统 。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,简单地说,这是一个由覆盖全球的24颗卫星组成的卫星系统。这个系统可以保证在任意时刻,地球上任意一点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人,安全、准确地沿着选定的路线,准时到达目的地。 gps主要由空间部分、地面控制系统、
3、用户设备等部分组成,gps的空间部分是由24颗卫星组成(21颗工作卫星,3颗备用卫星),它位于距地表20200km的上空,均匀分布在6 个轨道面上(每个轨道面4 颗) ,轨道倾角为55。卫星的分布使得在全球任何地方、任何时间都可观测到4 颗以上的卫星,并能在卫星中预存的导航信息。gps的卫星因为大气摩擦等问题,随着时间的推移,导航精度会逐渐降低;地面控制系统由监测站(monitor station)、主控制站(master monitor station)、地面天线(ground antenna)所组成,主控制站位于美国科罗拉多州春田市(colorado spring)。地面控制站负责收集由卫
4、星传回之讯息,并计算卫星星历、相对距离,大气校正等数据;用户设备部分即gps 信号接收机。其主要功能是能够捕获到按一定卫星截止角所选择的待测卫星,并跟踪这些卫星的运行。当接收机捕获到跟踪的卫星信号后,就可测量出接收天线至卫星的伪距离和距离的变化率,解调出卫星轨道参数等数据。根据这些数据,接收机中的微处理计算机就可按定位解算方法进行定位计算,计算出用户所在地理位置的经纬度、高度、速度、时间等信息。接收机硬件和机内软件以及gps 数据的后处理软件包构成完整的gps 用户设备。gps 接收机的结构分为天线单元和接收单元两部分。1.2 gps 定位原理 gps定位的基本原理是根据高速运动的卫星瞬间位置
5、作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图所示,假设t时刻在地面待测点上安置gps接收机,可以测定gps信号到达接收机的时间t,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式: 上述四个方程式中待测点坐标x、 y、 z 和vto为未知参数,其中di=cti (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 为待测点坐标
6、的空间直角坐标。 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为接收机的钟差。 由以上四个方程即可解算出待测点的坐标x、y、z 和接收机的钟差vto.1.3 gps定位方法 gps定位的方法是多种多样的,用户可以根据不同的用途采用不同的定位方法。gps定位方法可依据不同的分类标准,可分为:(1)根据定位所采用的观测值:1.伪距定位:伪距定位所采用的观测值为gps伪距观测值,所采用的伪距观测值既可以是c/
7、a码伪距,也可以是p码伪距。伪距定位的优点是数据处理简单,对定位条件的要求低,不存在整周模糊度的问题,可以非常容易地实现实时定位;其缺点是观测值精度低,c/a 码伪距观测值的精度一般为3米,而p码伪距观测值的精度一般也在30个厘米左右,从而导致定位成果精度低,另外,若采用精度较高的p码伪距观测值,还存在as的问题,2载波相位定位 :载波相位定位所采用的观测值为gps的载波相位观测值,即l1、l2或它们的某种线性组合。载波相位定位的优点是观测值的精度高,一般优于2个毫米;其缺点是数据处理过程复杂,存在整周模糊度的问题。 根据定位的模式:1. 绝对定位:绝对定位又称为单点定位,这是一种采用一台接收
8、机进行定位的模式,它所确定的是接收机天线的绝对坐标。这种定位模式的特点是作业方式简单,可以单机作业。绝对定位一般用于导航和精度要求不高的应用中; 2 相对定位:相对定位又称为差分定位,这种定位模式采用两台以上的接收机,同时对一组相同的卫星进行观测,以确定接收机天线间的相互位置关系;根据获取定位结果的时间:1、实时定位::据接收机观测到的数据,实时地解算出接收机天线所在的位置.。 2 、非实时定位:又称后处理定位,它是通过对接收机接收到的数据进行后处理以进行定位得方法。根据定位时接收机的运动状态:1、动态定位:就是在进行gps定位时,认为接收机的天线在整个观测过程中的位置是变化的。也就是说,在数
9、据处理时,将接收机天线的位置作为一个随时间的改变而改变的量。动态定位又分为kinematic和dynamic两类。 3 静态定位:在进行gps定位时,认为接收机的天线在整个观测过程中的位置是保持不变的。也就是说,在数据处理时,将接收机天线的位置作为一个不随时间的改变而改变的量。在测量中,静态定位一般用于高精度的测量定位,其具体观测模式多台接收机在不同的测站上进行静止同步观测,时间由几分钟、几小时甚至数十小时不等。1.4 gps定位的特点 全球定位系统的主要特点:(1)全球、 全天候工作 (2)定位精度高应用实践已经证明,gps相对定位精度在50km以内可达10-6,100-500km可达10-
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系列标准是其制定的关于海洋电子设备之间通信接口和协议的标准,19
11、83年制定了nmea一0183标准。这一标准在兼容nmea一0180和nmea一0182标准的基础上,增加了gps、测深仪、罗经方位系统等多种设备的接口和通信协议定义,同时,标准还允许一些特定设备制造商对其设备(如garmin gps一38、tfimbleensign xl)通信自行定义协议。由于nmea一0183标准的通用性和灵活性,因而在全世界被广泛使用。 nmea一0183格式定义: (1) 数据串定义:nema一0183格式数据串的所有字符均为母的“语句id”,其后是数据体,数据字段以逗号分隔,语句末尾为checksum(可选),以回车换行结束。每行语句最多包含82个字符(包括回车换行
12、和“$”符号)。数据串以逗号分隔符识别,空字段保留逗号。语句结束的checksum 由一个“*”和两个数据位的十六进制数组成。ni、伍a一0183标准允许个别厂商自己定义语句格式,这些语句以“$p”开头,其后是3个字符的厂家id识别号,后接自定义数据体。 nmea一0183标准应用于gps方面时,数据串以“$gp”开头,主要有gga、gl、zda、gsv、gsa、alm等格式,这些格式的作用分别是:$gp0ga:输出gps的定位信息;$gpgll:输出大地坐标信息;$gpzda:输出utc时间信息;$gpgsv::输出可见的卫星信息;$gpgst:输出定位标准差信息;$gpgsa:输出卫星do
13、p值信息;$gpalm:输出卫星星历信息。(2)通信协议定义:nmea一0183格式通信采用rs232通信标准,rs232标准用于dte和dce。gps和微机之间的通信属于dte。标准的rs232通信连接采用25针串口(db一25),也可用于现在多数微机流行的9针串口(de一9)。 在试验中,不需要了解nmea0183通信协议的全部信息,仅需要从中挑选出需要的那部分定位数据,其余的信息忽略掉。gps与掌上电脑通信时,通过串口每秒钟发送10条数据。实际导航应用读取gps的空间定位数据时,可以根据需要每隔几秒钟更新一次经纬度和时问数据,不必频繁地更新数据,否则,会浪费掌上设备有限的电能。如果和卫星
14、通信正常,可以接收到的数据格式如下:$gpgga,*hh。 一个完整的nema0183语句是从起始符“$gpgga”到终止符“”为止的一段字符串。需要掌握的信息是经纬度、经纬度方向、gps定位状态和接收信号的时间。所以当接收到这样一个完整的nema0183语句时,提取有用信息的方法是:先判定起始符$gpgga的位置,从起始符开始读人数据,再通过异或校验后的语句中寻找字符“,”,然后截取前后两个“,”之间的字符(串)获得所关心的数据,并以回车符为一个cps语句的终止符,得到一个完整的gps信号。在提取出的gps语句中,找寻经纬度所在的逗号位置,读出经纬度坐标,再将经纬度坐标进行度数的转换。因为地
15、图的坐标是以度数为标准的。” 2.2 提取gpgga定位数据 gps 接收机只要处于工作状态就会源源不断地把接收并计算出的gps 导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存, 在没有进一步处理之前缓存中是一长串字节流, 这些信息在没有经过分类提取之前是无法加以利用的。因此, 必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的, 可供高层决策使用的定位信息数据。同其他通讯协议类似, 对gps 进行信息提取必须首先明确其帧结构, 然后才能根据其结构完成对各定位信息的提取数据主要由帧头、帧尾和帧内数据组成, 根据数据帧的不同, 帧头也不
16、相同, 主要有$gpgga、$gpgsa、$gpgsv以及$gprmc等。这些帧头标识了后续帧内数据的组成结构, 各帧均以回车符和换行符作为帧尾标识一帧的结束。 由于帧内各数据段由逗号分割, 因此在处理缓存数据时一般是通过搜寻ascii码$来判断是否是帧头, 在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。 在本次设计中定位数据如经纬度、速度、时间等均可以从$gpgga帧中获取得到, $gpgga语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,
17、大地水准面高度,高度单位,差分gps数据期限,差分参考基站标号,校验和结束标记(用回车符和换行符),分别用14个逗号进行分隔。该数据帧的结构及各字段释义如下:$gpgga,m,m,*xx $gpgga:起始引导符及语句格式说明(本句为gps定位数据); utc时间,格式为hhmmss.sss; 纬度,格式为ddmm.mmmm(第一位是零也将传送); 纬度半球,n或s(北纬或南纬) ; 经度,格式为dddmm.mmmm(第一位零也将传送); 经度半球,e或w(东经或西经) ; gps状态, 0未定位, 1非差分定位, 2差分定位, 3无效pps, 6正在估算 ; 使用卫星数量,从00到12(第一
18、个零也将传送) ; 水平精确度,0.5到99.9; 天线离海平面的高度,-9999.9到9999.9米;m 指单位米 大地水准面高度,-9999.9到9999.9米 ;m 指单位米 差分gps数据期限(rtcm sc-104),最后设立rtcm传送的秒数量,如不是差分定位则为空; 差分参考基站标号,从0000到1023(首位0也将传送); * 语句结束标志符 xx 从$开始到*之间的所有ascii码的异或校验和 回车 换行 第三章 系统总体设计 3.1 dsp介绍 dsp是digital signal processing的缩写,表示数字信号处理器,信息化的基础是数字化,数字化的核心技术之一是
19、数字信号处理,数字信号处理的任务在很大程度上需要由dsp器件来完成,dsp技术已成为人们日益关注的并得到迅速发展的前沿技术。数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。 dsp技术的应用语音处理:语音编码、语音合成、语音识别、语音增强、语音邮件、语音储存等。图像/图形:二维和三维图形处理、图像压缩与传输、图像识别、动画、机器人视觉、多媒体、电子地图、图像增强等。 由于dsp可以实现数字信号的处理和计算。从理论上讲,只要有了算法,任何具有计算能力的设备都可以用来实现数字信号处理。所以在各模块功能确定的情
20、况下,用dsp软件开发平台code composer studio(简称ccs)进行借条函数的设计,便可以达到预想中的功能。下图所示为dsp实现解调功能的模块组成: 图3.1 dsp实现解调功能的模块3.2 异步传输方式 通用数字信号处理器(dsp)以其很强的数据处理能力使其在高速数字信号处理方面得到广泛的应用,但是它的通信接口控制能力比较弱,由于dsp的工作频率很高,如tms320c6201 时钟频率为200mhz,adsp21060时钟频率为40mhz,故其数据读写周期很短,然而pc机串口读写速度较低,最大数据吞吐量约为115kbps,尽管dsp在与这些慢速外进行数据交换时可以加入额外的等
21、待周期,但是在实时性要求苛刻,算法复杂的场合,将dsp从这些冗长的等待周期中解放出来,将其时间重点放在处理关键的实时任务中去,有着重要的实际意义。故dsp与pc机之间串口通信的速度匹配是保证快速、准确通信的关键。 pc机一般带有一个或两个内置串口,每个端口的机箱背后有一个9针或25针的公插口。串口是以bit来传输数据的,传输数率取决于uart芯片,该芯片将pc总线上的并行数据(单字节或多字节)分割成以比特为单位的串行数据流,从而实现在串口线缆中的数据传输。 在本次课设中用到了tl16c550b来实现并行数据和串行数据的格式转换,它的最大数据吞吐量为115kbps,这已经能够满足大多数串行设备的
22、需要了。tl16c550b是通用异步接收/发送器(uart)芯片,它不仅能够把从cpu接收的数据进行并-串转换,还能够把从外围设备或modem接收到的数据进行串-并转换。该uart包括一个可编程的波特率产生器。可将输入的时钟信号进行分频,并可产生16倍的时钟来驱动内部的传输逻辑单元。tl16c550还具有modemn控制能力。包含一个处理器中断系统,根据用户的专用需要而设计,在处理通讯连接时,计算量是最小的。并且,tl16c550b管脚与tl16c750兼容,采用44引脚封装。它的最高可达的波特率,且波特率发生器可编程设定,可以由软件设定的来减少中断,并有可编程的串行数据发送格式:数据位长度为
23、5、6、7、8。还有奇、偶校验或无校验模式,它的停止位长度为1、1.5、2. 同时它内部集成了中断逻辑,另外通过对其内部的寄存器的设置可以完成相应功能,这些寄存器主要有:线路控制寄存器、fifo控制寄存器、中断使能寄存器modemn控制寄存器、线路状态寄存器等11个寄存器。这些寄存器分别用于实现通信参数的设置、对线路及modemn的状态访问、数据的发送和接收及中断管理功能。因而它可以与大多数的cpu实现无缝接口、使用很方便。 图3.2 c5402与机串行通信的硬件电路图 图中tl16c550b的cs0和cs1都接高电平,cs2 接c5402的外部i/o空间,选择线is。当、端外接晶振时,以48
24、00的波特率与机通信,所以,波特率因子寄存器的低位设为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
25、ccs1.2 ccs2.0等三个不同的版本,每个版本应有cc2000(针对c2xx)ccs5000(针对c54xx)ccs6000(针对c6x)等三个不同的型号。我们所使用的是ccs5000、1.2的版本。这里所说明的ccs的一切问题都是基于ccs5000所讨论,对其他版本的使用其差别不是很大,请参考其他有关资料。 ccs5000具有以下特性: (1) ti编译器的完全集成的环境 ccs5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个windows环境中。 (2) 对c和dsp汇编文件的目标管理 目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译
26、,以节省编译时间。 (3)高集成的编辑器调整c和dsp汇编代码 ccs5000的内建编辑器支持c和汇编文件的动态语法加亮显示,使用户能很容易地阅读代码和当场发现语法错误。 (4) 编辑和调试时的后台编辑 用户在使用编译器和汇编器时没有必要退出系统到dos环境中,因为ccs5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示,只要双击错误就可以直接到达出错处。 (5) 在含有浮点并行调试管理器(pdm)的原有的ms窗口下支持多处理器,ccs5000在 windows95和windows-me中支持多处理器。pdm允许将命令传播给所有的或所选择的处理器。 (6) 任何算法点观察信号
27、的图形窗口探针 图形显示窗口使用户能够观察时域或者频域的信号。对于频域图,fft在主机内执行, 这样就可以观察所感兴趣的部分而无须改变它的dsp代码。图形显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。 (7) 文件探针在算法处通过文件提取或加入信号或数据 ccs5000允许用户从pc机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。(8) 图形分析 ccs5000的图形分析能力在其环境中是集成的。(9) 在后台(系统命令)执行用户的dos程序 用户可以执行ccs5000中的dos程序,并将其输出以流水方式送到ccs5
28、000的输出窗口。且允许用户将应用集成到ccs5000。4.2 系统程序设计与流程图 gps模块以9600波特的速率串行输出数据。有用的时间、经纬度及海拔高度信息就包含在其中。实验的任务就是从选出有用的信息并送液晶显示器显示。实验的导航电文由串口调试助手导入,导航电文里头的gga格式的数据就是我们这次实验要接收的,找到该组的有用信息。在字符串找到指定的字符串,并返回它的位置。在这里就找“$gpgga”和“,”找到后,把这个位置以后的字符串重新赋给一个以前的字符串,一直循环,就可以找到所有的信息了。具体步骤如下: 系统进行初始化,主要是对dsp芯片的asp(异步串口)进行初始化,将dsp异步通信
29、口得数据传送率设为9600bit/s,通信数据格式的设置为1个起始位,8位数据位,一个停止位,并设置接受数据缓冲区。对于波特率的设置可在串口驱动程序中设置。 使程序指向接受数据缓冲区首地址,系统处于读接受状态。 采用查询方式、进行gps数据流的数据起始位置时,开始数据接收,否则就放弃,重新开始查询过程。 判断是否再次查找到$f符号,若是,则跳回第二步,重新进行数据接收。 接收数据并查找所需的数据前面的逗号的位置。 将查找到的逗号后的数据保存到中间数组变量中。 数据处理,筛选出时间、经度、纬度等基本数据进行传输并调整格式在lcd上显示。 yydsp串口初始化数据接收 是 $ 是查找到所需数据前面
30、逗号的位置将数据赋给输出的中间变量发送数据到pc机上调整数据格式在lcd上显示 图4.2 程序设计流程图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( 0x
31、0400 );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) /*由键值来控制*/ default: break; case 1: lcd_clear(0); /*lcd清屏幕*/ ua
32、rt_rece(); /*调用 uart_race()接收函数*/ break;4.3.3 中断程序程序模块: void init_exint1_interrupt() ifr=0xffff; imr=0x0002; /*tint=imr.3 exint1=imr.1*/ asm(trsbxtintm);interrupt void exint1_isr() close_led_sign(); close_led_data(); close_led_traf();/ while(!(gpiosr&0x01) asm(tnop); asm(tnop); / flag=flag; flag=0;
33、cur_row=7; cur_col=15; lcd_pr_chars( uart_stop ,17);4.3.4 数据处理模块定位信息通过串口来实现传输。本程序的关键在于串口数据的提取及相关处理操作。前面的代码负责从串口接收数据并将其放置于缓存。在没有进一步处理之前缓存是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。同期他通讯协议类似。对该实验采用nmea_0183xieyi协议的gps固定数据输出语句($gpgga)数据结构。先定义305个数据的数组来存放导航电
34、文的串行数据,逗号、时间、纬度、及经度的中间接收数组,以及输出的字符数组。void uart_rece(void) /char buf16; unsigned int data305,mc,tm7,weidu10,jingdu11,geshu3,deep5; unsigned int jj,ii,ni; unsigned int locate=0;char chartable10=0,1,2,3,4,5,6,7,8,9;/*定义显示值*/由于串口数据的读取速度和对数据中参数的提取操作速度需要匹配,所以难免会有数据的丢失,为了保证参数的正确提取,程序的开始就需要对语句的正确性进行控制。处理时一般
35、先通过对帧头的判断,即对“$gpgga”帧进行判断。由于帧内个数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ascii码$来判断是否是帧头,在对帧头的类别进行识别后再通过所经历逗号个数的计数来判断出当前处理地是那一种定位导航参数,并作出相应的处理。判断数据格式的程序如下: do jj=uart_rx();/*串行数据输出的调用函数*/ if(!flag) asm(tnop); break; while(jj=0xffff);if(locate300)/是发送数据存放在数组中的位置 datalocate=jj; locate+; /locate自加到300 uart_tx(jj);else
36、 ii=0; while(ii300) /接收并识别gga数据的帧头 if(dataii=36) if(ii+1)300&dataii+1=71)if(ii+2)300&dataii+2=80)if(ii+3)300&dataii+3=71)if(ii+4)300&dataii+4=71)if(ii+5)300&dataii+5=65)break; /*识别gpgga帧*/4.3.5定位信息的提取与lcd显示模块 一个完整的nmea-0183语句是从信息起始标志“$”、数据分隔符“,”和信息结束标志符“”为止的一段字符串,需要掌握的信息是时间、经度及纬度。所以当接收到这样一个完整的语句时,提取
37、有用信息的方法首先是判断起始符的位置,从起始符开始读入数据、再通过异或校验后的语句中寻找自负,然后截取前两个,之间的字符串获取所关心的数据,并以回车符为一个gps语句的终止符,得到一个完整的gps信号。 for(;ii400;ii+)/$gpgga,061820,2844.3546,n,11551.8844,e,1,10,0.8,57.9,m,-5.6,m,*6c if(dataii=36) break;if(mc=1) tmni=dataii;ni+; /*提取时间*/else if(mc=2) weiduni=dataii;ni+; /*提取纬度*/else if(mc=4) jingdu
38、ni=dataii;ni+;/*提取经度*/ else if(mc=7) geshuni =dataii;ni+;/*提取卫星数据*/else if(mc=9)deepni=dataii;ni+;/*提取海拔高度*/ if(dataii=44) mc+;ni=0;/*逗号计数*/ 筛选出时间、经度、纬度等基本数据进行传输并调整在lcd上显示,以下是显示时间的一个处理过程 lcd_pr_chars(md: ,5); for(ii=0;ii6;ii+) lcd_nextchar(chartabletmii-48);/*化ascii值为数值*/ /*显示时间*/ 第五章 系统调试5.1 调试器介绍:
39、 一个很好而小巧的串口调试工具,支持常用的150-115200bps波特率,能设置校验、数据位和停止位,能以ascii码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。支持串口号高于9的串口(例如 com10、com255 等)如图为课设中用到的串口调试器 图5.1 串口调试器 5.2 系统调试过程 连接好电源线和仿真器,在打开实验箱电源前,先用交叉串口线连接实验箱串口和pc机串口1。编译并运行程序后,打开串口调试器,设置串口为com1,波特率为9600,并打开串口。在发送窗口输入字符或数字,选择自动发送或手动发
40、送。图5.1即为设置的串口图。 在ccs软件中完成程序并通过编译生成.out文件,再加载.out文件运行,打开串口调试器,把要发送的数据粘贴在发送端窗口,如图发送数据:$gpgga,061825,2844.3546,n,11551.8846,e,1,10,0.8,58.3,m,-5.6,m,*6e时,串口接收到的数据 图5.2 数据发送图5.3 调试结果与分析 在实验箱上按键1开始lcd上显示gpgga,接着显示uart start receive最后开始显示提取后的数据: 图5.3 lcd显示 结束语 这次设计是基于dsp的gpgga定位信息的提取,首先论述了gps定位的原理以及方法,介绍了
41、nema-0183数据格式定义,以及gpgga提取的定位数据的特点以及相应的格式,接着又介绍了系统总体总体设计的原理图,异步传输的方式,硬件部分的一些简单介绍,再接着介绍了系统的程序设计,详细的阐述了每个模块的实现过程,最后再论述了系统调试的过程,对结过的分析。 通过这一周的课设,对整个基于dsp gpgga定位数据的提取过程有了一个全面的了解,深入理解了异步串口通信的实现方法,通过实践提高了自身的分析解决问题的能了,以及团队合作解决问题的能了。 参考文献1 李莉编著,dsp原理与应用 北京:中国水利水电出版社,20042 gps定位的数据格式,nmea0183数据格式3 张雄伟 陈亮 徐光辉
42、编著,dsp芯片的原理与开发应用 北京:电子工业出版社,2006 致谢 在整个课程设计的过程中,指导老师胡辉老师给予我细心的指导和帮助,让我在这次课设的课题中学会了团队合作完成课题,加强了对dsp的了解,在课设中锻炼了自己的动手操作能力。 在设计过程中,同学们也给了我很大的帮助,特别是实验室的王涛同学,帮助我们解决了驱动下载中遇到的一些问题,还有朱路老师把实验箱借给我们调试了一天,最后才能顺利的完成这个课设的任务。 最后还要感谢同组成员李金森和李伟同学的配合跟合作,没有大家的共同努了,也就没有最后成功的结果,在此对以上所有人表示诚挚的感激。 附录源代码:#include #include mm
43、drv.h#include mcbsp.h#include cpu_reg.h#include lcd_86.hioport unsigned portefff;#define io_374 portefffvoid init_exint1_interrupt();void init_gpio(void);void uart_rece(void);void uart_trans(void);void uart_trans_byte(unsigned int data);unsigned int flag=0xffff;char tx_re_buf1=0x38;void main(void)un
44、signed int i,j;unsigned int key_val;swwsr=0x7fff;swcr=0x0001;bscr=0x8006;clkmd=pll_div_init;waitloop(0x0400);clkmd=pll_lock_init_x(9);waitloop(0x0400);pmst=0x0168;io_374=0xffff; /*374 enable*/初始化系统init_exint1_interrupt();init_gpio();init_lcd();lcd_clear(0);cur_row=2;cur_col=20; /*列*/ lcd_pr_chars( u
45、art test ,16);cur_row=3;cur_col=1; lcd_pr_chars(-,23); close_led_sign(); close_led_data(); close_led_traf(); waitloop( 0x0400 ); 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) /*
46、由键值来控制*/ default: break; case 1: lcd_clear(0); /*lcd清屏幕*/ uart_rece(); /*调用 uart_race()接收函数*/ break; void init_exint1_interrupt() ifr=0xffff; imr=0x0002; /*tint=imr.3 exint1=imr.1*/ asm(trsbxtintm);interrupt void exint1_isr() close_led_sign(); close_led_data(); close_led_traf();/ while(!(gpiosr&0x01
47、) asm(tnop); asm(tnop); / flag=flag; flag=0; cur_row=7; cur_col=15; lcd_pr_chars( uart_stop ,17);void init_gpio(void) gpiocr=0xfffe; /*exint=gpi0.0=input=0,nand_cs=gpi0.6=output=1*/ gpiosr=0x0040; /*gpi0.6=output=1*/void uart_rece(void) /char buf16; unsigned int data305,mc,tm7,weidu10,jingdu11,geshu3,deep5; unsigned int j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球活塞连杆套件行业调研及趋势分析报告
- 家电维修合同协议书正规范本
- 垃圾桶项目采购合同
- 出租车租赁合同模板
- 2025居间合同协议书范本
- 产品全国总代理合同范本年
- 宣传栏制作安装合同书
- 委托合同范文年
- 2025年中图版八年级历史上册阶段测试试卷
- 2024年高考政治(安徽卷)真题详细解读及评析
- 数字经济学导论-全套课件
- 动物检疫技术-动物检疫的对象(动物防疫与检疫技术)
- 中考记叙文阅读
- 《计算机应用基础》-Excel-考试复习题库(含答案)
- 产科沟通模板
- 2023-2024学年四川省成都市小学数学一年级下册期末提升试题
- GB/T 7462-1994表面活性剂发泡力的测定改进Ross-Miles法
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- GB/T 21709.13-2013针灸技术操作规范第13部分:芒针
- 2022年青岛职业技术学院单招语文考试试题及答案解析
- 急诊科进修汇报课件
评论
0/150
提交评论