ESP8266 支持三种休眠方式:Modem-sleep,Light-sleep 和 Deep-sleep。ESP8266 进入 Modem-sleep 或者 Light-sleep 必须满足以下的条件。
- ESP8266 被设置为 Station_only 模式。
- ESP8266 链接到路由器获得 IP 地址。
- 系统处于空闲态。
- 调用 wifi_set_sleep_type 函数,选择 ESP8266 进入 Modem-sleep 或 Light-sleep 方式。
- 调用 system_deep_sleep 函数,设置8266 进入Deep_sleep 的休眠时间。
- Modem-sleep 一般用于必须打开芯片 CPU 的应用场景,例如 PWM 彩灯,需要 CPU 实时控制。
- Light-sleep 模式可用于需要保持与路由器的连接,可以实时响应路由器发来的数据的场景。并且在未接收到命令时,CPU 可以处于空闲状态。如Wi-Fi 开关的应用,部分时间 CPU 都是空闲的,直到收到控制命令,CPU 才需要进行GPIO 的操作。
- Deep-sleep 可以用于低功耗的传感器应用或者部分时间都不需要进行数据传输的场景。设备可以每隔一段时间从 Deep-sleep 状态醒来测量数据并上传,之后继续进行 Deep-sleep。也可以将多个数据存储于 RTC memory(RTC memory 在Deep-sleep 模式下仍然可以保存数据),然后一次发送出去。
- Light-sleep 在用户程序中不能有轮巡的timer 定时器,否则cpu 无法进入休眠。
- 仅 Deep-sleep 要求XPD_DCDC(GPIO16) 或是外部 MCU 的 GPIO 口连接至 EXT_RSTB 进行唤醒。其他的休眠方式硬件上无特殊要求。