LoRa有兩種數據包格式:顯示和隱式
其中顯示數據包的報頭較短,主要包含字節數、編碼率及是否使用CRC等信息。
LoRa數據包包含:
-
Preamble(前導碼)
-
Header(可選類型的報頭)
-
Payload(數據有效負載)
如下圖:
1、Preamble
前導碼用于保持接收機與輸入的數據流同步。。作用是提醒接收芯片,即將發送的是有效信號,注意接收,以免丟失有用信號,當前導碼發送完畢后,會立即發送有效數據。。
默認Preamble數據size為12個符號長度,長度可以根據實際應用擴展(內部變量)。。例如:在接收密集型應用中,為了縮短接收機占空比,可以縮短前導碼長度。。實際發送前導碼長度范圍為6+4 ~ 65535 +4個符號。。。
LoRa的接收機會定期檢測前導碼。。因此接收和發射端前導碼長度需一致,如果未知,應將接收機的前導碼長度設置為最大值。
2、Header
可以通過操作模式,選擇顯示/隱式兩種Header類型:在RegModemConfig1寄存器上,通過設定ImplicitHeaderModeOn選擇。
2.1 顯式報頭模式
LoRa默認都為顯式Header模式,在這種模式下,Header會包含Payload的相關信息,包括:
-
Payload長度(byte)
-
前向糾錯編碼率
-
是否使用CRC(16位)
Header按照最大糾錯碼(4/8)發送,另外Header還包含自己的CRC,接收機可以先Check該項以丟棄無效Header數據包。。
2.2 隱式報頭模式
在特定情況下,如果Payload長度、編碼率以及CRC為固定值或已知,則可以通過隱式Header模式來縮短發送時間。。該情況下 ,需要手動設置無線鏈路兩端的Payload長度、錯誤編碼率以及CRC。。。
注意:如果擴頻因子SF設為6,則只能使用隱式報頭模式
3、Payload
數據包有效負載Payload是一個長度不固定的字段,實際長度和編碼率CR則可以由顯式Header模式下的報頭制定或者由隱式模式下在寄存器的設置來決定。。另外,還可以選擇在Payload中包含CRC。。。Payload是在FIFO中讀寫。。。
4、數據傳輸時間的計算
由上一節http://murata.eetrend.com/article/2017-10/1000907.html可以得出Rs,則單個LoRa數據包的符號周期Ts:
Ts=1/Rs
其中,LoRa數據包總傳輸時間,等于前導碼傳輸時間Tpre+數據包傳輸時間Tpay。前導碼傳輸時間即為:
Tpre = (Npre+4.25)Tpay
其中,Npre表示已設定的前導碼長度,(可以讀取RegPreambleMsb和RegPreambleLsb寄存器得到),Payload有效負載的時間Tpay取決于所使用的報頭模式。。。
計算Payload符號數的公式如下:
因此,總傳輸時間實際為:
Tpacket = Tpre + payloadSymNb*Tpay
-
LoRa
+關注
關注
349文章
1689瀏覽量
231962
原文標題:LoRa數據包結構分析及數據傳輸時間的計算
文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論