新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 实战经验 | 如何在用户应用中开启 LoRa CAD

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

作者:时间:2023-12-28来源:STM32单片机收藏

01 应用场景举例

本文引用地址:http://www.eepw.com.cn/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



评论


相关推荐

技术专区

关闭