GPS定位系统的通信协议主要分为两大类:NMEA 0183标准文本协议厂商二进制协议(如UBX、SiRF等)。以下是详细说明:

一、NMEA 0183 标准协议

NMEA 0183是由美国国家海洋电子协会制定的通用GPS数据格式协议,采用ASCII明文传输,兼容性极强,广泛应用于民用设备。

1. 协议特性

数据格式:逗号分隔的文本字符串,以$开头,*后接校验和,结尾为<CR><LF>

1
$GPGGA,092255.00,4807.0386,N,01131.0000,E,1,08,1.2,545.4,M,46.9,M,,*42
  • 校验和$*之间的字符异或运算(XOR)后的十六进制值,用于验证数据完整性。
  • 传输速率:默认波特率通常为9600 bps,可通过配置修改。

2. 核心语句类型

以下为最常见的NMEA语句及其功能:

语句类型 描述 关键字段示例
$GPGGA 全球定位系统固定数据 时间、纬度、经度、定位质量、卫星数、HDOP、海拔
$GPRMC 推荐最小定位数据 时间、状态(A/V)、纬度、经度、速度、日期
$GPGSV 可见卫星信息 卫星总数、仰角、方位角、信噪比(SNR)
$GPGSA 精度因子与活动卫星 定位模式(2D/3D)、卫星ID、PDOP/HDOP/VDOP
$GPVTG 地面速度与航向 真北航向、磁北航向、地面速度(km/h或节)
$GPGLL 地理定位信息(简化版) 纬度、经度、UTC时间、状态

3. 多系统扩展

支持多卫星系统(如北斗、GLONASS、Galileo)的模块会使用以下前缀:

  • GP:GPS(美国)
  • GL:GLONASS(俄罗斯)
  • GA:Galileo(欧盟)
  • BDGB:北斗(中国)
  • GN:混合系统(如$GNGGA表示多系统联合定位数据)

二进制协议(厂商私有协议)

为提高效率和实现高级控制,厂商设计了二进制协议,例如:

1. UBX协议(u-blox模块)

  • 特点:高效二进制格式,支持配置、诊断、高精度定位。

  • 消息结构:

    1
    2
    3
    4
    5
    [0xB5][0x62]  // 同步头
    [Class][ID] // 消息类型标识
    [Length] // 数据长度
    [Payload] // 数据内容
    [CK_A][CK_B] // 校验和
  • 常用功能:

    • 配置输出频率(CFG-MSG
    • 设置定位模式(NAV5
    • 获取原始观测数据(RXM-RAW

2. SiRF协议(SiRFstar芯片)

  • 特点:早期广泛使用的二进制协议,支持星历下载和低功耗模式。
  • 消息结构:以0xA0开头,包含消息ID和数据负载。

三、协议应用场景

协议类型 适用场景 优势与劣势
NMEA 0183 通用设备(车载导航、手持终端) ✅ 兼容性强,易解析 ❌ 效率低,冗余多
UBX/SiRF 高精度定位(无人机、测绘) ✅ 高效,支持高级功能 ❌ 需专用解析库

四、协议解析示例

NMEA语句解析(以$GPGGA为例)

1
$GPGGA,092255.00,4807.0386,N,01131.0000,E,1,08,1.2,545.4,M,46.9,M,,*42
  • 字段分解:

    序号 字段 含义
    1 092255.00 UTC时间(09:22:55)
    2 4807.0386 纬度(48°07.0386’)
    3 N 北纬
    4 01131.0000 经度(011°31.0000’)
    5 E 东经
    6 1 定位质量(0=无效,1=单点定位)
    7 08 参与定位的卫星数量
    8 1.2 HDOP(水平定位精度因子)
    9 545.4,M 海拔高度(米)

UBX协议解析示例(配置消息)

plaintext

1
B5 62 06 00 14 00 01 00 00 00 D0 08 00 00 00 96 00 00 07 00 01 00 00 00 00 00 9A 99
  • 解析:
    • 同步头:B5 62
    • Class-ID:06 00(CFG-MSG)
    • 负载:设置NMEA语句GGA的输出频率为1Hz。

五、协议调试工具

  1. 串口调试助手:如Putty、Tera Term,直接查看原始数据。
  2. 专用软件:
    • u-blox u-center(支持UBX协议配置)
    • GPSInfo(可视化NMEA数据)
  3. 在线校验工具:验证NMEA校验和(如nmea-checksum)。

六、注意事项

  1. 数据完整性:需校验和验证,避免解析错误。
  2. 多系统兼容:混合定位时需注意语句前缀(如$GNGGA可能包含GPS+北斗数据)。
  3. 波特率匹配:确保设备与接收端波特率一致(常见值:4800/9600/115200 bps)。

掌握GPS协议是开发定位系统的核心基础,通过协议解析可快速诊断硬件问题(如天线信号弱、卫星数不足)或配置错误(如输出频率设置不当)。


3. 如何查看日志?

方法1:直接阅读NMEA日志

  • 示例日志行:

    1
    $GNGGA,102842.00,2231.86157,N,11356.30255,E,1,05,10.50,129.7,M,-2.7,M,,*65
  • 解析:

    • **102842.00**:UTC时间(10:28:42.00)
    • **2231.86157,N**:纬度(22°31.86157’ 北纬)
    • **11356.30255,E**:经度(113°56.30255’ 东经)
    • **1**:定位质量(1=单点定位)
    • **05**:参与定位的卫星数
    • **10.50**:HDOP(水平精度因子,越小越好)
    • **129.7,M**:海拔高度(129.7米

4. 如何判断GPS数据是否有效?

关键指标 有效值 无效值
定位状态($GNRMC) A(有效) V(无效)
定位质量($GNGGA) 1(单点定位) 0(无效)
卫星数($GNGGA) ≥4 <4
HDOP($GNGGA) <2(优) >10(差)