嵌入式 GNSS 开发:NMEA‑0183 协议字段详解
GNSS 模块调试时,开启 debug 后日志会不断输出$开头的字符串,很难直接读取定位、卫星等有效信息。这些数据是通用标准NMEA 报文,内含时间、经纬度、速度、卫星状态等全部导航数据。
读懂并解析 NMEA 报文,是 GNSS 开发、定位校验与故障排查的必备技能。本文结合合宙 Air8000A 模块实测日志,详细讲解报文结构与常用语句,实现精准解析。
一、NMEA-0183协议简介
1983年,美国国家海洋电子协会NMEA(National Marine Electronics Association)制定了一套通信协议,旨在解决不同航海电子设备(如GPS、雷达、声呐)之间的数据互通问题。
——这套协议就是NMEA-0183。 如今,它已成为GNSS接收机最广泛使用的数据输出格式,几乎所有民用定位模块都遵守这个标准。
有了NMEA-0183,无论你用的是合宙Air8000A,还是其他品牌的模块,输出的数据格式都是统一的。开发者只需要学会这一种“语言”,就能读懂所有GNSS模块的“心里话”。
二、NMEA语句的通用结构
NMEA语句是以ASCII字符串形式输出的,每条语句以$开头,以回车换行结束,结构清晰,便于解析。
先看一条典型的NMEA语句:
$GNRMC,085822.000,A,3308.0992839,N,10659.0587432,E,0.004,0.000,311025,,,A,S*06
它的结构非常规范:

其中“地址域”的前两位表示卫星系统来源:
-
GP: 仅GPS
-
GL: 仅GLONASS
-
BD: 仅北斗(部分接收机用GB)
-
GA: 仅伽利略
-
GN: 多系统融合(GPS+北斗+GLONASS+伽利略)
现代多模接收机通常输出GN开头的语句,代表联合解算的结果。
三、六大核心NMEA语句详解
掌握以下六种语句,就能满足99%的应用场景 ——理解这些语句,就掌握了与GNSS设备沟通的密码。在实际编程解析时,应先根据语句头判断类型,再按字段顺序拆分处理,尤其要注意数值单位(度分、节、米等)的转换。

第一种:GGA——全球定位系统固定数据(最核心)
GGA(Global Positioning System Fix Data)包含了时间、位置、定位质量、卫星数、精度因子、海拔高度等最关键的定位信息,是开发者最常解析的语句之一。
语句示例:
$GPGGA,085823.000,3308.0992788,N,10659.0587414,E,1,30,0.600,521.809,M,-31.322,M,,*65
字段详解:

解析要点:
1)定位状态字段(第6字段)为1或2时,才表示有效定位。
2)HDOP值小于1为极佳,1-2为优秀,2-5为尚可,大于5为差。
第二种:RMC——推荐最小定位信息(最常用)
RMC(Recommended Minimum Specific GNSS Data)包含了时间、位置、速度、航向、日期等最精简的导航数据,是许多系统的首选数据源。
语句示例:
$GNRMC,085822.000,A,3308.0992839,N,10659.0587432,E,0.004,0.000,311025,,,A,S*06
字段详解:

解析要点:
1)状态字段(第2字段)为A时,数据才可用。
2)速度单位是节,如需公里/小时需乘以1.852。
3)日期字段需要转换为实际日期:311025表示2025年10月31日(注意年份只有两位,需自行处理世纪)。
第三种:GSA——卫星精度衰减因子与参与解算卫星
GSA(GNSS DOP and Active Satellites)这条语句解释了定位“质量”和“精度”的由来——哪些卫星参与了定位,以及几何精度因子。
语句示例:
$GNGSA,A,3,06,19,195,17,14,,,,,,,,14.32,4.01,13.75,1*31
字段详解:

解析要点:
1)现代多模接收机会为每个卫星系统输出一条独立的$GNGSA语句(系统标识字段不同),最后可能还有一条融合所有系统的“最佳”GSA。
2)PRN号列表可以帮助你了解当前使用的是哪些卫星。
第四种:GSV——可见卫星信息
GSV(GNSS Satellites in View)描绘了当前的“天空视图”,告诉你所有能看到的卫星及其信号质量。
语句示例:
$GPGSV,3,1,10,9,43,299,45,8,48,187,41,27,68,128,45,7,13,304,30,1*55
字段详解:

解析要点:
1)GSV语句通常会被拆分成多条发送,需要拼接所有语句才能获得完整的可见卫星列表。
2)信噪比(SNR)大于40dB-Hz为强信号,30-40为中等,低于30为弱信号,可能无法用于定位。
3)每个卫星系统都会输出自己的GSV语句,如$GPGSV(GPS)、$BDGSV(北斗)、$GLGSV(GLONASS)、$GAGSV(伽利略)。
第五种:ZDA——时间和日期
ZDA(Time and Date)提供最完整的时间信息,包括年、月、日、时、分、秒以及本地时区偏移,常用于系统精确授时。
语句示例:
$GNZDA,124108.000,24,12,2025,00,00*46
字段详解:

