MXD2660B休眠唤醒
经过一段时间的摸索后,终于大致搞清楚MXD2660B的休眠唤醒流程,做一下总结。
首先还是看手册。
芯片有多种功耗模式:active、idle、sleep、shutdown,我主要关注idle、sleep模式之间的切换。
需要注意的点:
- 蓝牙广播会唤醒MCU,唤醒后会立刻进入休眠。如果有IO中断,在蓝牙唤醒时会触发中断;
- IO唤醒,如果唤醒IO的脚配置了中断,MCU唤醒后会进入中断;
如果MCU休眠时开启了广播,在广播时会有一定功耗,使用电流表测量会发现电流定期跳增,即是在广播。
从idle到sleep状态转移前,会询问app层是否进入睡眠,即调用save_info_before_sleep_cb函数,返回false允许睡眠。
某些时候,进入睡眠后会被即刻唤醒,这一点还不甚清楚原因,可能与硬件有关。
RTC,LTC,IO唤醒后会执行recover_info_after_wakeup_cb。
在执行recover_info_after_wakeup_cb之前,如果触发了IO中断或RTC回调,会先调用回调函数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 飞椅档案!
评论