
關(guān)鍵詞:LoRa, CAD, Channel Activity Detection
目錄預(yù)覽
1、LoRa CAD 應(yīng)用場(chǎng)景舉例
2、STM32WL LoRa CAD 原理和驅(qū)動(dòng)
3、如何在示例工程 SubGHz_Phy_Per 中開(kāi)啟 CAD
4、小結(jié)
01
LoRa CAD 應(yīng)用場(chǎng)景舉例
在 STM32WL LoRa 某些應(yīng)用中,尤其是電池供電的設(shè)備上,需要按需發(fā)送數(shù)據(jù),如下發(fā)指令,讓 STM32WL LoRa 發(fā)送數(shù)據(jù),或做相應(yīng)的操作。為了降低功耗,STM32WL不能一直處于接收狀態(tài),這樣功耗會(huì)很高。我們可以開(kāi)啟 LoRa CAD(信道活動(dòng)檢測(cè))功能,STM32WL 通過(guò)開(kāi)啟 CAD 功能,檢測(cè)前導(dǎo)碼的前 1/2/4/8/16 個(gè)碼元,當(dāng)檢測(cè)到 LoRa(喚醒)信號(hào)后再開(kāi)啟接收,否則系統(tǒng)進(jìn)入低功耗,這樣會(huì)極大的降低系統(tǒng)的整體功耗。
02
STM32WL LoRa CAD 原理和驅(qū)動(dòng)
LoRa 信號(hào)可以在低于噪聲強(qiáng)度的情況下被正確解調(diào)。所以,僅簡(jiǎn)單通過(guò) RSSI 確定信道是否被占用是行不通的,需要通過(guò)信道活動(dòng)檢測(cè) CAD 來(lái)檢測(cè) LoRa 信號(hào)。?
LoRa 包幀格式,如下圖,前導(dǎo)碼,可選報(bào)頭,有效數(shù)據(jù)負(fù)載。信道活動(dòng)檢測(cè) CAD 模式旨在以盡可能高的功耗效率檢測(cè)信道上的 LoRa 前導(dǎo)碼。

STM32WL LoRa CAD 檢測(cè)方法:
STM32WL LoRa 設(shè)備設(shè)置好頻率和擴(kuò)頻因子,開(kāi)啟CAD 模式,(注意:無(wú)論是否檢測(cè)到 LoRa 信號(hào),都會(huì)產(chǎn)生CAD 檢測(cè)完成中斷 SUBGHZ_IT_CAD_DONE);當(dāng)有匹配(相同的頻率和擴(kuò)頻因子)的 LoRa 信號(hào)檢測(cè)到時(shí),就會(huì)產(chǎn)生 CAD 檢測(cè)到中斷 SUBGHZ_IT_CAD_ACTIVITY_DETECTED,SUBGHZ_IT_CAD_DONE 也會(huì)產(chǎn)生,并且 SUBGHZ_IT_CAD_DONE和 SUBGHZ_IT_CAD_ACTIVITY_DETECTED 會(huì)同時(shí)產(chǎn)生。
所以,可通過(guò)在產(chǎn)生SUBGHZ_IT_CAD_DONE 中斷時(shí)是否也同時(shí)產(chǎn)生了SUBGHZ_IT_CAD_ACTIVITY_DETECTED 中斷來(lái)區(qū)別是否檢測(cè)到了 LoRa 信號(hào),進(jìn)而調(diào)用相應(yīng)的回調(diào)函數(shù),或做相應(yīng)的處理。
Drivers\STM32WLxx_HAL_Driver\Src\stm32wlxx_hal_subghz.c 中HAL_SUBGHZ_IRQHandler

Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio_driver.c

Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio.c 中RadioIrqProcess 函數(shù)中

STM32Cube_FW_WL_V1.3.0 的驅(qū)動(dòng)中已經(jīng)支持 CAD 功能 :
Middlewares\Third_Party\SubGHz_Phy\radio.h
Middlewares\Third_Party\SubGHz_Phy\radio_ex.h
Middlewares\Third_Party\SubGHz_Phy\radio_def.h
Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio_driver.h
Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio_driver.c
Middlewares\Third_Party\SubGHz_Phy\stm32_radio_driver\radio.c?
但是如何在用戶(hù)應(yīng)用中加入 CAD 功能呢?下面介紹如何在示例工程SubGHz_Phy_Per 中開(kāi)啟 CAD 功能。
03
如何在示例工程 SubGHz_Phy_Per 中開(kāi)啟 CAD
3.1.修改 subghz_phy_app.h 中配置
選擇 MODEM 類(lèi)型為 LORA

設(shè)置 CAD 檢測(cè)的頻率和 LORA 接收參數(shù)


根據(jù)擴(kuò)頻因子 LORA_SPREADING_FACTOR 設(shè)置相應(yīng)的 CAD 檢測(cè)參數(shù)

3.2.在 subghz_phy_app.c 中配置聲明
包含頭文件 radio_driver.h

修改測(cè)試模式為 RADIO_RX

可選,設(shè)置串口輸出為紅色 RED 和綠色 GRN 時(shí)的配置

定義 CAD 檢測(cè)結(jié)果標(biāo)志 RadioCadDone_flag

定義 CAD 檢測(cè)計(jì)數(shù) cad_max_count,cad_count 和 detect_count

聲明 CAD 檢測(cè)完成事件后執(zhí)行的函數(shù) OnCadDone

聲明 CAD 狀態(tài)機(jī)處理函數(shù) Cad_Process

3.3.在subghz_phy_app.c 中配置 SubghzApp_Init 函數(shù)
在 SubghzApp_Init 函數(shù)中,打印 LoRa 配置參數(shù)(可選)

在 RadioEvents 中注冊(cè) CAD 檢測(cè)到要執(zhí)行的回調(diào)函數(shù) OnCadDone

設(shè)置 CAD 檢測(cè)的頻率,接收參數(shù),最大包長(zhǎng),CAD 檢測(cè)的參數(shù)

開(kāi)啟 CAD

注冊(cè) CAD 狀態(tài)機(jī)處理函數(shù) Cad_Process

3.4.在 subghz_phy_app.c 中配置 CAD 檢測(cè)完成處理函數(shù)和狀態(tài)機(jī)處理函數(shù)

04
小結(jié)
本 LAT 舉例介紹了 LoRa CAD 應(yīng)用場(chǎng)景,STM32WL LoRa CAD 的原理和相關(guān)的驅(qū)動(dòng),著重介紹了如何在示例工程(SubGHz_Phy_Per)中添加 LoRa CAD 功能。?
在此基礎(chǔ)之上也可以很容易在 SubGHz_Phy_PingPong 和 SubGHz_Phy_AT_Slave示例工程中加入 LoRa CAD 功能。?
當(dāng)然也可以在 LoRaWAN_End_Node 示例工程中加入 LoRa CAD,但是還需要調(diào)整如下驅(qū)動(dòng),后續(xù)再補(bǔ)充介紹。?
Middlewares\Third_Party\LoRaWAN\Mac\LoRaMacInterfaces.h
Middlewares\Third_Party\LoRaWAN\Mac\LoRaMac.c
Middlewares\Third_Party\LoRaWAN\LmHandler\LmHandler.h
Middlewares\Third_Party\LoRaWAN\LmHandler\LmHandler.c
