系统状态机说明

[English]

../../_images/pm_pcm2.png
系统支持不同的睡眠模式:
  • active

  • cpu wfi

  • low voltage

  • deep sleep

  • shut down

active(正常工作)

  • CPU处于工作状态且WIFI,BT可以正常收发数据。

cpu wfi(cpu wfi)

  • RTOS没有任务需要处理时,系统进入IDLE任务中,在IDLE任务中,CPU会进入WFI睡眠;当有任何中断到来时,都能让系统退出WFI状态,进入正常工作状态。

low voltage sleep(低压睡眠)

  • 低压睡眠是一种相对比较节省功耗的睡眠模式。在该模式下系统只有32K时钟,此时只有部分硬件模块在工作,除了AON和部分模拟模块在工作,其他硬件模块在低压下暂停运行和关闭。

  • 低压睡眠模式VDDDIG的电压会降低。如果SRAM不下电,在SRAM上保存的数据,处于保持中,低压唤醒后还能够继续使用。

  • 进入低压的条件: - 1.RTOS没有任务需要处理时,系统进入IDLE任务中。 - 2.满足了进入低压的票(BLE和WIFI进入sleep;APP的票置上;以及使用的低压都值上)。

  • 当唤醒信号触发后,系统退出低压状态,VDDDIG电压会升到正常电压。

  • 处于低压状态下,以下唤醒源(GPIO,RTC,WIFI,BLE)可以让系统退出低压。注意:WIFI,BLE进入低压是根据WIFI,BLE的业务场景来投票进入,投票比较特殊(SDK内部做好,应用程序不用关注),但是应用程序进入低压前需要把上层业务关闭。

  • 该模式下32K的时钟源可以根据自己业务的场景选择,时钟源可以参考 时钟说明

  • 为了达到最优功耗,不需要的模块,进入低压前请关闭,退出低压后,可以再开启。

deep sleep(深度睡眠)

  • 深度睡眠是一种唤醒功能全且最节省功耗的睡眠模式。在该模式下系统只有32K时钟,只有AON和部分硬件模块在工作,其他硬件电路模块都下电。

    当唤醒信号触发后,系统退出深度睡眠状态,系统复位。

  • 处于深度睡眠状态下,以下唤醒源(GPIO,RTC)可以让系统退出深度睡眠。

  • 该模式下32K的时钟源默认是使用ROSC的32K。

  • 进入深度睡眠的条件: - 1.RTOS没有任务需要处理时,系统进入IDLE任务中; - 2.满足了进入深度睡眠的票(BLE和WIFI进入sleep,APP的票置上)

shut down(关机)

  • 整个系统下电

状态机切换说明

低压睡眠(low voltage)说明

  • 低压睡眠和深度睡眠是系统性(整个芯片)睡眠,如果系统进入了低压睡眠和深度睡眠,个别模块还在工作,该模块的异常退出对系统从低压和深度睡眠中唤醒后,可能不能正常工作, 为了从机制上避免该问题的发生,则通过投票机制进入低压睡眠和深度睡眠。

  • 低压睡眠:当前进入低压睡眠一共设置了64张票: - 1.BLE和WIFI的票,BLE和WIFI模块内部进入睡眠后自己投上,SDK内部做好,应用程序不用关注; - 2.APP的票是提供给上层应用用,需要进入睡眠前,自己投上该票,唤醒后需要工作一段时间,则把该票取消,需要进入睡眠时,再投上。 - 3.其他票默认是投上的。 - 4.对于SDK之外不需要关注太多,只需要关注APP这一张票。

  • 进入低压的条件 - 1.RTOS没有任务需要处理时,系统进入IDLE任务中; - 2.满足了进入低压的票(BLE和WIFI进入sleep,APP的票等票置上)

    如果进入低压失败,可以参考 低功耗问题分析

深度睡眠(deep sleep)说明

  • 深度睡眠:当前进入深度睡眠一共设置了2张票:BLE,WIFI: - 1.由于深度睡眠唤醒后,系统会重启。 - 2.BLE和WIFI的票,BLE和WIFI模块内部进入睡眠后自己投上,SDK内部做好,应用程序不用关注。

  • 系统中RTOS没有任务处理时,自动进入IDLE任务,进行WFI。当满足了进入深度睡眠条件(满足了进入深度睡眠的票时),则进入深度睡眠状态。

  • 进入深度睡眠的条件: - 1.RTOS没有任务需要处理时,系统进入IDLE任务中; - 2.满足了进入深度睡眠的票(BLE和WIFI进入sleep)

    如果进入深度睡眠失败,可以参考 低功耗问题分析