【LoRa】CAD的工作原理以及使用

2024-09-01 06:44
文章标签 使用 工作 lora 原理 cad

本文主要是介绍【LoRa】CAD的工作原理以及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1 CAD介绍
    • 1.1 CAD工作原理
    • 1.2 与CAD有关的中断
  • 2 CAD的使用
    • 2.1 CAD总耗时
    • 2.2 CAD均衡配置
    • 2.3 最优配置速查表
  • 3 CAD的应用
    • 3.1 CAD项目使用
    • 3.2 CAD扩展应用CSMA
  • 4 参考文献

1 CAD介绍

本章介绍一下LoRa芯片的CAD功能、原理以及如何使用。由于第一代SX127x的CAD使用与以后的芯片有所不同,本章介绍不适用SX127x。首先,我将datasheet中对CAD的介绍贴图在这里,如下图。
CAD介绍
其意思我大致解释一下。

  1. 从LoRa芯片第二代以后,即SX1261/SX1262/1268/LLCC68/SX1280/SX1281/LR1110/LR1120/LR1121,CAD不仅可以检测LoRa preamble,还可以检测LoRa packet,而以前老的芯片SX1272/SX1276/SX1278只能检测LoRa preamble。
  2. 在CAD模式,radio芯片将会扫描LoRa信号,扫描时间是在代码中定义的N个symbol1 时间。在此时间段内,如果检测到LoRa信号,将会产生CAD Detected IRQ中断。
  3. 可选择配置的symbol个数为1、2、4、8、16,这个参数的选择与SF和BW2 有关。

1.1 CAD工作原理

CAD执行过程是扫描空中信号,然后按照配置的SF和BW进行信号解析,将相关的信号峰值与噪声相比:如果比值超过peak-to-noise ratio (PNR) 的门限,CAD将认为有LoRa信号存在。
注意此处所说的PNR是指cadDetPeak值,这是代码中需要设置的一个参数。

1.2 与CAD有关的中断

与CAD相关的中断有两个:CadDone和CadDetected。打开CAD,不管有没有扫描到LoRa信号,一定会产生CadDone中断。但若检测到LoRa信号,则会同时产生CadDetected中断。下图是datasheet中的解释。
CAD中断
在代码中,CadDone和CadDetected中断的处理过程是嵌套的,示例代码如下:

if( ( irq_regs & SYSTEM_IRQ_CAD_DONE ) == SYSTEM_IRQ_CAD_DONE )
{HAL_DBG_TRACE_INFO( "CAD done\n" );if( ( irq_regs & SYSTEM_IRQ_CAD_DETECTED ) == SYSTEM_IRQ_CAD_DETECTED ){HAL_DBG_TRACE_INFO( "Channel activity detected\n" );on_cad_done_detected( );}else{HAL_DBG_TRACE_INFO( "No channel activity detected\n" );on_cad_done_undetected( );}
}

2 CAD的使用

CAD执行过程是在没有MCU干预下完成的,可分为两个步骤:

  • Reception:开始CAD,在使用者设定的symbol时间窗口内扫描。
  • Correlation:这个是处理过程,会占用少于1个symbol的时间。这个过程会决定有没有CadDetected中断产生。

2.1 CAD总耗时

由上可知,CAD总的耗时包括CAD开窗时间和CAD处理时间,下图为具体耗时计算公式,并举例说明。
CAD耗时

2.2 CAD均衡配置

影响CAD功能的参数主要有两个:Window Duration和Peak-to-Noise Threshold(cadDetMin默认设置为10,不建议更改)。

  • Window Duration:这个参数可以通过symbol number来配置,它决定了CAD开窗时间,增大可以增加CAD的可靠性,但增大时长也意味着增加功耗。另外,改变symbol number时,只要SF和BW不变,不用重调cadDetPeak的值。如下图增加symbol个数后所产生的影响。
    CAD开窗时间
  • Peak-to-Noise Threshold:指cadDetPeak值,这个参数决定了CAD判断LoRa信号的灵敏性,cadDetPeak值过小会造成false detect,过大会丢包,如下图测试结果,所以这个值也是需要综合考虑选取的。
    cadDetPeak

