ESP32 深度睡眠模式功耗测试
ESP32 拥有 18 个 RTC IO 和 10 个 TouchPad, 每一个 RTC IO 和 TouchPad 经过配置都可以将芯片从 deep_sleep 模式中唤醒, 从而可以实现低功耗方案。
概述
该项测试基于 ESP32 电流测试板. 下面介绍的是通过配置不同唤醒方式, deep_sleep 期间芯片的工作电流. 所有的 RTC IO 和 TouchPad 都进行了测试.
外部事件唤醒
外部事件可以通过在 RTC IO 上产生一个电平信号, 从而唤醒正处于 deep_sleep 状态的芯片. 该事件可以是 EXT0 或 EXT1.
EXT0 方式是当某个 RTC IO 上检测到有唤醒芯片的电平信号时, 芯片就被会唤醒, 在程序中配置是高电平还是低电平唤醒.
EXT1 方式下, 我们可以采用多个 RTC IO 组合触发方式, 当几个 RTC IO 上电平信号满足一定条件时,芯片将被唤醒. 如果只有一个 RTC IO 进行了配置, 效果将与 EXT0 类似.
测试配置如下 : RTC IO 配置成输入 floating 模式. 程序配置某一个 RTC IO 为 wake_up IO. 当采用高电平唤醒时, 外部采用 10K 欧电阻下拉, 当采用低电平唤醒时, 外部采用 10K 欧电阻上拉. EXT0 唤醒方式测试结果中, 配置 GPIO_0 为 wake_up IO 时, 如果是配置低电平唤醒, deep_sleep 期间工作电流是 6.3uA, 配置成高电平唤醒时, deep_sleep 期间工作电流是 6.2uA.
备注
RTC_IO37 和 RTC_IO38 在测试版上没有引脚引出, 没有进行测试.
EXT0 唤醒方式测试结果
GPIO_NUM |
low leval wakeup |
high level wakeup |
|---|---|---|
GPIO_0 |
6.3uA |
6.2uA |
GPIO_2 |
6.3uA |
6.2uA |
GPIO_4 |
6.4uA |
6.2uA |
GPIO_12 |
6.4uA |
6.4uA |
GPIO_13 |
6.3uA |
6.3uA |
GPIO_14 |
6.3uA |
6.3uA |
GPIO_15 |
6.4uA |
6.4uA |
GPIO_25 |
6.3uA |
6.5uA |
GPIO_26 |
6.6uA |
6.3uA |
GPIO_27 |
6.4uA |
6.4uA |
GPIO_32 |
6.4uA |
6.4uA |
GPIO_33 |
6.4uA |
6.4uA |
GPIO_34 |
6.4uA |
6.2uA |
GPIO_35 |
6.4uA |
6.3uA |
GPIO_36 |
6.4uA |
6.3uA |
GPIO_37 |
||
GPIO_38 |
||
GPIO_39 |
6.4uA |
6.3uA |
EXT1 唤醒方式测试结果
GPIO_NUM |
low leval wakeup |
high level wakeup |
|---|---|---|
GPIO_0 |
5.2uA |
5.3uA |
GPIO_2 |
5.2uA |
5.2uA |
GPIO_4 |
5.2uA |
5.2uA |
GPIO_12 |
5.2uA |
5.3uA |
GPIO_13 |
5.3uA |
5.2uA |
GPIO_14 |
5.3uA |
5.3uA |
GPIO_15 |
5.3uA |
5.2uA |
GPIO_25 |
5.2uA |
5.3uA |
GPIO_26 |
5.3uA |
5.2uA |
GPIO_27 |
5.3uA |
5.3uA |
GPIO_32 |
5.3uA |
5.3uA |
GPIO_33 |
5.3uA |
5.3uA |
GPIO_34 |
5.3uA |
5.7uA |
GPIO_35 |
5.3uA |
5.7uA |
GPIO_36 |
5.3uA |
5.3uA |
GPIO_37 |
||
GPIO_38 |
||
GPIO_39 |
5.4uA |
5.5uA |
从表格可以看出, deep_sleep 期间, 配置不同 RTC IO 唤醒时, 工作电流基本相同, 芯片的工作电流非常低. 采用 EXT1 唤醒方式时电流会比 EXT0 唤醒方式下少 1uA 左右.
备注
RTC IO 请尽量采用外部上下拉方式, 在进入 deep_sleep 之前将其配置成 input floating 模式, 与采用内部上下拉方式相比, 这样可以有效降低 deep_sleep 期间电流.
Touch Pad 唤醒方式
Touch Pad 唤醒方式下, 芯片进入 deep_sleep 之前, 对 Touch Pad 进行初始化,然后配置触发阈值. 进入 deep_sleep 后测量 sleep 期间电流.
TouchPad 唤醒方式测试结果
Pad Num |
Current |
|---|---|
Pad0 (GPIO_4) |
37.3 uA |
Pad1 (GPIO_0) |
35.7 uA |
Pad2 (GPIO_2) |
36.6 uA |
Pad3 (GPIO_15) |
35.6 uA |
Pad4 (GPIO_13) |
36.5 uA |
Pad5 (GPIO_12) |
36.1 uA |
Pad6 (GPIO_14) |
36.7 uA |
Pad7 (GPIO_27) |
35.7 uA |
Pad8 (GPIO_33) |
36.7 uA |
Pad9 (GPIO_32) |
36.3 uA |
备注
可以使用 touch_pad_set_meas_time 接口来调整 touch sensor 充放电时间和充放电检测间隔,从而在合适的响应时间下,获得更好的低功耗表现。