GPS定位及通信协议解析

1.简介

上图为某公司的GPS定位模块,自己在使用其进行GPS定位过程中学习到的知识分享给大家。

主要参数如下

◆半双工 UART(3.3V_TTL 电平)/RS232/IIC/CAN 接口输出,更快速的应用;

◆采用 KDS 0.5PPM 高精度 TCXO;

◆丰富的数据输出速率:115200bps(默认) [可选: 9600/38400];

◆输出语句:NMEA 0183 V3.0/UBX 协议;

◆支持可调的数据刷新率:1Hz-10Hz;

◆自主研发设计天线振子,保证相位中心与几何中心重合,将天线对测量误差的影响 降低到最小; ◆支持选配 A-GPS 服务、地磁传感器、压力传感器;

◆GPS、BD、GLONASS 混合引擎可选;

◆采用无铅工艺制造,符合 RoHS 标准。

它支持两种协议:

NMEA 0183 通用协议UBX通信协议

2. NMEA 0183 协议

NMEA 0183 是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了 GPS 导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。NMEA0183 协议采用 ASCII 码来传递 GPS 定位信息,我们称之为帧。帧格式形如:

$aaccc,ddd,ddd,„,ddd*hh(CR)(LF)

1. “$”:帧命令起始位

2. “aaccc”:地址域,前两位为识别符(aa),后三位为语句名(ccc)

3. “ddd,ddd”:数据内容

4. “*”:校验和前缀(也可以作为语句数据结束的标志)

5. “hh”:校验和(check sum),$与*之间所有字符 ASCII 码的校验和(各字 节做异或运算,得到校验和后,再转换 16 进制格式的 ASCII 字符)

6. “(CR)(LF)”:帧结束,回车和换行符

主要命令:

序号 命令 说明 最大帧长(Byte)

1 $GPRMC 推荐定位信息 70

2 $GPGGA GPS 定位信息 72

3 $GPVTG 地面速度信息 34

4 $RHXZ 地磁信息 24

5 $GPGSA 当前卫星信息 65

6 $GPGSV 可见卫星数 210

7 $GPGLL 大地坐标信息

指令解析:

1.$GPRMC(推荐定位信息,Recommended Minimum Specific GPS/Transit Data) $GPRMC 语句的基本格式如下: $GPRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)

(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.0 度,前导位数不足则补 0)

(11)磁偏角方向,E(东)或 W(西) (12)模式指示(A=自主定位,D=差分,R=RTK,E=估算,N=数据无效) 举例如下: $GPRMC,084103.00,A,2233.395441,N,11356.556656,E,0.035,,220618,,,A*7A

2.$GPGGA(GPS 定位信息,Global Positioning System Fix Data) $GPGGA 语句的基本格式如下(其中 M 指单位 M,下同): $GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)( LF)

(1)UTC 时间,格式为 hhmmss.ss;

(2)纬度,格式为 ddmm.mmmmmm 度分格式);

(3)纬度半球,N 或 S(北纬或南纬);

(4)经度,格式为 dddmm.mmmmmm 度分格式);

(5)经度半球,E 或 W(东经或西经);

(6)GPS 状态,0=未定位,1=非差分定位,2=差分定位;

(7)正在使用的用于定位的卫星数量(00~12)

(8)HDOP 水平精确度因子(0.5~99.9)

(9)海拔高度(-9999.9 到 9999.9 米)

(10)大地水准面高度(-9999.9 到 9999.9 米)

(11)差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为 空)

(12)差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为 空) 举例如下: $GPGGA,070343.90,2236.360900,N,11352.021690,E,1,04,68.82,-72.83,M,- 1.00,M,,*68

3.$GPVTG(地面速度信息,Track Made Good and Ground Speed) $GPVTG 语句的基本格式如下: $GPVTG,(1),T,(2),M,(3),N,(4),K,(5)*hh(CR)(LF)

(1)以真北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)

(2)以磁北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)

(3)地面速率(000.0~999.9 节,前面的 0 也将被传输)

(4)地面速率(0000.0~1851.8 公里/小时,前面的 0 也将被传输)

(5)模式指示(A=自主定位,D=差分,E=估算,N=数据无效) 举例如下: $GPVTG,,T,,M,0.106,N,0.196,K,A*2A

4.$RHXZ(地磁传感器信息) $RHXZ 语句的基本格式如下: $RHXZ,(1),(2),(3) *hh(CR)(LF)

(1)地磁传感器 X 轴的 16 进制值(高位在前,如 0057 表示 0x0057,范围 0000~FFFF,前面的 0 也将被传输)

(2)地磁传感器 Y 轴的 16 进制值(高位在前,如 FE6E 表示 0xFE6E,范围 0000~FFFF,前面的 0 也将被传输)

(3)地磁传感器 Z 轴的 16 进制值(高位在前,如 0210 表示 0x0210,范围 0000~FFFF,前面的 0 也将被传输) 举例如下: $RHXZ,0057,FE6E,0210*45

