在 light sleep 模式下, 数字外设、大部分RAM, CPU 等都是门控时钟的,通过关闭芯片上暂时用不到功能和时钟,从而达到节省功耗的目的。
在deep sleep 模式下,由 APB_CLK 提供时钟的CPU, 大部分 RAM 和所有数字外设都处于关机状态。芯片中唯一还能开机的部分是: RTC 控制器, RTC 外设 (包括 ULP 协处理器) 和 RTC 存储器 (慢速和快速)。
一些外部唤醒方式详见:https://docs.espressif.com/projects/esp-idf/zh_CN/v4.0/api-reference/system/sleep_modes.html
ESP WiFi 支持的 Modem-sleep 模式指的是 IEEE 802.11 协议中的 power-saving 模式,Modem-sleep 模式只在 WiFi 处于 Station 模式并且连接到 AP 的情况下才会工作。
在Modem-sleep 的情况下,Station 会间隔性在 active 和 sleep 状态切换,在 sleep 状态下,RF, PHY, BB 则会关闭。如果需要保持 WiFi 连接到 AP,这个时候要启用 WiFi modem sleep,并启用自动使用 light sleep 功能(详见:https://docs.espressif.com/projects/esp-idf/en/v4.0/api-reference/system/power_management.html)。WiFi driver 需要允许系统从睡眠中自动醒来,从而保持连接到 AP。
disable -sleep | Modem-sleep | Light-sleep | Deep-sleep | |
---|---|---|---|---|
RF | 开启 | 关闭 | 关闭 | 关闭 |
CPU | 开启 | 开启 | 暂停 | 关闭 |
系统时钟 | 开启 | 开启 | 关闭 | 关闭 |
WiFi 连接 | 可保持 | 可保持 | 可保持 | 只可以断连 |
电流-时间
波形介绍这里以不开启 sleep 模式,来介绍 电流-时间
波形图,如图2.1。
在不开启 sleep 模式,CPU 和 RF 为开启状态,衬底电流为 CPU 和 RF 的运行提供电流,一般,RF 工作的电流为 60mA 以上的脉冲波。当 WiFi 保持连接到 AP,RF 则会以 DTIM period
为周期来侦听 AP 的信号。
图2.1 电流时间波形图
Modem sleep 模式包括 minimum 和 maximum 两种省电模式,a. 在 minimum 省电模式下,station 在每一个 DTIM period
下都会从睡眠模式中醒来接收 beacon 帧,在这种模式下,广播数据不会丢失,因为数据的传输同样以DTIM period
为周期。同时,DTIM period
由 AP 决定,如果 DTIM period
太短,则不会节省太多的电。b. 在 maximum 省电模式下,station 则在每一个 listen interval
下都会从睡眠模式中醒来接收 beacon 帧,listen interval
可以设置大于 DTIM period
的值,在此情况下就可能会造成广播报的丢失,随着 listen interval
的变大,广播包丢失的可能性变大。与此同时会越省电。
Note: 可以通过抓取路由器的空中报,来获取 DTIM period
的值。该字段在 AP 的 Beacon 包中,如图 2.2。查看到该字段的值为 1, 如图 2.3,意味着 DTIM period
的值为一个 Beacon interval
,其中,Beacon interval
的值为102.4ms,如图 2.4 所示。也就是说当前 ESP8266 所连接 AP 的DTIM period
为 102.4ms。
图2.2 抓取与 ESP8266 交互的 AP 的空中包
图2.3 DTIM period 字段
图2.4 Beacon interval字段
当 ESP8266 连接到 AP,处于 minimum 省电模式时,电流-时间
波形如 2.5 图所示,脉冲波为 RF 以 DTIM period
为周期从睡眠中醒来侦听数据时的电流,在 DTIM period
中则处于睡眠状态。则在此状态下,衬底电流绝大部分时间只为 CPU 供电,为 13 mA。
当 ESP8266 连接到 AP,处于Light sleep + minimum 省电模式时,电流-时间
波形如 2.5 图所示,脉冲波为 RF 以 AT 中默认的DTIM period
为周期从睡眠中醒来侦听数据时的电流,电流大小大约在 60 ~ 100mA 之间,在 DTIM period
中则处于睡眠状态。则在此状态下,CPU 大部分时间也处于睡眠状态,该部分电流大约在 0 ~ 20mA 之间。其中,AT 中默认的 DTIM period
为3。
图2.6 Light sleep + minimum 省电模式下电流波形图
当 ESP8266 连接到 AP,处于Light sleep + maximum 省电模式时,电流-时间
波形如 2.5 图所示,脉冲波为 RF 以 listen interval
为周期从睡眠中醒来侦听数据时的电流,电流大小大约在 60 ~ 100mA 之间,在 listen interval
中则处于睡眠状态。其中,在该示例中,listen interval
设置为 9 个 DTIM period
,则在此状态下,CPU 大部分时间也处于睡眠状态,该部分电流大约在 0 ~ 20mA 之间。
图2.6 Light sleep + maximum 省电模式下电流波形图
RF 在接收数据时,从电流波形上也可分析得出,如图 2.7 所示,红色标记处 65mA 左右的水平电流意味着此时 RF 在处理接收数据,在 ESP8266 在接收广播报相比于不接收该广播包,该电流在 65mA 左右的持续时间要长。
图2.7 接收广播包的电流波形图