日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(3)LoraWAN:链路控制、SF BW CR

發(fā)布時(shí)間:2024/9/5 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (3)LoraWAN:链路控制、SF BW CR 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

三、Introduction on LoRaWAN options

本文件描述了一種用于可為移動(dòng)的或固定在一個(gè)固定位置的電池供電的終端設(shè)備而優(yōu)化的LoRaWAN?網(wǎng)絡(luò)協(xié)議。LORA?是一個(gè)由Semtech公司開發(fā)的長距離低功耗低通信速率無線調(diào)制應(yīng)用。設(shè)備實(shí)現(xiàn)多類包括CLASSA在內(nèi)的通信模式。LoRaWAN網(wǎng)絡(luò)通常部署成星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu), 網(wǎng)關(guān)中繼終端及后端網(wǎng)絡(luò)中央服務(wù)器的數(shù)據(jù)。網(wǎng)關(guān)通過標(biāo)準(zhǔn)IP協(xié)議連接至網(wǎng)絡(luò)服務(wù)器,而終端采用單跳網(wǎng)絡(luò)LORA?或FSK與一個(gè)或多個(gè)網(wǎng)關(guān)通信。所有通信一般是雙向的,當(dāng)然上行通信預(yù)計(jì)將是主要的流量。各個(gè)終端設(shè)備和網(wǎng)關(guān)的通信分散在不同的頻率信道和通信速率之中。通信速率將根據(jù)通信范圍和消息的持續(xù)時(shí)間取一個(gè)折中值,以不同的速率通信實(shí)現(xiàn)互不干擾。Lora的通信速率范圍從0.3kbps到50kbps。為了最大限度的提高終端設(shè)備的電池壽命和網(wǎng)絡(luò)容量,LoRa基礎(chǔ)網(wǎng)絡(luò)能管理通信速率和每個(gè)終端設(shè)備的RF輸出,也就是說,具備自適應(yīng)通信速率(ADR)功能。只要遵守以下規(guī)則,終端設(shè)備可能用任何可用的信道、任何可用的通信速率通信:

  • [x] 1)終端的每次通信以偽隨機(jī)的方式改變通信信道。產(chǎn)生的頻率多樣性使系統(tǒng)在干擾上更具魯棒性。
  • [x] 2)終端遵守該子帶規(guī)定的最大發(fā)送占空比和地方法規(guī)。
  • [x] 3)終端遵守該子帶規(guī)定的最大發(fā)射持續(xù)時(shí)間(或滯留時(shí)間)和地方法規(guī)。

所有LoRaWAN設(shè)備至少實(shí)現(xiàn)了CLASSA的功能。此外,他們還可能實(shí)現(xiàn)了本文檔描述的CLASS B,CLASS C或被其他人自定義的功能。
所有多字節(jié)采用的都是小端模式(little endian)和EUI是64位整數(shù),發(fā)送為小端模式。

LoRaWAN CLASSA CLASSB CLASSC 區(qū)分

雙向終端設(shè)備(CLASSA)

A類的終端設(shè)備允許雙向通信,每一個(gè)終端設(shè)備的上行傳輸,跟隨兩個(gè)短的下行接收窗口。發(fā)送時(shí)隙的調(diào)度基于終端設(shè)備自己的通信需求,該時(shí)隙是基于隨機(jī)時(shí)間基礎(chǔ)(ALOHA類型的協(xié)議的)上的很小變動(dòng)。CLASSA適用于超低功耗終端系統(tǒng)的應(yīng)用,該類應(yīng)用只要求終端發(fā)送上行傳輸之后,服務(wù)端再下行傳輸至終端。從服務(wù)端在任何其他時(shí)間下行鏈路通信將必須等待直到下一個(gè)預(yù)定的上行鏈路通信(即每次只能先上行數(shù)據(jù)才能收到下行數(shù)據(jù))。

帶接收時(shí)隙的雙向終端設(shè)備(CLASSB)

