ESP8266 Sleep
(→特性) |
(→SDK API) |
||
第25行: | 第25行: | ||
<br><br> | <br><br> | ||
− | === | + | === 接口 === |
− | + | SDK API,通过以下接口进入 Modem-sleep 模式: | |
<source lang=cpp> | <source lang=cpp> |
2015年10月14日 (三) 09:24的版本
目录 |
1 概述
ESP8266 系列芯片提供以下三种可配置的睡眠模式,您可以根据应用按需选用:
- Modem-sleep
- Light-sleep
- Deep-sleep
三种模式的区别如下:
2 Modem Sleep
2.1 特性
目前 ESP8266 的 Modem-sleep 仅工作在 Station 模式下,连接路由器后生效。ESP8266 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接 (一般路由器的 DTIM Beacon 间隔为 100 ms ~ 1000 ms)
在 Modem-sleep 模式下,ESP8266 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块电路,达到省电效果,在下次 Beacon 到来前自动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。睡眠同时可以保持与路由器的 Wi-Fi 连接,并通过路由器接受来自手机或者服务器的交互信息。
2.2 接口
SDK API,通过以下接口进入 Modem-sleep 模式:
wifi_set_sleep_type(MODEM_SLEEP_T)
注意:在 Modem-sleep 模式下,系统可以自动被唤醒,无需配置接口
2.3 应用
Modem-sleep 一般用于必须打开芯片 CPU 的应用场景,例如 PWM 彩灯,需要 CPU 实时控制
3 Light Sleep
3.1 特性
Light-sleep 的工作模式与 Modem-sleep 相似,不同的是,除了关闭 Wi-Fi 模块电路以外,在 Light-sleep 模式下,还会关闭时钟并暂停内部 CPU,比 Modem-sleep 功耗更低
3.2 接口
SDK API,通过以下接口进入 Light-sleep 模式:
wifi_set_sleep_type(LIGHT_SLEEP_T)
在 Wi-Fi 连接后,并且 CPU 处于空闲状态时,会自动进入 Light-sleep 状态
3.3 唤醒
在 Light-sleep 模式下,CPU 在暂停状态下不会响应来自外围硬件接口的信号与中断,因此需要配置通过外部 GPIO 信号将 ESP8266 唤醒,唤醒过程小于 3 ms
通过 GPIO 唤醒只能配置为电平触发模式,接口如下:
void gpio_pin_wakeup_enable(uint32 i, GPIO_INT_TYPE intr_state); * uint32 i 唤醒功能的 IO 序号 * GPIO_INT_TYPE intr_state 唤醒的触发模式 GPIO_PIN_INTR_LOLEVEL/GPIO_PIN_INTR_HILEVEL
3.4 应用
Light-sleep 模式可用于需要保持与路由器的连接,可以实时响应路由器发来的数据的场合。并且在未接收到命令时,CPU 可以处于空闲状态。⽐比如 Wi-Fi 开关的应用,大部分时间 CPU 都是空闲的,直到收到控制命令,CPU 才需要进行 GPIO 的操作
- 注意:若系统应用中有小于 DTIM Beacon 间隔时间的循环定时,系统将不能进入 Light-sleep 模式
4 Deep Sleep
5 参考
- 9B-ESP8266__Sleep__Function Description: http://bbs.espressif.com/download/file.php?id=534