一、工作原理 RxDutyCycle是一种特殊的RX模式,允许通过周期性地接收来降低功耗,同时保持微控制器处于睡眠模式。当一个包被SX126X接收,它为微控制器触发一个中断,以唤醒它。 file:///C:/Users/Lenovo/AppData/Local/Temp/企业微信截图_15936538978073.png file:///C:/Users/Lenovo/AppData/Local/Temp/企业微信截图_15936538978073.png 图1 RxDutyCycle工作流程图
二、周期设定
RxDutyCycle模式执行及周期时间设置:
RxDutyCycle模式下执行的操作,radio将花费大约1毫秒来保存上下文并进入睡眠模式,然后重新初始化radio,锁定PLL并进入RX。延迟是不准确的,可能会根据XTAL启动、PLL锁定等所需的时间而变化。
图2 RX占空比能量分布图
三、周期时间设置
处于RxDutyCycle模式的SX126X大部分时间都处于休眠状态。为了确保对传入消息的检测,需要有足够长的前导发射时间来覆盖休眠期+前导/报头检测,所以需要满足以下: Tpreamble > sleepPeriod + 2 bytes in FSK (1) 或 >sleepPeriod + 8 symbols in LoRa® 只有满足以上设置,才能在接收打开期间,在最差的情况下有足够的前导让SX126X进行前导检测;
图3 发射前导长度要求 当接收检测到前导后,接收窗口的超时时间被置为2 * rxPeriod + sleepPeriod值重新启动,即检测到前导后接收窗口为2 * rxPeriod + sleepPeriod这么长的时间进行前导同步和报头接收,如果这这期间没有检测到报头或者报头(topTimerOnPreambleDisabled ),那么接收窗口的超时时间到就恢复到RxDutyCycle模式,如果检测到报头且正确就会停止RxDutyCycle的超时定时器,直到产生RXDone,然后进入Standby模式,所以要求: Tpreamble + Theader ≤ 2 * rxPeriod + sleepPeriod (2)
图4 接收时RX占空比
四、topTimerOnPreamble 使能与非使能区别
topTimerOnPreamble设置对SX1261X芯片的功耗有影响,以防出现错误的前导(FSK)或报头(LoRa®)。如果这个选项是启用的,RX超时将停止,芯片将保持在RX模式,直到下一次接收。
SX126X在RxDutyCycle上设置,并启用了StopTimerOnPreamble:
图5 启用StopTimerOnPreamble的RxDutyCycle
当假报头发生时,芯片保持在RX模式,直到接收到下一个帧,然后切换回STDBY_RC模式。
在RxDutyCycle上设置SX1261,禁用StopTimerOnPreamble:
图6 禁用StopTimerOnPreamble的RxDutyCycle
五、实现代码
|