实战经验 | 如何在用户应用中开启 LoRa CAD

2024-01-05  

01

LoRa CAD 应用场景举例


在 STM32WL LoRa 某些应用中,尤其是电池供电的设备上,需要按需发送数据,如下发指令,让 STM32WL LoRa 发送数据,或做相应的操作。为了降低功耗,STM32WL不能一直处于接收状态,这样功耗会很高。我们可以开启 LoRa CAD(信道活动检测)功能,STM32WL 通过开启 CAD 功能,检测前导码的前 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_driver adio_driver.c



MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio.c 中RadioIrqProcess 函数中



STM32Cube_FW_WL_V1.3.0 的驱动中已经支持 CAD 功能 :

MiddlewaresThird_PartySubGHz_Phy adio.h
MiddlewaresThird_PartySubGHz_Phy adio_ex.h
MiddlewaresThird_PartySubGHz_Phy adio_def.h
MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio_driver.h
MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio_driver.c
MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio.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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。