B類的終端設(shè)備允許更多的接收時(shí)隙。除A類隨機(jī)接收窗口,B類設(shè)備中在計(jì)劃的時(shí)間打開額外的接收窗口。為了使終端設(shè)備打開它的接收窗口,在計(jì)劃的時(shí)間中接收到來自網(wǎng)關(guān)的同步信標(biāo)(Beacon幀)。這允許服務(wù)端知道什么時(shí)候終端正在偵聽信號。

最大接收時(shí)隙的雙向終端設(shè)備(CLASSC)

C類有近連續(xù)打開接收窗口的終端設(shè)備,只有發(fā)射時(shí)才關(guān)閉接收。CLASSC終端設(shè)備將比CLASS A、CLASS B功耗更大,但CLASS C終端設(shè)備的通信延遲最低。

LoRa調(diào)制解調(diào)器的鏈路控制

通過配置寄存器RegOpMode,就能將FSK調(diào)制解調(diào)器切換成LoRaTM調(diào)制解調(diào)器,切換操作可以在飛行模式(睡眠模式)下進(jìn)行;LoRa調(diào)制解調(diào)器采用專有的調(diào)制和解調(diào)程序,將擴(kuò)頻調(diào)制與循環(huán)糾錯(cuò)編碼技術(shù)結(jié)合起來,從而提高了鏈路預(yù)算和抗干擾性。LoRa調(diào)制解調(diào)器的配置圖:

LoRa調(diào)制解調(diào)器擁有獨(dú)立的雙端口數(shù)據(jù)緩沖FIFO,而且在所有操作模式下均可通過SPI接口訪問該通道。選定LoRa調(diào)制模式之后,配置寄存器中SX1276/77/78的映射關(guān)系發(fā)生變化。

RegOpMode寄存器

namebitsdescription
LongRangeMode7bit0:FSK/OOK模式 1:LoRa模式 該位僅可在睡眠模式下修改。
AccessSharedReg6bit設(shè)置該位,允許在LoRa 模式下訪問FSK 寄存器頁面
reserved5~4bits預(yù)留
LowFrequencyModeOn3bit訪問低頻模式寄存器(從地址0x61開始)0:高頻 1:低頻
Mode2~0bits收發(fā)器模式(睡眠、待機(jī)等)

RegOpMode.LongRangeMode進(jìn)入Lora模式

#define OPMODE_LORA 0x80 //LoRa模式,該位僅可在睡眠模式下修改。 // 進(jìn)入Lora模式的操作 static void opmodeLora() {u1_t u = OPMODE_LORA; #ifdef CFG_sx1276_radiou |= 0x8; // TBD: sx1276 high freq #endifwriteReg(RegOpMode, u); }

RegOpMode.AccessSharedReg

一般情況下僅當(dāng)器件設(shè)置為 LoRa 模式時(shí),才能訪問到 LoRa 寄存器(同理, FSK 寄存器僅在 FSK 模式下才能訪問);但是如果設(shè)置了AccessSharedReg位,則允許在LoRa模式下訪問位于地址空間(0x0D:0x3F)的 FSK 寄存器頁面 。
該位在器件處于睡眠模式時(shí)工作。為確保之后能夠正常訪問 LoRa 寄存器,完成相關(guān)設(shè)置后清零該位。

RegOpMode.AccessSharedReg=0:訪問LoRa寄存器頁面0x0D:0x3F
RegOpMode.AccessSharedReg=1:(在LoRa模式下)訪問FSK寄存器頁面0x0D:0x3F

RegOpMode.mode(2~0bits) 進(jìn)入操作模式

#define OPMODE_SLEEP 0x00 //000:睡眠模式 #define OPMODE_STANDBY 0x01 //001:待機(jī)模式 #define OPMODE_FSTX 0x02 //010:頻率合成發(fā)送(FSTx) #define OPMODE_TX 0x03 //011:發(fā)送(Tx) #define OPMODE_FSRX 0x04 //100:頻率合成接收(FSRx) #define OPMODE_RX 0x05 //101:持續(xù)接收(RXCONTINUOUS) #define OPMODE_RX_SINGLE 0x06 //110:單次接收(RXSINGLE) #define OPMODE_CAD 0x07 //111:信道活動(dòng)檢測(CAD) // 操作進(jìn)入相應(yīng)模式 static void opmode (u1_t mode) {writeReg(RegOpMode, (readReg(RegOpMode) & ~OPMODE_MASK) | mode); } opmode(OPMODE_SLEEP); opmode(OPMODE_STANDBY); // ...