2.3 最优配置速查表

为了可以快速的配置合适的参数,Semtech做了一些实验验证,总结得出一些表格,这样大家在使用时可以快速查表使用。表格非包含全部情况,如果没有要使用的参数,也可以根据现有参数推断出一个合理的值。
下图为使用SX128x的CAD配置,推荐使用4 symbols,cadDetMin等于10不用改动,表中提供了当使用不同SF和BW时,选择cadDetPeak的值。
SX128x CAD配置表
下边两张表格为SX126x使用BW125KHz时,最优配置。
SX126x CAD 表1
SX126x CAD表2
下边两张表格为SX126x使用BW500KHz时,最优配置。
SX126x CAD表3
SX126x CAD表4

3 CAD的应用

3.1 CAD项目使用

在此直接举个例子说明一下在项目中如何使用CAD功能,CAD一般应用在低功耗唤醒的逻辑中。
现有一个节点,配置参数为SF=7,BW=125KHz,cadSymbolNum=2,每休眠2s执行一次CAD监听。
根据公式Tsymbol = 2SF / BW, 计算单个symbol的时间为1.024ms。
根据公式CAD Duration[s] = (cadSymbolNum + (2*SF + 3) / 32) * Tsymbol,计算CAD开窗时间是2.592ms。
发送端需要配置的preamble长度所耗时间要大于接收端sleep周期+2倍的CAD开窗时间: Tpreamble > (2s + 2 * 2.592ms) = 2005.184ms
则我们需要设定发送端preamble长度为 Npreamble=2000,Tpreamble=( Npreamble + 4.5) * Tsymbol = (2000 + 4.5) * 1.024ms = 2052.608ms > 2005.184ms,以此来保证每次都可以将接收端从sleep模式唤醒。
在此我解释一下上边计算Tpreamble时,为什么要加4.5个symbol。由下图物理层规定可知,preamble还包含sync word和frequency sync两部分,所以要加4.5个symbol。
LoRa的preamble结构

3.2 CAD扩展应用CSMA

CSMA(Carrier Sense)是一种无线通信技术,注意此技术不是radio自带功能,而是纯应用层使用逻辑,其作用是无线发射机在发包之前先侦听无线环境,检测信道是否空闲,是否有其他信号干扰。提到信道检测,大家可能会想到使用读取信号RSSI(Receive Signal Strength Indication)技术来做,但对于LoRa而言,也是LoRa与FSK技术的主要不同点之一,LoRa信号允许在环境噪声水平以下传输,而使用RSSI技术检测不到环境噪声以下的信号,但CAD技术可以读取radio灵敏度3dB范围内的LoRa信号。也就是说即使LoRa信号在环境噪声以下,也可以被检测到。
由此,我们可以把CAD+RSSI两种技术组合使用,起名为CSMA。其运行机制是在进行CAD的时间内,此时radio为RX状态,同时使用寄存器读取当前信道RSSI值。然后,根据这两种功能的读取结果去判断当前信号是否有其他信号干扰。当然,在实际应用中,需要过滤RSSI的值,因为RSSI是瞬时能量值,波动较大,需要读很多次,然后掐头去尾求取平均值使用比较稳妥。下图为在使用CSMA系统时的一些介绍。
CSMA

4 参考文献

关于CAD功能,在此推荐一些参考文档,这些文档都是来自Semtech官网的Application Note,想了解更多CAD的可免费下载阅览。
AN1200-77-SX1280_CAD-V1_0.pdf
SX126X CAD performance evaluation V2.1.pdf
AN1200.21 SX127x Reading channel RSSI during a CAD.pdf
关于SX127x的低功耗设计的文章中也有讲到CAD的使用,文档为AN1200.17_LoraLowEnergyDesign_STD.pdf


  1. 单个symbol的计算公式是Tsymbol = 2SF / BW,单位秒。 ↩︎

  2. BW,bandwidth,带宽。 ↩︎

这篇关于【LoRa】CAD的工作原理以及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126231

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安