NMEA-0183 協(xié)議簡介
NMEA - 0183 是美國國家海洋電子協(xié)會(National Marine Electronics Association)為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式。目前業(yè)已成了 GPS/北斗導(dǎo)航設(shè)備統(tǒng)一的 RTCM(Radio Technical Commission for Maritime services)標(biāo)準(zhǔn)協(xié)議。
NMEA-0183 協(xié)議采用 ASCII 碼來傳遞 GPS 定位信息,我們稱之為幀。
幀格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)
1、“$”:幀命令起始位
2、aaccc:地址域,前兩位為識別符(aa),后三位為語句名(ccc)
3、ddd…ddd:數(shù)據(jù)
4、“*”:校驗(yàn)和前綴(也可以作為語句數(shù)據(jù)結(jié)束的標(biāo)志)
5、hh:校驗(yàn)和(check sum),$與*之間所有字符 ASCII 碼的校驗(yàn)和(各字節(jié)做異或運(yùn)算,得到校驗(yàn)和后,再轉(zhuǎn)換 16 進(jìn)制格式的 ASCII 字符)
6、(CR)(LF):幀結(jié)束,回車和換行符
NMEA-0183 常用命令如表所示:
上表為 NMEA-0183 常用命令表
注 1: 即協(xié)調(diào)世界時(shí),相當(dāng)于本初子午線(0 度經(jīng)線)上的時(shí)間,北京時(shí)間比 UTC 早 8 個(gè)小時(shí)。
接下來我們分別介紹這些命令。
一,$GNGGA(GPS 定位信息,Global Positioning System Fix Data)
$GNGGA 語句的基本格式如下(其中 M 指單位 M,hh 指校驗(yàn)和,CR 和 LF 代表回車換行,下同):
$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
UTC 時(shí)間,格式為 hhmmss.ss;
緯度,格式為 ddmm.mmmmm(度分格式);
緯度半球,N 或 S(北緯或南緯);
經(jīng)度,格式為 dddmm.mmmmm(度分格式);
經(jīng)度半球,E 或 W(東經(jīng)或西經(jīng));
GPS 狀態(tài),0=未定位,1=非差分定位,2=差分定位;
正在使用的用于定位的衛(wèi)星數(shù)量(00~12)
HDOP 水平精確度因子(0.5~99.9)
海拔高度(-9999.9 到 9999.9 米)
大地水準(zhǔn)面高度(-9999.9 到 9999.9 米)
差分時(shí)間(從最近一次接收到差分信號開始的秒數(shù),非差分定位,此項(xiàng)為空)
差分參考****標(biāo)號(0000 到 1023,首位 0 也將傳送,非差分定位,此項(xiàng)為空)
舉例如下:
$GNGGA,095528.000,2318.1133,N,11319.7210,E,1,06,3.7,55.1,M,-5.4,M,,0000*69
二,$GNGSA(當(dāng)前衛(wèi)星信息)
$GNGSA 語句的基本格式如下:
$GNGSA,(1),(2),(3),(4),(5),(6)*hh(CR)(LF)
模式,M = 手動,A = 自動。
定位類型,1=未定位,2=2D 定位,3=3D 定位。
正在用于定位的衛(wèi)星號(01~32)
PDOP 綜合位置精度因子(0.5-99.9)
HDOP 水平精度因子 1(0.5-99.9)
VDOP 垂直精度因子(0.5-99.9)
舉例如下:
$GNGSA,A,3,14,22,24,12,,,,,,,,,4.2,3.7,2.1*2D
$GNGSA,A,3,209,214,,,,,,,,,,,4.2,3.7,2.1*21
注 1: 精度因子值越小,則準(zhǔn)確度越高。
三,$GPGSV(可見衛(wèi)星數(shù),GPS Satellites in View)
$GPGSV 語句的基本格式如下:
$GPGSV, (1),(2),(3),...,(4),(5),(6),(7)*hh(CR)(LF)
GSV 語句總數(shù)。
本句 GSV 的編號。
可見衛(wèi)星的總數(shù)(00~12,前面的 0 也將被傳輸)。
衛(wèi)星編號(01~32,前面的 0 也將被傳輸)。
衛(wèi)星仰角(00~90 度,前面的 0 也將被傳輸)。
衛(wèi)星方位角(000~359 度,前面的 0 也將被傳輸)
信噪比(00~99dB,沒有跟蹤到衛(wèi)星時(shí)為空)。
注:每條 GSV 語句最多包括四顆衛(wèi)星的信息,其他衛(wèi)星的信息將在下一條$GPGSV 語句中輸出。
舉例如下:
$GPGSV,3,1,11,18,73,129,19,10,71,335,40,22,63,323,41,25,49,127,06*78
$GPGSV,3,2,11,14,41,325,46,12,36,072,34,31,32,238,22,21,23,194,08*76
$GPGSV,3,3,11,24,21,039,40,20,08,139,07,15,08,086,03*45
四,$BDGSV(可見衛(wèi)星數(shù),GPS Satellites in View)
$BDGSV 語句的基本格式如下:
$BDGSV, (1),(2),(3),(4),(5),(6),(7),...,(4),(5),(6),(7)*hh(CR)(LF)
GSV 語句總數(shù)。
本句 GSV 的編號。
可見衛(wèi)星的總數(shù)(00~12,前面的 0 也將被傳輸)。
衛(wèi)星編號(01~32,前面的 0 也將被傳輸)。
衛(wèi)星仰角(00~90 度,前面的 0 也將被傳輸)。
衛(wèi)星方位角(000~359 度,前面的 0 也將被傳輸)
信噪比(00~99dB,沒有跟蹤到衛(wèi)星時(shí)為空)。
注:每條 GSV 語句最多包括四顆衛(wèi)星的信息,其他衛(wèi)星的信息將在下一條$BDGSV 語句中輸出。
舉例如下:
$BDGSV,1,1,02,209,64,354,40,214,05,318,40*69
五,$GNRMC(推薦定位信息,Recommended Minimum Specific GPS/Transit Data)
$GNRMC 語句的基本格式如下:
$GNRMC,(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF)
UTC 時(shí)間,hhmmss(時(shí)分秒)
定位狀態(tài),A=有效定位,V=無效定位
緯度 ddmm.mmmmm(度分)
緯度半球 N(北半球)或 S(南半球)
經(jīng)度 dddmm.mmmmm(度分)
經(jīng)度半球 E(東經(jīng))或 W(西經(jīng))
地面速率(000.0~999.9 節(jié))
地面航向(000.0~359.9 度,以真北方為參考基準(zhǔn))
UTC 日期,ddmmyy(日月年)
磁偏角(000.0~180.0 度,前導(dǎo)位數(shù)不足則補(bǔ) 0)
磁偏角方向,E(東)或 W(西)
模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無效)
舉例如下:
$GNRMC,095554.000,A,2318.1327,N,11319.7252,E,000.0,005.7,081215,,,A*73
六,$GNVTG(地面速度信息,Track Made Good and Ground Speed)
$GNVTG 語句的基本格式如下:
$GNVTG,(1),T,(2),M,(3),N,(4),K,(5)*hh(CR)(LF)
以真北為參考基準(zhǔn)的地面航向(000~359 度,前面的 0 也將被傳輸)
以磁北為參考基準(zhǔn)的地面航向(000~359 度,前面的 0 也將被傳輸)
地面速率(000.0~999.9 節(jié),前面的 0 也將被傳輸
地面速率(0000.0~1851.8 公里/小時(shí),前面的 0 也將被傳輸)
模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無效)
舉例如下:
$GNVTG,005.7,T,,M,000.0,N,000.0,K,A*11
七,$GNGLL(定位地理信息,Geographic Position)
$GNGLL 語句的基本格式如下:
$GNGLL,(1),(2),(3),(4),(5),(6),(7)*hh(CR)(LF)
緯度 ddmm.mmmmm(度分)
緯度半球 N(北半球)或 S(南半球)
經(jīng)度 dddmm.mmmmm(度分)
經(jīng)度半球 E(東經(jīng))或 W(西經(jīng))
UTC 時(shí)間:hhmmss(時(shí)分秒)
定位狀態(tài),A=有效定位,V=無效定位
模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無效)
舉例如下:
$GNGLL,2318.1330,N,11319.7250,E,095556.000,A,A*4F
八,$GNZDA(當(dāng)前時(shí)間信息)
$GNZDA 語句的基本格式如下:
$GNZDA,(1),(2),(3),(4), (5), (6)*hh(CR)(LF)
UTC 時(shí)間:hhmmss(時(shí)分秒)
日
月
年
本地區(qū)域小時(shí)(NEO-6M 未用到,為 00)
本地區(qū)域分鐘(NEO-6M 未用到,為 00)
舉例如下:
$GNZDA,095555.000,08,12,2015,00,00*4C
NMEA-0183 協(xié)議命令幀部分就介紹到這里,接下來我們看看NMEA-0183 協(xié)議的校驗(yàn),
通過前面的介紹,我們知道每一幀最后都有一個(gè) hh 的校驗(yàn)和,該校驗(yàn)和是通過計(jì)算$與*之間所有字符 ASCII 碼的異或運(yùn)算得到,將得到的結(jié)果以 ASCII 字符表示就是該校驗(yàn)(hh)。例如語句:$GNZDA,095555.000,08,12,2015,00,00*4C,校驗(yàn)和(紅色部分參與計(jì)算)計(jì)算方法為:
0X47 xor 0X4E xor 0X5A xor 0X44 xor 0X41 xor 0X2C xor 0X30 xor 0X39 xor 0X35 xor 0X35 xor 0X35 xor 0X35 xor 0X2E xor 0X30 xor 0X30 xor 0X30 xor 0X2C xor 0X30 xor 0X38 xor 0X2C xor 0X31 xor 0X32 xor 0X2C xor 0X32 xor 0X30 xor 0X31 xor 0X35 xor 0X2C xor 0X30 xor 0X30 xor 0X2C xor 0X30 xor 0X30
得到的結(jié)果就是 0X4C,用 ASCII 表示就是 4C。
NMEA-0183 協(xié)議我們就介紹到這里,了解了該協(xié)議,我們就可以編寫單片機(jī)代碼,解析 NMEA-0183 數(shù)據(jù),從而得到 GPS/北斗定位的各種信息了。
————————————————
版權(quán)聲明:本文為CSDN博主「wonull」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012241570/article/details/90769388
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。