news 2026/4/16 16:55:36

NMEA0183协议入门:格式、原理与应用全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NMEA0183协议入门:格式、原理与应用全解析

目录

一、 初学者基础认知

1. 协议定位与核心作用

2. 协议特点(适合初学者理解)

3. 标准通信参数

二、 协议核心:帧格式详解

1. 起始符:$

2. 地址域:aaXXX

3. 数据域:data1,data2,...,dataN

4. 校验和分隔符:*

5. 校验和:HH

6. 结束符:

三、 典型核心语句解析(初学者必掌握)

1. GGA 语句:GPS 定位数据(Global Positioning System Fix Data)

2. RMC 语句:推荐最小定位信息(Recommended Minimum Specific GPS/TRANSIT Data)

四、 技术要点(初学者避坑指南)

1. 数据接收与解析流程(嵌入式系统常用)

2. 常见问题与解决方法

3. 协议扩展与兼容

五、 典型应用场景

1. 嵌入式定位终端(初学者最常用)

2. 车载导航系统

3. 无人机飞控系统

4. 航海设备互联

六、 初学者实战建议


NMEA 0183 是由美国国家海洋电子协会(National Marine Electronics Association)制定的串行通信协议标准,最初用于航海电子设备(如 GPS、雷达、测深仪)之间的互联互通,目前已成为卫星定位、导航领域的通用协议,广泛应用于车载导航、无人机飞控、物联网定位终端等嵌入式系统中。

本详解面向初学者,从协议基础、帧结构、核心语句、技术要点到典型应用进行全方位拆解,帮助快速掌握协议本质及应用方法。

一、 初学者基础认知

1. 协议定位与核心作用

NMEA 0183 是一种ASCII 文本协议,采用串行异步通信方式,定义了导航设备之间数据传输的格式规范。其核心作用是:

  • 统一不同设备的输出数据格式(如 GPS 模块输出的位置、速度、时间信息);
  • 实现跨设备数据交互(如 GPS 模块向单片机、上位机传输定位数据)。

2. 协议特点(适合初学者理解)

特点说明
ASCII 文本格式数据以可读字符串形式传输,无需复杂解码,便于调试
串行异步通信依赖 UART/USART 物理层,通信参数可配置(标准参数为 4800bps)
帧式传输数据以 “帧” 为单位发送,每帧独立完整,支持错误校验
多语句类型定义了数十种语句(如 GGA、RMC),分别对应不同的导航数据
主从结构一个主设备(如 GPS 模块)可向多个从设备(如单片机)发送数据

3. 标准通信参数

NMEA 0183 的默认串行通信参数是初学者必须牢记的配置,也是设备通信成功的前提:

  • 波特率:4800 bps(部分模块支持 9600/115200 bps,需手动配置)
  • 数据位:8 bit
  • 停止位:1 bit
  • 校验位:无
  • 流控:无

二、 协议核心:帧格式详解

NMEA 0183 的数据帧结构是协议的灵魂,所有数据均以固定帧格式传输。单帧完整结构如下:

$aaXXX,data1,data2,...,dataN*HH<CR><LF>

我们将其拆解为6 个核心部分,逐一解析:

1. 起始符:$

  • 作用:标记一帧数据的开始,告诉接收端 “后续为有效 NMEA 数据”。
  • 格式:必须是 ASCII 字符$,不可省略或替换。

2. 地址域:aaXXX

  • 长度:5 个 ASCII 字符,分为2 位设备类型码+3 位语句类型码
  • 设备类型码aa:表示发送数据的设备类型,常见值:
    • GP:GPS 系统
    • BD:北斗系统
    • GL:GLONASS 系统
    • GN:多系统融合(GPS + 北斗 + GLONASS)
  • 语句类型码XXX:表示数据帧的类型,如GGA(定位数据)、RMC(推荐最小定位信息)。
  • 示例:$GPGGA→ GPS 设备发送的 GGA 类型定位数据。

3. 数据域:data1,data2,...,dataN

  • 作用:帧的核心内容,包含具体的导航数据(如经纬度、海拔、卫星数)。
  • 格式:多个数据字段用英文逗号,分隔;字段为空时,逗号不可省略(表示该字段无数据)。
  • 字段含义:随语句类型(XXX)变化,不同语句的字段数量和含义完全不同。
  • 示例:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47中,123519是 UTC 时间,4807.038,N是纬度。

4. 校验和分隔符:*

  • 作用:分隔数据域与校验和,标记后续为校验信息。
  • 格式:必须是 ASCII 字符*,位于数据域末尾、校验和之前。

5. 校验和:HH

  • 长度:2 位十六进制 ASCII 字符(00~FF)。
  • 作用:验证数据帧在传输过程中是否被篡改或出错,是保证数据可靠性的关键。
  • 计算方法
    1. 取帧中$的下一个字符开始,到*之前的所有字符(不含$*);
    2. 将这些字符按字节进行异或运算(XOR),初始值为 0;
    3. 将异或结果转换为两位大写十六进制字符串,即为校验和。
  • 验证方法:接收端按相同规则计算校验和,与帧中的HH对比,一致则数据有效,否则丢弃。
  • 示例计算:帧片段:GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,计算过程:G XOR P XOR G XOR G XOR A XOR , XOR ... XOR ,→ 结果为 0x47 → 校验和为47

