在CAD周期内读取LoRa RSSI

关键字 :LoRaRSSICAD

1、前导码

在实施天线分集技术时,实现RSSI和CAD检测的组合可能很有用,这有助于在无线电接收器上选择最佳信号路径,并避免在错误的CAD检测(非常低的概率)上选择错误的信道,所有这些都以非常低的能源成本实现。事实上,RSSI 信息在 CAD 期间可用,无需让接收器额外打开一段时间。即使终端平台不支持天线分集,在CAD期间读取RSSI时实现的节能使得该技术对于所有电池供电系统都是必不可少的。

 

2、通道活动检测(CAD)原理

信道活动检测模式旨在以最佳功率效率检测无线电信道上的 LoRa 前导码.一旦进入CAD模式, SX127x将执行非常快速的频段扫描以检测LoRa数据包前导码。

在 CAD 期间,将进行以下操作:

  • 锁相环锁
  • 无线电接收器从通道捕获数据的 LoRa 前导码符号.该阶段的无线电电流消耗约为10 mA。
  • 无线电接收器和PLL关闭,调制解调器数字处理开始。
  • 调制解调器搜索无线电捕获的样本与理想前导码波形之间的相关性。此关联过程执行所需的时间略少于一个符号周期。该阶段的无线电电流消耗大大降低。
  • 计算完成后,调制解调器将生成 CadDone 中断。如果关联成功,则会同时生成 CadDetect信号。
  • 芯片返回待机模式。
  • 如果检测到前导码,请清除中断,然后将无线电置于 RX 单模或 RX 连续模式来启动接收。

信道活动检测所需的时间取决于所使用的 LoRa™ 调制设置, 例如, 扩频因子和带宽.

对于给定的配置, 典型的 CAD 检测时间如下图所示,表示为 LoRa™ 符号周期的倍数.在此期间,无线电处于接收器模式:

在CAD周期的剩余时间内,无线电处于减少消耗状态。图 1 显示了

以 LoRa 符号时间表示的 CAD 持续时间.

图 1:CAD 持续时间取决于扩频因子

 

为了说明此过程以及每种模式下的相应消耗,CAD 过程遵循以下概述的事件顺序:


图 2:CAD 序列

 

然后,接收器处于完全接收器模式,进行超过一半的活动检测, 然后是消耗减少的处理阶段,其中消耗随 LoRa 带宽而变化,如下表所示.

图 3:CAD 最大功耗

3、实践中的通道活动检测

如果我们原位查看CAD期间设备功耗的行为,我们可以看到下图:

图 4:CAD 测量

上述图是在 CAD 期间在 SX1272 上使用设置 SF12 和 BW=0 (125KHz) 时测量的。该图突出显示了 CAD 期间设备的消耗情况,并明确区分了符号长度和此后的计算时间。

图 5:CAD 启动

上面的图 5 突出显示了芯片组从睡眠模式到 CAD 模式时的内部过程。重要的是要注意,在有效地开始接收符号之前,设备将隐式经历操作模式的几个阶段。所花费的时间以 240 us 测量,对于所有 SF 和所有带宽都是相同的。


图 6:CAD 符号时间测量

上面的图6突出显示了通过器件功耗和计算出的符号时间测量的符号时间。用于计算符号时间的公式是:


对于SF12和125 kHz带宽,该公式给出了33.024ms的计算符号时间,与测量的符号时间相同。

图 7:CAD 持续时间

对于CAD的整个持续时间,测量值相当于符号持续时间的1.85倍,如图1所示。

 

4、在 CAD 期间读取 RSSI

在 CAD 期间, 设备在一个 LoRa 符号的持续时间内有效地处于接收模式.因此,可以读取LoRa带宽内存在的信号的RSSI.

在接收时,RSSI每8uS采样一次,并进行渐近分析。这意味着 RSSI 值是沿着符号持续时间的长度计算的,并且与之前分析的点数直接相关。

图 8:在 CAD 中测量的 RSSI

上面的图 8 突出显示了从设备读取的 RSSI 准确的时刻。

 

5、源代码

为了便于读取RSSI,可以计算出测量的最准确点。这是使用简单的计时器和计算 LoRa 符号的长度来完成的.

下面的代码突出显示了进程机制:

symbolTime = ( pow( (float)2, (float)LORA_SPREADING_FACTOR ) ) + 32 ) / 125000; // SF7 and BW = 125 KHz

symbolTime = symbolTime * 1000000; // symbol Time is in us

while( 1 )

{

t.reset( ); // Reset the Timer

Radio.StartCad( ); // Set the device into CAD mode

t.start( ); // Start the Timer

while( t.read_us ( ) < 240 ); // 240us are needed for the device to go into CAD Mode from Sleep Mode

while( t.read_us ( ) < symbolTime + 240); // We wait for Symbol Time and 240 us to be at the very end of // the symbol duration

rssi[i++] = Radio.GetRssi( MODEM_LORA ); // We can now read the RSSI

t.stop( ); // Stop the Timer

while( State != CAD_DONE ); // Wait for the end of the CAD process

}

使用这种方法, 可以验证有效的 LoRa 前导码是否存在,并在一个简单的步骤中读取 RSSI.

*原文请参考 AN1200.21: Reading Channel RSSI During a CAD

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

semtech AE: https://semtech.my.salesforce.com/sfc/p/E0000000JelG/a/2R000000HSPC/6HgnNpCpJAkbYyq5kwAs_bzUYQ.nupbs_0fIAQuNLXY

评论