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

描述

 

 

 

关键词:LoRa, CAD, Channel Activity Detection

 

 

目录预览

1、LoRa CAD 应用场景举例

2、STM32WL LoRa CAD 原理和驱动

3、如何在示例工程 SubGHz_Phy_Per 中开启 CAD

4、小结

 

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 前导码。

 

STM32

 

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

 

STM32

 

MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio_driver.c

 

STM32

 

MiddlewaresThird_PartySubGHz_Phystm32_radio_driver adio.c 中RadioIrqProcess 函数中

 

STM32

 

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

 

STM32

 

设置 CAD 检测的频率和 LORA 接收参数

 

STM32

 

STM32

 

根据扩频因子 LORA_SPREADING_FACTOR 设置相应的 CAD 检测参数

 

STM32

 

3.2.在 subghz_phy_app.c 中配置声明

 

包含头文件 radio_driver.h

 

STM32

 

修改测试模式为 RADIO_RX

 

STM32

 

可选,设置串口输出为红色 RED 和绿色 GRN 时的配置

 

STM32

 

定义 CAD 检测结果标志 RadioCadDone_flag

 

STM32

 

定义 CAD 检测计数 cad_max_count,cad_count 和 detect_count

 

STM32

 

声明 CAD 检测完成事件后执行的函数 OnCadDone

 

STM32

 

声明 CAD 状态机处理函数 Cad_Process

 

STM32

 

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

 

在 SubghzApp_Init 函数中,打印 LoRa 配置参数(可选)

 

STM32

 

在 RadioEvents 中注册 CAD 检测到要执行的回调函数 OnCadDone

 

STM32

 

设置 CAD 检测的频率,接收参数,最大包长,CAD 检测的参数

 

STM32

 

开启 CAD

 

STM32

 

注册 CAD 状态机处理函数 Cad_Process

 

STM32

 

3.4.在 subghz_phy_app.c 中配置 CAD 检测完成处理函数和状态机处理函数

 

STM32

 

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

 

 

STM32

完整内容请点击“阅读原文”下载原文档。


原文标题:实战经验 | 如何在用户应用中开启 LoRa CAD

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分