5.$GPGSA(当前卫星信息) $GPGSA 语句的基本格式如下: $GPGSA,(1),(2),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(3),(4),(5 ),(6)*hh(CR)(LF)

(1)模式,M = 手动,A = 自动。

(2)定位类型,1=未定位,2=2D 定位,3=3D 定位。

(3)正在用于定位的卫星号(01~32)

(4)PDOP 综合位置精度因子(0.5-99.9)

(5)HDOP 水平精度因子 1(0.5-99.9)

(6)VDOP 垂直精度因子(0.5-99.9) 举例如下: $GPGSA,A,3,26,02,05,29,15,21,,,,,,,2.45,1.49,1.94*0E

6.$GPGSV(可见卫星数,GPS Satellites in View) $GPGSV 语句的基本格式如下: $GPGSV,(1),(2),(3),(4),(5),(6),(7),...,(4),(5),(6),(7)*hh(CR)(LF)

(1)GSV 语句总数。

(2)本句 GSV 的编号。

(3)可见卫星的总数(00~12,前面的 0 也将被传输)。

(4)卫星编号(01~32,前面的 0 也将被传输)。

(5)卫星仰角(00~90 度,前面的 0 也将被传输)。

(6)卫星方位角(000~359 度,前面的 0 也将被传输)

(7)信噪比(00~99dB,没有跟踪到卫星时为空)。

注:每条 GSV 语句最多包括四颗卫星的信息,其他卫星的信息将在下一条 $GPGSV 语句中输出。

举例如下: $GPGSV,3,1,12,02,39,117,25,04,02,127,,05,40,036,24,08,10,052,*7E $GPGSV,3,2,12,09,35,133,,10,01,073,,15,72,240,22,18,05,274,*7B $GPGSV,3,3,12,21,10,316,31,24,16,176,,26,65,035,42,29,46,277,18*7A

7.$GPGLL(定位地理信息,Geographic Position) $GPGLL 语句的基本格式如下: $GPGLL,(1),(2),(3),(4),(5),(6),(7)*hh(CR)(LF)

(1)纬度 ddmm.mmmmm(度分)

(2)纬度半球 N(北半球)或 S(南半球)

(3)经度 dddmm.mmmmm(度分)

(4)经度半球 E(东经)或 W(西经)

(5)UTC 时间:hhmmss(时分秒

(6)定位状态,A=有效定位,V=无效定位

(7)模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

举例如下: $GPGLL,2308.28715,N,11322.09875,E,023543.00,A,A*6A

3. NMEA0183 协议校验参考程序

unsigned char Calc_GPS_Sum( const char* Buffer )
{
unsigned char i, j, k, sum;
sum = 0;
for ( i = 1; i < 255; i++ ) //i 从 1 开始是闪过$开始符
{
if ( ( Buffer[i] != '*' ) && ( Buffer[i] != 0x00 ) ) //判断结束符
{
sum ^= Buffer[i];//GPS 校验和算法为 XOR
}
else
{
break;
}
}
j = Buffer[i + 1];//取结束符后两位字符
k = Buffer[i + 2];
if ( isalpha( j ) ) //判断字符是否为英文字母,为英文字母时返回非零值,否则返回零
{
if ( isupper( j ) ) //判断字符为大写英文字母时,返回非零值,否则返回零
{
j -= 0x37;//强制转换为 16 进制
}
else
{
j -= 0x57;//强制转换为 16 进制
}
}
else
{
if ( ( j >= 0x30 ) && ( j <= 0x39 ) )
{
j -= 0x30;//强制转换为 16 进制
}
}
if ( isalpha( k ) ) //判断字符是否为英文字母,为英文字母时返回非零值,否则返回零
{
if ( isupper( k ) ) //判断字符为大写英文字母时,返回非零值,否则返回零
{
k -= 0x37;//强制转换为 16 进制
}
else
{
k -= 0x57;//强制转换为 16 进制
}
}
else
{
if ( ( k >= 0x30 ) && ( k <= 0x39 ) )
{
k -= 0x30;//强制转换为 16 进制
} }
j = ( j << 4 ) + k; //强制合并为 16 进制
// gps_sum = j;
if ( sum == j )
{
return Valid; //校验和正常
}
else
{
return Invalid; //校验和错误
} }

4.GPS模块测试软件

gps模块可以使用u-center测试软件来测试,可以支持串口和网口两种方式。

也可以使用SSCOM串口来采集GPS数据保存到文件使用

5.相关软件下载

数字地球软件下载地址:https://download.csdn.net/download/xipengbozai/19774250

GPS测试软件下载地址:https://download.csdn.net/download/xipengbozai/19774233

GPS数据转换工具:https://download.csdn.net/download/xipengbozai/19774213

附图(数字地球截软件截图)

猜你喜欢

转载自blog.csdn.net/xipengbozai/article/details/118103147
今日推荐