擴(kuò)頻因子(SF值)、調(diào)制帶寬(BW)、糾錯(cuò)編碼率(CR)

針對特定的應(yīng)用,可以通過調(diào)整 擴(kuò)頻因子(SF值)、調(diào)制帶寬(BW)及糾錯(cuò)編碼率(CR) 這三個(gè)關(guān)鍵設(shè)計(jì)參數(shù)對LoRa調(diào)制解技術(shù)進(jìn)行優(yōu)化。對上述某個(gè)或多個(gè)參數(shù)進(jìn)行調(diào)整之后,可實(shí)現(xiàn)在鏈路預(yù)算、 抗干擾性、頻譜占用度及標(biāo)稱數(shù)據(jù)速率之間達(dá)到平衡。

擴(kuò)頻因子

LoRaTM擴(kuò)頻調(diào)制技術(shù)采用多個(gè)信息碼片來代表有效負(fù)載信息的每個(gè)位。擴(kuò)頻信息的發(fā)送速度稱為符號速率(Rs),而碼片速率與標(biāo)稱符號速率之間的比值即為擴(kuò)頻因子,其表示每個(gè)信息位發(fā)送的符號數(shù)量。

擴(kuò)頻因子取值

RegModulationCfg2.SF擴(kuò)頻因子(碼片/符號)LoRa解調(diào)器 信噪比(SNR)
664-5 dB
7128-7.5dB
8256-10 dB
9512-12.5 dB
101024-15 dB
112048-17.5 dB
124096-20 dB

因?yàn)椴煌瑪U(kuò)頻因子(SpreadingFactor)之間為正交關(guān)系,因此必須提前獲知鏈路發(fā)
送端和接收端的擴(kuò)頻因子。另外,還必須獲知接收機(jī)輸入端的信噪比。在負(fù)信噪比條件下信號也能正常接收, 這改善了LoRa接收機(jī)的靈敏度、鏈路預(yù)算及覆蓋范圍。
擴(kuò)頻因子寄存器取值在RegModemConfig2寄存器中。

RegModemConfig2寄存器

  • [x] RegModemConfig2.SpreadingFactor 取值(SF值):
#define SX1272_MC2_SF7 0x70 //RegModemConfig2.SpreadingFactor=7 128 碼片/符號 #define SX1272_MC2_SF8 0x80 //RegModemConfig2.SpreadingFactor=8 256 碼片/符號 #define SX1272_MC2_SF9 0x90 //RegModemConfig2.SpreadingFactor=9 512 碼片/符號 #define SX1272_MC2_SF10 0xA0 //RegModemConfig2.SpreadingFactor=10 1024 碼片/符號 #define SX1272_MC2_SF11 0xB0 //RegModemConfig2.SpreadingFactor=11 2048 碼片/符號 #define SX1272_MC2_SF12 0xC0 //RegModemConfig2.SpreadingFactor=12 4096 碼片/符號/* sf_t sf = getSf(LMIC.rps);enum _sf_t { FSK=0, SF7, SF8, SF9, SF10, SF11, SF12, SFrfu };SX1272_MC2_SF7 + [0~5]<<4 即可得到SF7、SF8、SF9、SF10、SF11、SF12 */ mc2 = (SX1272_MC2_SF7 + ((sf-1)<<4)); if (getNocrc(LMIC.rps) == 0) {mc2 |= SX1276_MC2_RX_PAYLOAD_CRCON; }writeReg(LORARegModemConfig2, mc2);
  • [x] RegModemConfig2.RxPayloadCrcOn取值:
  • 上行數(shù)據(jù)格式

    前導(dǎo)碼可選報(bào)頭數(shù)據(jù)有效負(fù)載
    0x34(8bytes)報(bào)頭+報(bào)頭_CRCPayLoad+PayLoad_CRC
  • 下行數(shù)據(jù)格式

    前導(dǎo)碼可選報(bào)頭數(shù)據(jù)有效負(fù)載
    0x34(8bytes)報(bào)頭+報(bào)頭_CRCPayLoad

    上行、下行報(bào)頭CRC及數(shù)據(jù)有效負(fù)載CRC都是芯片自動(dòng)填充的,并且有時(shí)候某一項(xiàng)PayLoad_CRC不是必選項(xiàng)。