6. 结束符:<CR><LF>

  • 组成:ASCII 回车符(\r,0x0D) + 换行符(\n,0x0A)。
  • 作用:标记一帧数据的结束,接收端检测到该组合后,判定当前帧接收完成。

三、 典型核心语句解析(初学者必掌握)

NMEA 0183 定义了数十种语句,但初学者只需掌握2 种核心语句,即可满足 80% 的定位应用需求:GGA 语句(完整定位数据)和RMC 语句(推荐最小定位信息)。

1. GGA 语句:GPS 定位数据(Global Positioning System Fix Data)

  • 核心作用:输出完整的 GPS 定位信息,包含时间、经纬度、定位质量、卫星数、海拔等。
  • 帧格式
    $GPGGA,UTC时间,纬度,纬度半球,经度,经度半球,定位质量,卫星数,HDOP,海拔高度,海拔单位,大地水准面高度,高度单位,差分时间,差分站ID*校验和<CR><LF>
  • 字段详细说明
字段序号字段含义示例值补充说明
1UTC 时间123519格式为hhmmss(时 - 分 - 秒),时区为 UTC
2纬度4807.038格式为ddmm.mmmm(度 - 分。分的小数部分)
3纬度半球NN = 北纬,S = 南纬
4经度01131.000格式为dddmm.mmmm(度 - 分。分的小数部分)
5经度半球EE = 东经,W = 西经
6定位质量10 = 无效定位;1=GPS 定位;2 = 差分 GPS 定位
7卫星数08参与定位的卫星数量,范围 0~32
8HDOP0.9水平精度因子,值越小精度越高
9海拔高度545.4相对于大地水准面的高度
10海拔单位M固定为米(M)
11大地水准面高度46.9大地水准面与椭球面的高度差
12高度单位M固定为米(M)
13差分时间(空)差分 GPS 数据的更新时间,单位秒
14差分站 ID(空)差分参考站的 ID 号,范围 0~1023
  • 初学者关键转换:经纬度格式转换NMEA 输出的经纬度是度分格式,而实际应用中常需转换为十进制度格式,公式如下:
    • 十进制纬度 = 度 + 分 / 60 → 示例:4807.038N = 48° + 7.038′/60 = 48.1173°N
    • 十进制经度 = 度 + 分 / 60 → 示例:01131.000E = 11° + 31.000′/60 = 11.5167°E

2. RMC 语句:推荐最小定位信息(Recommended Minimum Specific GPS/TRANSIT Data)

  • 核心作用:输出最精简的有效定位信息,包含时间、状态、经纬度、速度、航向、日期,适合对数据量要求低的场景。
  • 帧格式
    $GPRMC,UTC时间,状态,纬度,纬度半球,经度,经度半球,地面速度,地面航向,UTC日期,磁偏角,磁偏角方向,模式指示*校验和<CR><LF>
  • 关键字段说明
字段序号字段含义示例值补充说明
1UTC 时间123519格式hhmmss
2状态AA = 有效定位;V = 无效定位
3-6经纬度及半球同 GGA 语句-
7地面速度000.0单位为节(knot),1 节 = 1.852 km/h
8地面航向360.0以正北为 0°,顺时针方向的角度
9UTC 日期230394格式ddmmyy(日 - 月 - 年)
12模式指示AA = 自主定位;D = 差分定位

四、 技术要点(初学者避坑指南)

1. 数据接收与解析流程(嵌入式系统常用)

对于 STM32、HC32 等嵌入式单片机,接收解析 NMEA 0183 数据的标准流程如下:

  1. 配置串口:按协议参数(如 4800 8N1)初始化 UART/USART,开启接收中断或轮询接收。
  2. 帧头检测:实时检测串口数据流中的$字符,检测到后开始缓存后续数据。
  3. 帧尾检测:缓存过程中检测<CR><LF>,检测到后判定当前帧缓存完成。
  4. 校验和验证:按协议规则计算缓存数据的校验和,与帧中校验和对比,验证通过则进入解析。
  5. 字段拆分:按逗号分隔缓存的字符串,提取各字段内容。
  6. 数据转换:将字符串格式的数值(如经纬度、速度)转换为浮点数或整数,供应用层使用。

2. 常见问题与解决方法

常见问题原因解决方法
接收不到数据串口参数不匹配;模块未输出 NMEA 数据核对波特率 / 数据位 / 停止位;配置模块启用 NMEA 输出
数据校验失败传输过程中数据被干扰;校验和计算错误增加抗干扰措施(如屏蔽线);检查异或运算逻辑
经纬度计算错误混淆度分格式与十进制格式严格按照转换公式计算,注意度和分的划分
定位状态为 V(无效)模块未搜星;遮挡严重将模块放置在开阔无遮挡处;等待搜星完成

