NMEA-0183 協(xié)議簡介
NMEA - 0183 是美國國家海洋電子協(xié)會(National Marine Electronics Association)為海用電子設備制定的標準格式。目前業(yè)已成了 GPS/北斗導航設備統(tǒng)一的 RTCM(Radio Technical Commission for Maritime services)標準協(xié)議。
NMEA-0183 協(xié)議采用 ASCII 碼來傳遞 GPS 定位信息,我們稱之為幀。
幀格式形如:$aaccc,ddd,ddd,…,ddd*hh(CR)(LF)
1、“$”:幀命令起始位
2、aaccc:地址域,前兩位為識別符(aa),后三位為語句名(ccc)
3、ddd…ddd:數(shù)據(jù)
4、“*”:校驗和前綴(也可以作為語句數(shù)據(jù)結束的標志)
5、hh:校驗和(check sum),$與*之間所有字符 ASCII 碼的校驗和(各字節(jié)做異或運算,得到校驗和后,再轉換 16 進制格式的 ASCII 字符)
6、(CR)(LF):幀結束,回車和換行符
NMEA-0183 常用命令如表所示:
上表為 NMEA-0183 常用命令表
注 1: 即協(xié)調世界時,相當于本初子午線(0 度經(jīng)線)上的時間,北京時間比 UTC 早 8 個小時。
接下來我們分別介紹這些命令。
一,$GNGGA(GPS 定位信息,Global Positioning System Fix Data)
$GNGGA 語句的基本格式如下(其中 M 指單位 M,hh 指校驗和,CR 和 LF 代表回車換行,下同):
$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
UTC 時間,格式為 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 米)
大地水準面高度(-9999.9 到 9999.9 米)
差分時間(從最近一次接收到差分信號開始的秒數(shù),非差分定位,此項為空)
差分參考****標號(0000 到 1023,首位 0 也將傳送,非差分定位,此項為空)
舉例如下:
$GNGGA,095528.000,2318.1133,N,11319.7210,E,1,06,3.7,55.1,M,-5.4,M,,0000*69
二,$GNGSA(當前衛(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: 精度因子值越小,則準確度越高。
三,$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)星時為空)。
注:每條 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)星時為空)。
注:每條 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 時間,hhmmss(時分秒)
定位狀態(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 度,以真北方為參考基準)
UTC 日期,ddmmyy(日月年)
磁偏角(000.0~180.0 度,前導位數(shù)不足則補 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)
以真北為參考基準的地面航向(000~359 度,前面的 0 也將被傳輸)
以磁北為參考基準的地面航向(000~359 度,前面的 0 也將被傳輸)
地面速率(000.0~999.9 節(jié),前面的 0 也將被傳輸
地面速率(0000.0~1851.8 公里/小時,前面的 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 時間:hhmmss(時分秒)
定位狀態(tài),A=有效定位,V=無效定位
模式指示(A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無效)
舉例如下:
$GNGLL,2318.1330,N,11319.7250,E,095556.000,A,A*4F
八,$GNZDA(當前時間信息)
$GNZDA 語句的基本格式如下:
$GNZDA,(1),(2),(3),(4), (5), (6)*hh(CR)(LF)
UTC 時間:hhmmss(時分秒)
日
月
年
本地區(qū)域小時(NEO-6M 未用到,為 00)
本地區(qū)域分鐘(NEO-6M 未用到,為 00)
舉例如下:
$GNZDA,095555.000,08,12,2015,00,00*4C
NMEA-0183 協(xié)議命令幀部分就介紹到這里,接下來我們看看NMEA-0183 協(xié)議的校驗,
通過前面的介紹,我們知道每一幀最后都有一個 hh 的校驗和,該校驗和是通過計算$與*之間所有字符 ASCII 碼的異或運算得到,將得到的結果以 ASCII 字符表示就是該校驗(hh)。例如語句:$GNZDA,095555.000,08,12,2015,00,00*4C,校驗和(紅色部分參與計算)計算方法為:
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
得到的結果就是 0X4C,用 ASCII 表示就是 4C。
NMEA-0183 協(xié)議我們就介紹到這里,了解了該協(xié)議,我們就可以編寫單片機代碼,解析 NMEA-0183 數(shù)據(jù),從而得到 GPS/北斗定位的各種信息了。
————————————————
版權聲明:本文為CSDN博主「wonull」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012241570/article/details/90769388
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。