上行:終端的數據發送經過一個或多個網關中轉到達網絡服務器。
下行:由網絡服務器發送給終端設備,每條消息對應的終端設備是唯一確定的,而且只通過一個網關中轉。
LoRaWAN ClassesLoRaWAN Classes 一共分為3類:Class A,Class B,Class C
Class A:終端先發送,在發送后開啟一段時間的接收窗口,終端只有在發送后才可以接收。也就是說上行沒有限制,下行的數據只有在上行包發送上來的時候終端才可以接收到。(功耗最低)
Class B:終端和服務器協商好接收的窗口開啟的時間以及何時開啟,然后再約定的時間進行接收,可以一次接收多個包。(功耗次低)
Class C:終端在發送以外的其他時間都開啟接收窗口。更耗能,但通訊延時最低。(功耗最高)
PHY/MAC 層數據鏈路總的數據包結構:
注意preamble、PHDR、PHDR_CRC、CRC都是硬件生成,無需軟件參與,需要軟件參與的就是PHYPayload部分
PHY層數據上行鏈路消息:
下行鏈路消息:
其中上行最后還有CRC校驗,而下行沒有CRC校驗。其中PHDR PHDR_CRC CRC都是射頻芯片用于校準數據的完整新和一致性用的,并非用戶生成的數據。
MAC 層數據
由上圖可以看到,MAC數據是是作為PHYPayload存在的其中MAC 層的包有三個部分組成:
-
MHDR(MAC層幀頭)
-
MACPayload(MAC層負載)
-
MIC(4字節的校驗)
而MACPayload又由三個部分組成:
-
FHDR (MAC層負載頭)
-
FPORT(MAC 層數據的通道號)
-
FRMPayload(MAC層負載,加密)
而FHDR又由由四個部分組成:
-
DevAddr(終端的ID 4字節)
-
FCtrl(幀的控制字 1個字節)
-
FCnt (幀的序號 2個字節)
-
FOpts(幀配置,字節數不定,大部分情況0個字節)
所以,由協議可知,一個上行包或者下行包中的數據內容有哪些,拋開控制命令不說,主要有終端的ID、包的序號、用戶的加密負載。
例如我抓到的一個數據包:
\x40 \x7f \xf8 \x8a \x29 \x80 \x2a \x00 \x02 \x07 \x42 \x87 \x3f \xc7 \xb4 \x22 \x04 \x00 \x84 \x8d \x1b \x06 \x2f \x5b \xbc \x57 \xdb \xf2 \x31 \xde \x49 \x61 \x00 \x86 \x99 \xec \x08 \x61 \xf0 \xb7 \xda \x54 \x0a \xfa \xd1 \x31 \xac \xd0 \x44 \x1b \x4d \xfa \x48 \x77 \x19 \xee \x61 \x14 \xbf \x23 \x52 \xd1 \xe9 \x93 \x79 \x6e \x16 \xd7 \x13 \x2e \x58 \x06 \x54 \xc3 \xd2 \x04 \xba \x52 \xa7 \xc8 \x7a \x0b \x8e
這是一個MAC 層的幀,即完整的PHYPayload部分,注意,默認LoRaWAN都是按小端方式傳輸的。
其中
-
MHDR:\x40
-
MACPayload-FHDR-DevAddr:\x7f \xf8 \x8a \x29
-
MACPayload-FHDR-FCtrl:\x80
-
MACPayload-FHDR-FCnt:\x2a \x00
-
MACPayload-FPORT:\x02
-
MACPayload-FRMPayload(加密):\x07 \x42 \x87 \x3f \xc7 \xb4 \x22 \x04 \x00 \x84 \x8d \x1b \x06 \x2f \x5b \xbc \x57 \xdb \xf2 \x31 \xde \x49 \x61 \x00 \x86 \x99 \xec \x08 \x61 \xf0 \xb7 \xda \x54 \x0a \xfa \xd1 \x31 \xac \xd0 \x44 \x1b \x4d \xfa \x48 \x77 \x19 \xee \x61 \x14 \xbf \x23 \x52 \xd1 \xe9 \x93 \x79 \x6e \x16 \xd7 \x13 \x2e \x58 \x06 \x54 \xc3 \xd2 \x04 \xba \x52 \xa7
-
MIC:\xc8 \x7a \x0b \x8e
-
LoRaWAN協議
+關注
關注
3文章
18瀏覽量
12268
原文標題:LoRaWAN協議(二)--LoRaWAN MAC數據包格式
文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Matlab仿真1090ES數據鏈路
如何在Vxworks操作系統下實現mac層數據通信
武器數據鏈測試系統是什么組成的?
高級數據鏈路控制的操作方式是什么?
TLP的數據鏈路層組成與操作
數據鏈路交換,什么是數據鏈路交換
數據鏈路層常用成紙法有哪些_數據鏈路層的作用

Redis底層數據類型

評論