3. 协议扩展与兼容

  • 多系统兼容:北斗模块输出的语句前缀为$BDGGA,多系统融合模块前缀为$GNGGA,解析逻辑与 GPS 一致。
  • 波特率配置:部分模块支持修改 NMEA 输出波特率(如 9600 bps),需通过 AT 指令配置。

五、 典型应用场景

NMEA 0183 协议的应用已从航海扩展到多个领域,典型场景包括:

1. 嵌入式定位终端(初学者最常用)

  • 场景:基于 STM32F103 的 GPS 定位终端,采集经纬度数据并上传到云端。
  • 实现:GPS 模块通过串口输出 NMEA 0183 数据 → STM32 串口接收并解析 GGA/RMC 语句 → 提取十进制经纬度 → 通过 GPRS 模块上传到服务器。

2. 车载导航系统

  • 场景:汽车导航主机获取 GPS 模块的定位数据,实现路径规划与地图匹配。
  • 实现:GPS 模块输出 NMEA 数据 → 导航主机解析后,将定位信息与电子地图融合,显示车辆实时位置。

3. 无人机飞控系统

  • 场景:无人机获取自身位置、速度、航向信息,实现自主飞行与定点悬停。
  • 实现:飞控板(如 STM32H7)解析 GPS 模块的 NMEA 数据 → 结合 IMU(惯性测量单元)数据进行融合定位 → 输出控制指令到电机。

4. 航海设备互联

  • 场景:船舶的 GPS、雷达、测深仪通过 NMEA 0183 协议互联,实现数据共享。
  • 实现:GPS 模块输出定位数据 → 雷达设备接收后,将定位信息叠加到雷达图像上,辅助导航。

六、 初学者实战建议

  1. 硬件选型:选择一款性价比高的 GPS 模块(如 Ublox NEO-6M),模块自带串口输出 NMEA 数据,无需复杂配置。
  2. 调试工具:使用 USB 转串口模块,将 GPS 模块的输出数据接入电脑,通过串口助手(如 SSCOM)查看原始 NMEA 帧,直观理解协议格式。
  3. 代码实战:先实现基于单片机的 NMEA 帧接收与校验,再逐步实现字段拆分与经纬度转换,最后结合应用场景(如显示、上传)完成功能。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:29:35

CnOpenData 中国被盗(丢失)文物数据

安全防范是确保文物安全的第一关口。中国被盗&#xff08;丢失&#xff09;文物信息发布平台由公安部、国家文物局指导设在陕西省公安厅的全国文物犯罪信息中心&#xff0c;主要作用是为依法追索我国海外流失文物提供法律依据&#xff0c;为打击文物犯罪和规范文物市场管理等工…

作者头像 李华
网站建设 2026/4/16 11:24:10

基于 STM32 的快递柜智能取件照明辅助灯设计与实现

引言 随着快递柜的普及,夜间或低光照环境下取件时的照明问题逐渐凸显 —— 传统快递柜无针对性照明设计,用户取件时易出现找件困难、操作失误等问题。本文设计了一款基于 STM32 单片机的快递柜取件照明辅助灯,该系统可根据环境亮度自动判断是否需要照明,并通过人体红外感应…

作者头像 李华
网站建设 2026/4/12 13:04:39

Python if语句怎么用:条件判断教程

在Python编程中&#xff0c;if语句是最基础也是最重要的控制流结构之一&#xff0c;它允许程序根据条件执行不同的代码块。掌握if语句不仅是学习Python的起点&#xff0c;更是编写逻辑清晰、功能完善的程序的关键。无论是简单的条件判断还是复杂的嵌套逻辑&#xff0c;if语句都…

作者头像 李华
网站建设 2026/4/16 3:27:29

CNN参数量计算全解析:从基础公式到前沿优化

CNN参数量计算全解析&#xff1a;从基础公式到前沿优化 引言 在深度学习模型部署&#xff0c;特别是资源受限的移动端与边缘设备上&#xff0c;模型的参数量&#xff08;Params&#xff09;直接关系到存储占用、内存消耗与推理速度&#xff0c;是衡量模型轻量化程度的核心指标…

作者头像 李华
网站建设 2026/4/16 11:10:52

不止程序员|全人群转型大模型实战指南,从0到1突破AI转型瓶颈

当大模型从实验室走进产业落地&#xff0c;AI不再是程序员的专属赛道——无论是传统行业从业者、刚毕业的应届生&#xff0c;还是想跨界的职场人&#xff0c;都能借助大模型的风口实现职业重构。但转型路上&#xff0c;有人盲目跟风报课却无从下手&#xff0c;有人纠结于“没有…

作者头像 李华
网站建设 2026/4/16 11:09:43

Wi-Fi 8 登场:无线连接从“更快”转向“更稳”

在 CES 2026 上&#xff0c;Wi-Fi 8 成为无线行业的绝对焦点。 联发科、博通、高通纷纷发布最新芯片&#xff0c;华硕 ROG 也带来首批 Wi-Fi 8 路由器。趋势非常明确&#xff1a; 无线连接的竞争方向&#xff0c;已经从速度扩张转向稳定性提升。 Wi-Fi 7 已够快&#xff0c;Wi…

作者头像 李华