硅谷杂志:基于DSP采集与处理GPS信号的系统设计 |
2012-12-03 14:17 作者:马健 崔红霞 来源:硅谷网 HV: 编辑: 【搜索试试】
|
|
【硅谷网12月3日文】据《硅谷》杂志2012年第18期刊文,描述一种基于DSP采集与处理GPS信号的系统软硬件设计方法,介绍DSP的串口通信的工作原理,NMEA-0813通信协议;设计并实现GPS定位信息的实时采集和解译,为进一步GPS技术应用奠定基础。
0引言
GPS(GlobalPositionSystem)即全球定位系统,是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。该系统主要由空间部分(卫星星座)、地面控制部分(地面监控系统)、用户设备部分(GPS信号接收机)三个独立的部分构成。GPS自问世以后,已充分显示了在导航、定位领域的霸主地位,使全球定位导航系统的发展发生了革命性的变化。随着GPS产业在各个领域的高速增长,人们对GPS产品应用需求与日俱增,研发小型化、低成本、高实时性、易于工程实现的采集和处理GPS信号的系统已变得势在必行。本文将GPS技术与DSP技术、通信技术完美结合,利用DSP串口输出的解译导航定位信息,配置以相应的用户终端,即可方便、自主地开发出各种GPS应用系统,以差分和非差分方式广泛应用于导航定位、精密授时、大地测量、电子地图、交通运输、城市管理等各个领域[1]。
DSP技术是采用数字计算的方法对信号进行处理的专用芯片[2]。内核采用了哈佛结构(程序空间和数据空间分开,CPU可以同时访问指令和数据)、支持流水线操作及硬件乘法器等特点,使其他单片机相比较,更适合于并行、高速实时性的数字信号处理,因此,将DSP技术运用于GPS导航电文的复杂解算过程是未来GPS接收机发展的趋势。
1系统硬件结构及工作原理
通常GPS接收机主要由GPS接收天线、变频器、信号通道、数字信号处理器、存储器、串行通信接口以及电源等部分组成[3]。导航卫星实时播发导航电文,GPS接收机在上电完成初始化后,天线自动接收导航电文,GPS模块发送采集的导航电文到定位数据处理模块,通过解译算法解析,从而解译出GPS卫星所发送的导航电文定位信息,提取出经度、纬度、海拔高度、速度、日期、时间、航向以及卫星状况等信息,供用户终端定位与高层决策使用。具体的定位系统流程见图1。
本系统采用REB-3571LP为核心的GPS模块和TI公司的浮点芯片TMS320F28335DSP为数字信号处理器,由TMS320F28335DSP对GPS定位信息中需要的信息进行实时采集、解析,同时将解析的经、纬度、海拔高度和时间等数据经外部的串口转USB接口电路传送至PC机,PC机将接收到的定位信息显示给用户或者存储供高层决策,其结构组成见图2。
2TMS320F28335DSP的SCI串口通信原理
SCI是SerialCommunicationInterface的简称,即串行通信接口。串行通信接口(SCI)是一种双线异步串行端口,就像通常的UART[4]。SCI模块支持CPU与采用NRZ标准格式的异步外围设备之间进行通信。TMS320F28335有3个相同的SCI串口,分别是SCIA、SCIB、SCIC。每一个SCI模块都各有一个接收器和发送器,接收器实现数据的接收功能,发送器实现数据的发送功能。SCI可通过查询和中断两种方式独立完成数据的接收与发送,也可通过查询和接收相结合的方式完成接收和发送功能,本文只才用了中断方式完成GPS数据的接收与发送。SCI模块的工作原理如3。
3系统的软件设计及实现
3.1GPS语句的输出格式
为了便于不同接收机之间数据的有效传输及增强接收机的兼容性性能,美国国家海洋电子协会(NMEA)制定了NMEA-0183格式,该格式被广泛应用于GPS导航系统定位中。NMEA-0183标准格式输出采用ASCII码,每个ASCII数据码长8位,串行通信波特率为4800位/秒,无奇偶校验。每条语句都以字符“$”作为标志开始,第一个字用来标识类别,随后的数据以逗号相隔,并以字符“*”作为结束标志,最后一校验和数值和回车/换行字符结束。其语句格式如表1所示。
表1NMEA-0183语句格式
符号ASCII 定义 HEX 说明
$ 起始位 24H 语句起始位
Aaccc 地址域 前两位为识别符,后三位为分割符
“,” 域分隔符 2CH 域分割符
Ddd……ddd 数据块 发送数据内容
“.” 校验和符号 后面的两位数是校验和
b 校验和 校验和
<CR〉/〈LF〉 终止符 0DH,0AH 回车,换行
系统中GPS模块采集的GPS定位信息主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC”等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束[6]。其中定位语句“$GPRMC”(RecommendedMinimunNavigationInformation);是推荐的最少的GNSS数据语句,其内容包含了时间、纬度、经度、高度、系统转态、速度、线路、日期信息。在实际的工程应用中,我们所关心的定位数据如经纬度、速度、时间等均可以从“$GPRMC”帧中获取得到,因此,本文只解析“$GPRMC”帧,对于其他帧数据,平时并不常用,特殊情况需要时,解析方法类似,移植该方法即可解析出所需要的任意其他帧数据。
“$GPRMC”的结构为:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>
其中:“GP”-交谈识别符;“RMC”-语句识别符;“*”-校验和识别符;“hh”-为校验和,其代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符)[7]。$GPRMC语句数据区的内容为:
1)定位点的协调世界时间(UTC),hhmmss(时分秒)格式;
2)定位状态,A=有效定位,V=无效定位;
3)定位点纬度,ddmm.mmmmm(度分)格式;
4)纬度半球,N(北半球)或S(南半球);
5)定位点经度,dddmm.mmmmm(度分)格式;
6)经度半球,E(东经)或W(西经);
7)地面速度,000.0节~999.9节;
8)地面航向,000.0度~359.9度;
9)UTC日期,ddmmyy(日月年)格式;
10)磁偏角,000.0度~180度;
11)磁偏角方向,E(东)或W(西)。
3.2SCI的串口配置
处理器在通信时,一般都会涉及协议,所谓的协议就是通信双方预先约定好的数据格式,以及每位数据所代表的具体含义[5]。TMS230F28335DSP的SCI口在进行GPS数据采集时,必须对串口按通信协议进行配置,本系统使用SCIC串口,将SCI的数据格式设定为1位起始位,8位数据位,无奇偶校验,波特率设为9600/bps,开启SCIRXINT和SCITXINT中断,由SCIRXINT中断方式读取GPS定位信号,经DSP解析后的定位信息由SCITXINTT中断方式发送给PC机,供存储或高层决策使用。SCI串口配置具体程序如下:
voidScic_init()
{
ScicRegs.SCICCR.all=0x0007; ScicRegs.SCICTL1.all=0x0003;
ScicRegs.SCICTL2.all=0x0003;
ScicRegs.SCICTL2.bit.TXINTENA=1;
ScicRegs.SCICTL2.bit.RXBKINTENA=1;
#if(CPU_FRQ_150MHZ)
ScicRegs.SCIHBAUD=0x0001;//9600baud@LSPCLK=37.5MHz.
ScicRegs.SCILBAUD=0x00E7;
#endif
#if(CPU_FRQ_100MHZ)
ScicRegs.SCIHBAUD=0x0001;//9600baud@LSPCLK=20MHz.
ScicRegs.SCILBAUD=0x0044;
#endif
ScicRegs.SCICTL1.all=0x0023;
}
3.3接收及解译定位信息的方法及程序
系统在上电完成初始化后,天线会自动完成接收GPS导航定位信息,GPS模块将采集的导航电文实时传送到DSP的SCIRXD引脚,SCI检测到数据的起始位,SCIRXD引脚便开始将随后的数据逐位移至RXSHF寄存器,当RXENA和RXBKINTENA置1,SCI产生一个中断请求信号,CPU响应中断读取GSP定位信息。然而,接收到的定位信息是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。系统中断接收提取定位数据流程见图四
下面是基于TMS320F28335DSP硬件平台下,
CCS3.3软件环境下,采用C语言编写的SCI接收
中断程序,利用串口实现从GPS模块中接收
“$GPRMC”数据帧,并从中提取经纬度、时间以及日期等有用信息:
unsignedinti,j;
unsignedchargps_data;//待分离的GPRMC数据包
unsignedintgps_flag;//如果gps_flag=1,则接收成功
unsignedintID;//逗号计数器
constcharGPR[]="$GPRMC,";//GPRMC数据帧的帧头
structGPS{//用于存储提取出来的GPS数据
charAvailable;
charLatHemisphere;
charLongHemisphere;
charTime[12];
charLat[12];
charllong[12];
charSpeed[12];
}gps;
interruptvoidSciRXINTC_ISR(void)
{
unsignedcharch;
unsignedintii;
ch=ScicRegs.SCIRXBUF.all;
for(ii=0;ii<7;ii++)
{
if(ch==GPR[ii])//是所需的"$GPRMC,"数据帧
gps_flag=1;i=0;
}
while(gps_flag==1)
{
gps_data=ch;
if((ch=='\n')||(i>79))
{gps_data='\0';gps_flag=0;ID=0;}
}
for(i=0;((i<strlen(gps_data))&&(*(gps_data)!=0x0A));i++)
{
if(*(gps_data+i)==',')
{
ID++;
j=0;
}
else
{
switch(ID)
{
case1://时间
Time[j++]=*(gps_data+i);
break;
case2://是否有效
Available=*(gps_data+i);
break;
case3://纬度
Lat[j++]=*(gps_data+i);
break;
case4://南北半球
LatHemisphere=*(gps_data+i);
break;
case5://经度
llong[j++]=*(gps_data+i);
break;
case6://东西半球
LongHemisphere=*(gps_data+i);
break;
case7://速度
Speed[j++]=*(gps_data+i);
break;
case9://日期
Date[j++]=*(gps_data+i);
break;
default:break;
}
}
}
}
至此,系统完成了"$GPRMC"数据帧的接收并解析了该数据包,各种接收机通过对此数据包的后续处理,即可实现实时的跟踪导航定位服务。
4总结
伴随着GPS技术应用的迅猛发展,集成度高,功能完善的GPS定位系统的需求进一步增强,DSP技术与GPS技术的完美结合很好的解决了这一需求。本文给出了一种基于DSP的小型化、低成本、高实时性、易于工程实现的采集和处理GPS信号的系统设计方案,并采用C语言编程完成了GPS信号的采集、经纬度及时间的提取,易于移植应用到实际的工程项目中。
基金项目:渤海大学大学生创新基金项目
作者简介:
马健(1985-),男,汉族,硕士研究生,计算机软件与理论专业,研究方向:嵌入式系统、数字信号处理。
|
|
|
|
【对“硅谷杂志:基于DSP采集与处理GPS信号的系统设计”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|
|
|