本文来源电子发烧友社区,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2284918_1_1.html
上一次我们上电之后可以看到串口打印了很多数据,为了后面进行测试分析,我们这次介绍下相应的协议格式。
上一次我们上电之后可以看到串口打印了很多数据,为了后面进行测试分析,我们这次介绍下相应的协议格式。
参见附件文档《NMEA Reference Manual1.pdf》
NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。
GNRMC/GPRMC:推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC时间,hhmmss.sss(时分秒.毫秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4> 纬度半球N(北半球)或S(南半球)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6> 经度半球E(东经)或W(西经)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以正北为参考基准,前面的0也将被传输)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也将被传输)
<11> 磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
*后hh为$到*所有字符的异或和
注意:
如果字段4的值等于N,则字段3的值等于 ddmm.mmmmmm;
如果字段4的值等于S,则字段3的值等于 -ddmm.mmmmmm;
如果字段6的值等于E,则字段5的值等于 ddmm.mmmmmm;
如果字段6的值等于W,则字段5的值等于 -ddmm.mmmmmm;
如果字段4的值等于S,则字段3的值等于 -ddmm.mmmmmm;
如果字段6的值等于E,则字段5的值等于 ddmm.mmmmmm;
如果字段6的值等于W,则字段5的值等于 -ddmm.mmmmmm;
注意2:
十进制北纬度数= dd + mm.mmmmmm/60;
十进制南纬度数= -(dd + mm.mmmmmm/60);
十进制东经度数= ddd + mm.mmmmmm/60;
十进制西经度数= -(ddd + mm.mmmmmm/60);
GNVTG/GPVTG:地面速度信息
十进制南纬度数= -(dd + mm.mmmmmm/60);
十进制东经度数= ddd + mm.mmmmmm/60;
十进制西经度数= -(ddd + mm.mmmmmm/60);
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
<1> 以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
<2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
<3> 地面速率(000.0~999.9节,前面的0也将被传输)
<4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
<5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效
$GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,HDOP-水平精度因子,椭球高,高度单位,大地水准面高度异常差值,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符和换行符),分别用14个逗号进行分隔。
格式示例:$GPGGA,014434.70,3817.13334637,N,12139.72994196,E,4,07,1.5,6.571,M,8.942,M,0.7,0016*79
该数据帧的结构及各字段释义如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss;
<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
<3> 纬度半球,N或S(北纬或南纬)
<4>经度,格式为dddmm.mmmm(第一位零也将传送);
<5> 经度半球,E或W(东经或西经)
<6> GPS状态, 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分
<7> 使用卫星数量,从00到12(第一个零也将传送)
<8> HDOP-水平精度因子,0.5到99.9,一般认为HDOP越小,质量越好。
<9> 海拔高度,-9999.9到9999.9米
M 指单位米
<10> 大地水准面高度异常差值,-9999.9到9999.9米
M 指单位米
<11> 差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空
<12> 差分参考基站标号,从0000到1023(首位0也将传送)。
* 语句结束标志符
xx 从$开始到*之间的所有ASCII码的异或校验
回车符,结束标记
换行符,结束标记
$GPGSV
|
例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70
|
字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息
|
字段1:本次GSV语句的总数目(1 - 3)
|
字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)
|
字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)
|
字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
|
字段5:卫星仰角(00 - 90)度(前导位数不足则补0)
|
字段6:卫星方位角(00 - 359)度(前导位数不足则补0)
|
字段7:信噪比(00-99)dbHz
|
字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
|
字段9:卫星仰角(00 - 90)度(前导位数不足则补0)
|
字段10:卫星方位角(00 - 359)度(前导位数不足则补0)
|
字段11:信噪比(00-99)dbHz
|
字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
|
字段13:卫星仰角(00 - 90)度(前导位数不足则补0)
|
字段14:卫星方位角(00 - 359)度(前导位数不足则补0)
|
字段15:信噪比(00-99)dbHz
|
字段16:校验值
|
$GPGSA
|
例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A
|
字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息
|
字段1:定位模式,A=自动手动2D/3D,M=手动2D/3D
|
字段2:定位类型,1=未定位,2=2D定位,3=3D定位
|
字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
|
字段15:PDOP综合位置精度因子(0.5 - 99.9)
|
字段16:HDOP水平精度因子(0.5 - 99.9)
|
字段17:VDOP垂直精度因子(0.5 - 99.9)
|
字段18:校验值
|
报文格式如下:
$GNGGA,[utc_time],[ weidu],[ NS],[ jingdu],[ EW],[state],[num],[hdop],[haiba_gao],[gao_danwei],[tuoqiu],[chafen_time],[chafen_id],[jiaoyan],[tagid],[power],[信号强度],[保留1],[保留2],[保留3]
数据示例:
$GNGGA,045449.000,3951.764319,N,11615.386554,E,2,19,0.70,57.726,M,-9.89,M,11,0000*69,1872,2d,19,0,0,0
*字段说明:
*1.$GNGGA;//包头
*2.utc_time;//字段1:UTC 时间,hhmmss.sss,时分秒格式
*3.weidu;//字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
*4.NS;//字段3:纬度N(北纬)或S(南纬)
*5.jingdu;//字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
*6.EW;//字段5:经度E(东经)或W(西经)
*7.state;//字段6:定位质量GPS状态,0.初始化,1.单点定位,2.码差分,3.无效PPS,4.固定解,5.浮点解, 6.正在估算, 7.人工输入固定值,8.模拟模式,9.WAAS差分
*8.num;//字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
*9.hdop;//字段8:HDOP水平精度因子(0.5 - 99.9)
*10.haiba_gao;//字段9:天线距离海平面高度(-9999.9 - 99999.9)
*11.gao_danwei;//字段10:高度单位M表示米
*12.tuoqiu;//字段11:地球椭球面相对大地水准面的高度
*13.chafen_time;//字段12:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
*14.chafen_id;//字段13:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
*15.jiaoyan;//字段14:校验值
*16.tagid;//字段15,:设备id,低位在前高位在后HEX格式
*17.power;//字段16;电量,HEX格式,0~100
*18.卫星信号强度
*19.保留位1
*20.保留位2
*21.保留位3
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
御芯微
+关注
关注
4文章
55浏览量
3314 -
开发板试用
+关注
关注
3文章
301浏览量
2040 -
UCM108E
+关注
关注
0文章
13浏览量
142
发布评论请先 登录
相关推荐
瑞芯微RK3568开发板Linux编译报错404怎么办?触觉智能教你轻松解决
本文介绍瑞芯微RK3568主板/开发板SDK编译流程和编译报错404的解决方法,使用触觉智能EVB3568鸿蒙开发板演示,具有丰富的视频输入输出接口(HDMI/eDP/MIPI/LVD
点击参与米尔NXP i.MX 93开发板有奖试用
米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-LMX9X开发板发起试用活动您不仅可以免费体
modbus报文解析,modbus报文格式详解
支持点对点和多点通信,可以实现控制器之间的通信。 Modbus报文是Modbus协议中的基本通信单位。Modbus报文包含一个头部和数据部分。头部包含了从站地址、功能码和数据长度等信息,数据部分包含了请求或响应数据。 1. 地址码(Address Code):指定通信对象
CAN的报文格式和发送总流程
在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
发表于 04-11 10:07
•8864次阅读
modbus报文解析,modbus报文格式详解
支持点对点和多点通信,可以实现控制器之间的通信。 Modbus报文是Modbus协议中的基本通信单位。Modbus报文包含一个头部和数据部分。头部包含了从站地址、功能码和数据长度等信息,数据部分包含了请求或响应数据。 1. 地址码(Address Code):指定通信
评论