首页 / 外设专题 / 深度睡眠

ESP32 深度睡眠完全指南 · 唤醒源、功耗与 RTC 内存

深度睡眠能到多少 µA、哪些脚能唤醒、醒来后数据还在吗——配合续航计算器一起用,把电池项目的账算清楚。

深度睡眠时芯片处于什么状态

进入深度睡眠后,CPU、绝大部分 RAM 和外设全部断电,只有 RTC 域还活着(RTC 内存、RTC 外设、ULP 协处理器)。唤醒相当于一次完整重启——setup() 会从头再跑一遍,普通全局变量全部丢失。

功耗到底多少

状态典型电流说明
裸模组深度睡眠约 10 µA官方量级的参考值
带 USB-UART 桥 + LDO 的开发板100 µA – 数 mA外设漏电远大于芯片本身
Wi-Fi 发射瞬间80 – 150 mA真正的耗电大头
先把参数填进 电池续航计算器,看清「唤醒时耗电」和「睡眠耗电」各自占多少,再决定优化哪一头。大多数项目根本不该去优化那 10 µA。

唤醒源

唤醒源说明
定时器esp_sleep_enable_timer_wakeup(us),最常用
ext0单个 RTC GPIO 达到指定电平
ext1多个 RTC GPIO 的组合(任一 / 全部)
触摸ESP32 经典款支持触摸唤醒
ULP 协处理器睡眠中继续采样,超阈值再唤醒主核
只有 RTC GPIO 能把芯片从深度睡眠唤醒。ESP32 经典款的 RTC GPIO 是:0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, 37, 38, 39。把唤醒按键接到别的脚上,你会得到一块「怎么按都不醒」的板子。

怎么保存数据

把需要在睡眠间保留的变量用 RTC_DATA_ATTR 声明(ESP-IDF),例如 RTC_DATA_ATTR int bootCount = 0;,它们会被放进 RTC 慢速内存,睡眠期间不掉电。容量有限,只放计数器、状态位之类的小数据。

唤醒后想知道是被什么唤醒的,用 esp_sleep_get_wakeup_cause()。

降低漏电的几个实招

本文以 ESP32 经典款为准。各型号的 RTC GPIO 列表、可用唤醒源和睡眠电流差异较大,请以对应型号的官方文档为准。
数据核验:2026-10-20 · 以 Espressif 官方文档交叉核对。随型号或 ESP-IDF 版本变化的字段一律标注「以官方文档为准」,不编造具体数值。 官方外设文档 →

相关页面