//RegModemConfig2.RxPayloadCrcOn = 0: CRC 關(guān)閉 //RegModemConfig2.RxPayloadCrcOn = 1: CRC 開啟 #define SX1276_MC2_RX_PAYLOAD_CRCON 0x04if (getNocrc(LMIC.rps) == 0) {mc2 |= SX1276_MC2_RX_PAYLOAD_CRCON; }writeReg(LORARegModemConfig2, mc2);

擴(kuò)頻因子6(SF6)設(shè)置(特定)


當(dāng)擴(kuò)頻因子SF為6時(shí), LoRa調(diào)制解調(diào)器的數(shù)據(jù)傳輸速率最快,因此這一擴(kuò)頻因子僅在特定情況下使用。使用時(shí),需在SX1276/77/78寄存器上進(jìn)行以下幾項(xiàng)設(shè)置:

  • [x] 將RegModemConfig2.SpreadingFactor設(shè)置為6;
  • [x] 將報(bào)頭設(shè)置為隱式模式(即RegModemConfig1.ImplicitHeaderModeOn設(shè)置為1);傳輸對時(shí)間有苛求的數(shù)據(jù)時(shí)使用隱式報(bào)頭。
  • [x] 在寄存器地址(0x31)的2至0位中寫入0b101一值;0x31在Lora模式下為預(yù)留寄存器,除本情況外不使用。
  • [x] 在寄存器地址(0x37)中寫入0x0C一值。0x37在Lora模式下為預(yù)留寄存器,除本情況外不使用。

編碼率

LoRaTM調(diào)制解調(diào)器采用循環(huán)糾錯(cuò)編碼進(jìn)行前向錯(cuò)誤檢測與糾錯(cuò),以提高鏈路的魯棒性。使用糾錯(cuò)編碼之后,會(huì)產(chǎn)生額外的傳輸開銷。每次傳輸產(chǎn)生的循環(huán)編碼開銷見下表。

編碼率(RegTxCfg1)循環(huán)編碼率開銷比率
14/51.25
24/61.5
34/71.75
44/82

前向糾錯(cuò)能有效提高鏈路的可靠性。由此,編碼率(及抗干擾性能)可以隨著信道條件的變化而變化——可以選擇在報(bào)頭中加入編碼率以便接收端能夠解析。

RegModemConfig1.CodingRate 糾錯(cuò)編碼率

隱式報(bào)頭模式下應(yīng)在接收機(jī)上設(shè)置該位,以確定預(yù)期編碼率。

RegModemConfig1.CodingRate = 001 : 4/5
RegModemConfig1.CodingRate = 010 : 4/6
RegModemConfig1.CodingRate = 011 : 4/7
RegModemConfig1.CodingRate = 100 : 4/8
所有其他值:預(yù)留

#define SX1276_MC1_CR_4_5 0x02 #define SX1276_MC1_CR_4_6 0x04 #define SX1276_MC1_CR_4_7 0x06 #define SX1276_MC1_CR_4_8 0x08 // ... switch( getCr(LMIC.rps) ) { case CR_4_5: mc1 |= SX1276_MC1_CR_4_5; break; case CR_4_6: mc1 |= SX1276_MC1_CR_4_6; break; case CR_4_7: mc1 |= SX1276_MC1_CR_4_7; break; case CR_4_8: mc1 |= SX1276_MC1_CR_4_8; break; default:ASSERT(0); } // ... // set ModemConfig1 writeReg(LORARegModemConfig1, mc1); // ...

