目录
1 CAD介绍
本章介绍一下LoRa芯片的CAD功能、原理以及如何使用。由于第一代SX127x的CAD使用与以后的芯片有所不同,本章介绍不适用SX127x。首先,我将datasheet中对CAD的介绍贴图在这里,如下图。
其意思我大致解释一下。
- 从LoRa芯片第二代以后,即SX1261/SX1262/1268/LLCC68/SX1280/SX1281/LR1110/LR1120/LR1121,CAD不仅可以检测LoRa preamble,还可以检测LoRa packet,而以前老的芯片SX1272/SX1276/SX1278只能检测LoRa preamble。
- 在CAD模式,radio芯片将会扫描LoRa信号,扫描时间是在代码中定义的N个symbol1 时间。在此时间段内,如果检测到LoRa信号,将会产生CAD Detected IRQ中断。
- 可选择配置的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中的解释。
在代码中,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处理时间,下图为具体耗时计算公式,并举例说明。
2.2 CAD均衡配置
影响CAD功能的参数主要有两个:Window Duration和Peak-to-Noise Threshold(cadDetMin默认设置为10,不建议更改)。
- Window Duration:这个参数可以通过symbol number来配置,它决定了CAD开窗时间,增大可以增加CAD的可靠性,但增大时长也意味着增加功耗。另外,改变symbol number时,只要SF和BW不变,不用重调cadDetPeak的值。如下图增加symbol个数后所产生的影响。
- Peak-to-Noise Threshold:指cadDetPeak值,这个参数决定了CAD判断LoRa信号的灵敏性,cadDetPeak值过小会造成false detect,过大会丢包,如下图测试结果,所以这个值也是需要综合考虑选取的。
2.3 最优配置速查表
为了可以快速的配置合适的参数,Semtech做了一些实验验证,总结得出一些表格,这样大家在使用时可以快速查表使用。表格非包含全部情况,如果没有要使用的参数,也可以根据现有参数推断出一个合理的值。
下图为使用SX128x的CAD配置,推荐使用4 symbols,cadDetMin等于10不用改动,表中提供了当使用不同SF和BW时,选择cadDetPeak的值。
下边两张表格为SX126x使用BW125KHz时,最优配置。
下边两张表格为SX126x使用BW500KHz时,最优配置。
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。
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系统时的一些介绍。
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