
基于飞行控制系统的GPS 串口通信问题研究.doc
5页基于飞行控制系统的GPS串口通信问题研究李康杨帆程礼摘要:木文阐述了基于微小型飞行器飞行控制系统中利用串口实现与GPS通信的方法首 先,简要介绍了串口通信;然后,介绍了 GPS数据格式的相关问题;最后,给出串口通信 模块与GPS信号提取模块的实现方法,详细叙述了如何利用嵌入式稈序开发语言进行串口 通信,并给出了具体流程关键词:飞行控制系统GPS串口通信Design of GPS Serial Communication Based on Flight Control SystemLi Kang, Yang Fan, Cheng Li(The Engineering Insitute, Air Force Engineering University, Xi'an, Shanxi 71003& China)Abstract: The mean of serial communication based on micro aerial vehicle are introduced in this paper. Serial communication is simply introduced at first, then output data format of GPS is introduced, the design method of serial communication and data of GPS receive are given .How to use embedded programme language to design serial communication is discussed in detail, and particular process is given.key words: Fly Control System, GPS, serial communication.1、引言飞行控制系统的两个主要功能是:飞行和增稳控制、导航和任务控制。
飞机导航就是引 导飞机按照预定航线飞向目标导航的基木任务就是确定飞机在飞行中的位置和飞行方向 GPS即全球定位系统,是适合微小型飞机的一种重要导航系统飞行控制系统将根据航路 点的经纬度坐标、序号、备航段飞行速度、高度、各航路点半径等参数设置确定的任务航线, 通过GPS卫星定位接收机获取飞机当前位置信息,经CPU运算后通过飞行控制系统,控 制飞机按航路点序号已设定的速度和高度顺序飞行GPS通过串口与飞控计算机实现数据通信,下面将具体介绍如何实现GPS与飞控计算 机的串口通信2、串行通信每台pc祁配有串行端口,以便与外部串行设备Z间进行通信串行端口的木质功能是 作为芯片和串行设备之间的编码转换器当数据从芯片经过串行端口发送出去时,字节数据 被转换为串行的位在接收数据时,串行的位将被转换为字节数据GPS提供串行通信接 U,串行通信参数为:波特率=4800bps,数据位=8位,开始位=1位,停止位=1位,无奇偶校验3、GPS数据格式工程所使用的是e-Compass E511 GPS模块,它是12通道的GPS接收机模块,同时可以跟 踪多达12颗GPS卫星,跟踪性能优越,从而能够快速的定位E511接收机模块功耗非常小, 数据更新率为毎秒一次,其优良的性能既能够满足陆地导航的灵敏度需求,也能够满足飞行 器的动态需求。
E511刃瀚出的数据是以美国国家海洋电了协会(National Marine Electronics Association)的NMEA0183ASCII码接口协议为基础的此语句包括:GPGGA, GPGSA, GPGSV, GPRMC, GPGLL,GPVTG□而在我们实际使用时可通过NMEA 0183输入语句对 输出语旬进行选择,也可对波特率进行更改[1]木工程中,最终只需取出高度、经度、纬 度、速度和接收信号的时间等信息,所以只要求获得GPGGA和GPRMC语彳U即可现以 GPGGA语句为例,介绍它的语句格式:$GPGGA,< 1 >,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,< 10>,M,< 11 >,< 12>*hh
对于串口接收既可以采川杏询方式进行处理,也可以采用中断方式讲行 处理,木文采用中断处理方式以减少接收程序对CPU时间的占用具体步骤为:肖先进行 串口初始化,包括管脚的选择、波特率的设置、设置接收的数据格式、允许中断、设置FIFO、 建立数据队列等[2]串口的接收过程可采用杏询方式或中断方式,但杏询方式耗时较长,有可能延长20ms 的程序运行周期,不满足实时性要求,所以选择使用中断方式以减少驱动程序对CPU时间 的占用[4]由于UART可以同时存在几个中断源申请中断的情况,而UART的硬件仅指示 出其中的一个中断源,为减少多次进入中断而引起的开销,中断中使用了 while循环判断 UART的中断是否处理完毕中断服务程序流程图如图1:发送FIFO满数据缓冲空禁止保持寄 存器空中断V给发送FIFO填发送数据开始关中断YNYNYJ攵线状态错次仃UART中断接收数据可用NY将串丨I缓冲区的数据 放入接收缓冲区接收字符超时▼清除中断源图1串口中断服务程序在中断处理程序中先麻使用了两种方式进行数据的接收,一是使用uC/OS-II实时操作系统提供的信号量机制信号量实际上是一种约定机制,在多任务内核中普遍使用。
信号 像是一把钥匙,任务要运行下去,得先拿到这把钥匙如果信号己被别的任务占用,该任务 貝得被挂起,直到信号被当前使用者釋放[31当中断源为接收数据可用或接收字符超时, 表明UART的FIFO中有数据,中断程序发送信号量给接收任务,以便接收数据的任务可以 接收数据接收任务得到这个信号量,则将接收器缓存寄存器UxRBR中的数据读出此方 法对普通的串口接收来说不失为一种好方法,但是此方法有一种致命的缺陷,当没有接收数 据时,程序会一肓等待中断服务程序发出信号量,从而会影响整个任务的执行状态,比如, 当串口接收与AD采集、PWM采集在同一任务中运行时,当串口没有接收数据时,AD采 集与PWM采集将无法讲行,从而影响了整个任务状态笫二种方法是采用数据队列,数据 队列一般用于数据缓存,且一般用于平衡速率不同的两个部件,使快速部件无需等待慢速部 件木数据队列设置为先入先出(FIFO),当中断服务程序接收到数据示,接收程序即从串口接收缓冲区中UxRBR将数据读到队列缓冲区UARTlGetBuff]中其流稈如图2:返冋“失败”开始关斗n断开中断1返冋“成功”1r结束图2串口接收程序流程图4、GPS信号的提取根据GPS数据格式可以看出,一个完整的NEMA0183语句是从起始符到终止符“vCR〉vCF>”为止的一段字符串。
而我们需要掌握的信息是高度、经度、纬度、速度和接 收信号的时间所以接收到这样一个完整的NEMA0183语句时,提取有用信息的方法是:先 判定起始符$的位置,从起始符开始读人数据,肓到以冋车符为结尾,在这Z间的语句为一 个完整语句放入定义的数mone.cmd中,至此,一个完整的命令被读出Z后,是要取得我 们所需要的信息,通过异或校验后的语句中寻找字符“,”,然后截取前后两个“,” Z间 的字符(串)获得所关心的数据5、结束语通过木方法,可以将GPS定位导航信息从GPS接收机完整接收,并将所需信息从中提 取,从而为实现飞行控制系统的导航控制提供数据采集其实,GPS接收并提取的数据也 可以为其它应用系统所应用,如电了地图、车载导航、智能交通、野外勘探等方面只是在 数据提取方面有所不同,经过修改,完全可以应用到其中参考文献[11李洪涛,许国昌等GPS应用程序设计北京:科学出版社,1999⑵ 周立功 ARM微控制器基础与实战北京:航空航天大学岀版社,2003.11⑶ Labrosse J J.嵌入式实时操作系统uC/OS-II (邵贝贝等译).北京:北京航空航天大学 出版社,2003[4] Kernighan Brain W,Dennis M Ritchie. The C Programming Language. 2 edition.Englewood Cliffs, New Jersey:Prentice Hall, 1998[5] 杨贵军,武文波。
PDA环境下GPS信号的接收和处理方法单片机与嵌入式系统应用, 2005 (9) : 27〜29第一作者简介:李康男汉1980.3山东济南硕士研究生主要研究方向为航空宇航推进理论与工程联系方式:空军工程大学工程学院研究生十一队邮编:710038:13572884602 029-83462708E-mail: lkduck@ 。
