新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 實戰經驗 | 如何在用戶應用中開啟 LoRa CAD

        實戰經驗 | 如何在用戶應用中開啟 LoRa CAD

        作者: 時間:2023-12-28 來源:STM32單片機 收藏

        01 應用場景舉例

        本文引用地址:http://www.104case.com/article/202312/454331.htm

        某些應用中,尤其是電池供電的設備上,需要按需發送數據,如下發指令,讓 發送數據,或做相應的操作。為了降低功耗,不能一直處于接收狀態,這樣功耗會很高。我們可以開啟 LoRa (信道活動檢測)功能,STM32WL 通過開啟 功能,檢測前導碼的前 1/2/4/8/16 個碼元,當檢測到 LoRa(喚醒)信號后再開啟接收,否則系統進入低功耗,這樣會極大的降低系統的整體功耗。

        02 STM32WL LoRa CAD 原理和驅動

        LoRa 信號可以在低于噪聲強度的情況下被正確解調。所以,僅簡單通過 RSSI 確定信道是否被占用是行不通的,需要通過信道活動檢測 CAD 來檢測 LoRa 信號。 

        LoRa 包幀格式,如下圖,前導碼,可選報頭,有效數據負載。信道活動檢測 CAD 模式旨在以盡可能高的功耗效率檢測信道上的 LoRa 前導碼。

        圖片

        STM32WL LoRa CAD 檢測方法:

        STM32WL LoRa 設備設置好頻率和擴頻因子,開啟CAD 模式,(注意:無論是否檢測到 LoRa 信號,都會產生CAD 檢測完成中斷 SUBGHZ_IT_CAD_DONE);當有匹配(相同的頻率和擴頻因子)的 LoRa 信號檢測到時,就會產生 CAD 檢測到中斷 SUBGHZ_IT_CAD_ACTIVITY_DETECTED,SUBGHZ_IT_CAD_DONE 也會產生,并且 SUBGHZ_IT_CAD_DONE和 SUBGHZ_IT_CAD_ACTIVITY_DETECTED 會同時產生。

        所以,可通過在產生SUBGHZ_IT_CAD_DONE 中斷時是否也同時產生了SUBGHZ_IT_CAD_ACTIVITY_DETECTED 中斷來區別是否檢測到了 LoRa 信號,進而調用相應的回調函數,或做相應的處理。

        DriversSTM32WLxx_HAL_DriverSrcstm32wlxx_hal_subghz.c 中HAL_SUBGHZ_IRQHandler

        圖片

        MiddlewaresThird_PartySubGHz_Phystm32_radio_driverradio_driver.c

        圖片

        MiddlewaresThird_PartySubGHz_Phystm32_radio_driverradio.c 中RadioIrqProcess 函數中

        圖片

        STM32Cube_FW_WL_V1.3.0 的驅動中已經支持 CAD 功能 :

        MiddlewaresThird_PartySubGHz_Phyradio.h

        MiddlewaresThird_PartySubGHz_Phyradio_ex.h

        MiddlewaresThird_PartySubGHz_Phyradio_def.h

        MiddlewaresThird_PartySubGHz_Phystm32_radio_driverradio_driver.h

        MiddlewaresThird_PartySubGHz_Phystm32_radio_driverradio_driver.c

        MiddlewaresThird_PartySubGHz_Phystm32_radio_driverradio.c 

        但是如何在用戶應用中加入 CAD 功能呢?下面介紹如何在SubGHz_Phy_Per 中開啟 CAD 功能。

        03 如何在 SubGHz_Phy_Per 中開啟 CAD

        3.1.修改 subghz_phy_app.h 中配置

        選擇 MODEM 類型為 LORA

        圖片

        設置 CAD 檢測的頻率和 LORA 接收參數

        圖片

        圖片

        根據擴頻因子 LORA_SPREADING_FACTOR 設置相應的 CAD 檢測參數

        圖片

        3.2.在 subghz_phy_app.c 中配置聲明

        包含頭文件 radio_driver.h

        圖片

        修改測試模式為 RADIO_RX

        圖片

        可選,設置串口輸出為紅色 RED 和綠色 GRN 時的配置

        圖片

        定義 CAD 檢測結果標志 RadioCadDone_flag

        圖片

        定義 CAD 檢測計數 cad_max_count,cad_count 和 detect_count

        圖片

        聲明 CAD 檢測完成事件后執行的函數 OnCadDone

        圖片

        聲明 CAD 狀態機處理函數 Cad_Process

        圖片

        3.3.在subghz_phy_app.c 中配置 SubghzApp_Init 函數

        在 SubghzApp_Init 函數中,打印 LoRa 配置參數(可選)

        圖片

        在 RadioEvents 中注冊 CAD 檢測到要執行的回調函數 OnCadDone

        圖片

        設置 CAD 檢測的頻率,接收參數,最大包長,CAD 檢測的參數

        圖片

        開啟 CAD

        圖片

        注冊 CAD 狀態機處理函數 Cad_Process

        圖片

        3.4.在 subghz_phy_app.c 中配置 CAD 檢測完成處理函數和狀態機處理函數

        圖片

        04 小結

        本 LAT 舉例介紹了 LoRa CAD 應用場景,STM32WL LoRa CAD 的原理和相關的驅動,著重介紹了如何在(SubGHz_Phy_Per)中添加 LoRa CAD 功能。 

        在此基礎之上也可以很容易在 SubGHz_Phy_PingPong 和 SubGHz_Phy_AT_Slave示例工程中加入 LoRa CAD 功能。 

        當然也可以在 LoRaWAN_End_Node 示例工程中加入 LoRa CAD,但是還需要調整如下驅動,后續再補充介紹。 

        MiddlewaresThird_PartyLoRaWANMacLoRaMacInterfaces.h

        MiddlewaresThird_PartyLoRaWANMacLoRaMac.c

        MiddlewaresThird_PartyLoRaWANLmHandlerLmHandler.h

        MiddlewaresThird_PartyLoRaWANLmHandlerLmHandler.c



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 车致| 祁东县| 五河县| 阿坝| 兖州市| 博野县| 新野县| 佳木斯市| 容城县| 河南省| 台北县| 缙云县| 高青县| 张家界市| 深州市| 卢湾区| 确山县| 益阳市| 鄄城县| 县级市| 柏乡县| 蚌埠市| 家居| 探索| 乾安县| 河北省| 景宁| 平武县| 武城县| 曲阜市| 大港区| 旺苍县| 榆社县| 五指山市| 公主岭市| 西畴县| 土默特左旗| 肥东县| 庆阳市| 灌云县| 六枝特区|