信號帶寬

增加信號帶寬,可以提高有效數(shù)據(jù)速率以縮短傳輸時(shí)間,但這是以犧牲部分一接收靈敏度為代價(jià)。當(dāng)然,多數(shù)國家對允許占用帶寬都設(shè)有一定的約束。FSK調(diào)制解調(diào)器描述的帶寬是指單邊帶帶寬,而LoRaTM調(diào)制解調(diào)器中描述的帶寬則是指雙邊帶帶寬(或全信道帶寬)。LoRaTM調(diào)制解調(diào)器規(guī)格表中列出了在多數(shù)規(guī)范約束的帶寬范圍。

帶寬(kHz)擴(kuò)頻因子編碼率標(biāo)稱比特率(bps)
7.8124/518
10.4124/524
15.6124/537
20.8124/549
31.2124/573
41.7124/598
62.5124/5146
125124/5293
250124/5586
500124/51172

注意: 較低頻段(169 MHz)不支持250kHz和500kHz的帶寬。

RegModemConfig1.Bw 信號帶寬

#define SX1276_MC1_BW_125 0x70 #define SX1276_MC1_BW_250 0x80 #define SX1276_MC1_BW_500 0x90// ... switch (getBw(LMIC.rps)) { case BW125: mc1 |= SX1276_MC1_BW_125; break; case BW250: mc1 |= SX1276_MC1_BW_250; break; case BW500: mc1 |= SX1276_MC1_BW_500; break; default:ASSERT(0); } // ... // set ModemConfig1 writeReg(LORARegModemConfig1, mc1); // ...

比特速率、碼片速率和符號速率等區(qū)分

經(jīng)過信源編碼的含有信息的數(shù)據(jù)稱為“比特”;
經(jīng)過信道編碼和交織后的數(shù)據(jù)稱為“符號”;
經(jīng)過最終擴(kuò)頻得到的數(shù)據(jù)稱為“碼片”。

符號表示約定

  • BW表示帶寬(BandWidth)
  • SF表示擴(kuò)頻因子(SpreadingFactor)
  • Rs符號速率(Symbol Rate)
  • cps碼片速率(chip per-second)
  • Rb比特率(Bit Rate)

符號速率(Symbol Rate)

  • SymbolRateBitRate的對應(yīng)關(guān)系要依據(jù)調(diào)制方式。如是BPSK調(diào)制,那么1bit可以代表0,1兩種信息,此時(shí)BitRate=SymbolRate。如是QPSK調(diào)制,4個(gè)信息就需要2bit來表示,此時(shí)BitRate=2 SymbolRate
  • 符號速率*擴(kuò)頻因子=碼片速率。

碼片速率(chip per-second)

  • 系統(tǒng)通過擴(kuò)頻把比特轉(zhuǎn)換成碼片。碼片相當(dāng)于模擬調(diào)制中的載波作用,是數(shù)字信號的載體。
  • 一個(gè)數(shù)據(jù)信號(如邏輯1或0)通常要用多個(gè)編碼信號來進(jìn)行編碼,那么其中的一個(gè)編碼信號就稱為一個(gè)碼片。
  • 碼片數(shù)率是指擴(kuò)頻調(diào)制之后的數(shù)據(jù)數(shù)率,用cps表示(chip per-second) 。

LoRa發(fā)送參數(shù)關(guān)系(擴(kuò)頻因子、碼片速率、符號速率)

  • [x] LoRa符號速率
Rs = \frac{BW}{2^{SF}}

發(fā)送信號為恒包絡(luò)信號。每赫茲每秒發(fā)送一個(gè)碼片。

  • [x] 擴(kuò)頻因子
    碼片速率=符號速率×擴(kuò)頻因子
SF = \frac{cps}{{Rs}}

轉(zhuǎn)載于:https://www.cnblogs.com/younining/p/9514464.html

總結(jié)

以上是生活随笔為你收集整理的(3)LoraWAN:链路控制、SF BW CR的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。