解析要点:
1)ZDA语句提供了完整的4位年份,避免了RMC中两位年份的世纪歧义问题,适用于需要精确时间戳的应用。
2)时区偏移字段可选,很多接收机输出为空或00。如果需要本地时间,需自行根据时区计算。
3)该语句通常每秒输出一次,与RMC的时间信息一致,但提供更完整的日期格式。
第六种:VTG——地面速度信息
VTG(Track Made Good and Ground Speed)专门提供速度和航向信息,由对地速度和航向角计算得出,不包含位置信息。
语句示例:
$GNVTG,0.000,T,,M,0.004,N,0.008,K,A*2B
字段详解:

解析要点:
1)真北航向角(第1字段)是最常用的航向数据,以度为单位,0°表示正北,90°表示正东。
2)速度提供了两种单位:节(N)和公里/小时(K),可根据需要选用。注意节和公里/小时的换算关系:1节=1.852公里/小时。
3)如果模块未定位或速度为零,航向角可能输出0.000或空值。
四、Air8000A实战:NMEA日志解析
以Air8000A系列多功能工业引擎为例,要获取并分析NMEA日志,首先需要完成软硬件环境的准备,新朋友可参考下方文档。
-
软件demo下载https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/gnss/exgnss/combination
-
Luatools实操教程:https://docs.openluat.com/air8000/luatos/common/download/
烧录成功后,从日志中获取的原始NMEA数据是分析定位性能的第一手资料。
以下是一组来自多系统融合定位日志的分析:
▼ NMEA日志分析 ▼
1386471372.png)
01. 核心定位结果
数据来自$GNRMC和$GNGGA语句:
-
定位状态:有效且精度很高($GNGGA中的1表示单点定位,$GNRMC中的A表示数据有效)。
-
时间:UTC 时间 08:58:23(2025年10月31日,由 $GNRMC中的311025可推算)。
-
位置:纬度33°08.0992788‘ N;经度 106°59.0587414’ E。不同语句间位置高度一致(如 $GNRMC 与 $GNGGA 的经纬度仅在小数点后第6位有微小差异),说明数据稳定。
-
海拔高度:521.809 米(大地高)。
-
对地速度:0.004节(约0.0074公里/小时),表明设备几乎完全静止。
02. 卫星视图与定位质量(关键优势)
为何能实现如此高的精度?答案在$GNGSA和$xxGSV语句中。
1)多系统联合解算
参与解算的卫星系统与数量如下:
-
GPS:使用了6颗卫星(PRN: 09, 04, 16, 08, 27, 26)。
-
北斗:使用了7颗卫星(PRN: 16, 40, 06, 39, 34, 24, 07, 10, 25, 33, 41, 09)。
注意,北斗的$GNGSA语句中列出了12颗卫星,表明可用卫星极多。
-
伽利略:使用了4颗卫星(PRN: 29, 23, 19, 04)。
-
格洛纳斯:使用了3颗卫星(PRN: 03, 42, 60, 02)。
-
QZSS(日本准天顶):可能辅助了2颗卫星(PRN: 03, 07, 02)。QZSS 常作为GPS的增强系统。
设备同时使用了GPS、北斗、伽利略、格洛纳斯 四大系统,并可能辅以QZSS(日本准天顶系统)增强信号——总计参与解算的卫星超过20颗,为精确定位提供了极佳的冗余度。
2)精度因子(DOP)—— 表现极佳:
-
PDOP(位置精度因子):1.075($GNGSA语句中给出)。
-
HDOP(水平精度因子):0.600($GNGGA和 $GNGSA 中一致)。
-
VDOP(垂直精度因子):0.892。
所有DOP值均远小于1.5,属于“极佳”范围。这表明卫星在天空中的几何分布非常理想,定位的潜在几何误差被降到最低。通常,HDOP<1.0意味着水平定位精度可能达到亚米级甚至更高。
03. 质量与误差统计
1)定位模式: $GNGSA中的模式为A(自动)和3(3D 定位),表明接收机自动选择了最佳的3维定位模式。
2)误差估计: $GNGST语句给出了接收机内部的误差估算:水平定位误差的RMS(均方根)约为0.820米,半长轴误差(保守估计)约为2.916米。这印证了亚米级到米级的定位精度。
综上所述,这是一组典型的高质量多系统GNSS定位数据。
清晰地展示了设备在开阔环境下,通过GPS、北斗(BDS)、伽利略(GAL)和格洛纳斯(GLONASS)多模融合所实现的高精度、高可靠性定位状态。

今天的内容就分享到这里了,欢迎加技术交流群共同探讨。

浙公网安备 33010602011771号