news 2026/2/13 13:29:21

S3 + Deep-sleep + EXT1 电平唤醒后功耗到 ~130 µA 量级

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
S3 + Deep-sleep + EXT1 电平唤醒后功耗到 ~130 µA 量级

你这个现象(S3 + Deep-sleep + EXT1 电平唤醒后功耗到 ~130 µA 量级)很常见,通常不是“CPU没睡”,而是EXT1 把 GPIO 作为 RTC IO 输入在工作,再叠加IO电平不够“干净”(靠 300k 下拉太弱、落在阈值附近)某些 IO/外设漏电,就会到 100µA+。

下面给你一套“最有效、最容易验证”的降功耗路线(按收益从大到小):


1) 先确认:是不是 EXT1 把你拉到更高的 Deep-sleep 子模式

ESP32-S3 的 Deep-sleep 有子模式;文档明确提到:当使用“RTC IO 作为输入”等特性时,芯片无法进入更极限的 ultra low 模式,功耗会更高。
而 EXT1 恰好就是用 RTC 控制器监测 RTC IO 输入(并且会在 RTC 外设断电时用 HOLD 锁住管脚状态来保证唤醒仍可用)。

👉 这意味着:如果你必须用 EXT1 电平唤醒,S3 的 deep-sleep 电流比 ESP32 经典款更高是有可能“正常”的,你要靠“把 IO 状态做到最省电”去抠下来。


2) 300k 下拉太弱:很容易把 GPIO6 拉到“半高不高”的模拟阈值区

你自己也测到了:

  • GPIO6 直接短地:130 µA

  • GPIO6 300k 下拉:160 µA(更高)

这非常像管脚在 deep-sleep 时被内部/外部漏电“顶起来”,300k 压不住,电压落在输入阈值附近 →输入缓冲/比较器附近抖动,电流上去。

✅ 建议你直接试两种之一(都很常用):

  • 把外部下拉改成 47k~100k(先用 47k 最稳)

  • 或者不用外部下拉,改用 RTC 内部下拉 + HOLD(见下面代码)


3) 关键软件配置:用 RTC IO 下拉 + HOLD(别只看你贴的 IO DUMP)

你贴的 IO DUMP(Pullup=0 Pulldown=0 InputEn=0…)多半是数字 GPIO 域的状态;而 EXT1 会把 pad 配到RTC IO 域,数字域 dump 往往不代表最终睡眠态。文档也强调 EXT1 会把 IO pad 配成 RTC IO。

你可以按下面方式把 GPIO6 在睡眠前固定成“省电的低电平输入 + 下拉 + HOLD”:

#include "esp_sleep.h"

#include "driver/rtc_io.h"

#define WAKE_GPIO GPIO_NUM_6

void go_sleep(void)

{

// 1) 把 GPIO6 走 RTC IO 配置(EXT1 会用到 RTC IO)

rtc_gpio_init(WAKE_GPIO);

rtc_gpio_set_direction(WAKE_GPIO, RTC_GPIO_MODE_INPUT_ONLY);

// 2) 关上拉、开下拉(让它在睡眠里稳稳为低)

rtc_gpio_pullup_dis(WAKE_GPIO);

rtc_gpio_pulldown_en(WAKE_GPIO);

// 3) EXT1:ANY_HIGH 唤醒

esp_sleep_enable_ext1_wakeup_io(1ULL << WAKE_GPIO, ESP_EXT1_WAKEUP_ANY_HIGH);

// 4) 不需要 RTC memory 的话,关掉(只能省一点点,但建议做)

esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF);

esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);

esp_deep_sleep_start();

}

文档说明:EXT1 即使 RTC 外设断电也能唤醒,因为 IDF 会在入睡前把唤醒脚状态锁住(HOLD)并在唤醒后解除。
也说明了:关 RTC_PERIPH 时会用 HOLD 维持上下拉,这还“有助于进一步减小睡眠功耗”。


4) 把“其它 IO 漏电”抠掉:rtc_gpio_isolate 很有用

很多时候你看到的 100µA+ 并不是唤醒脚本身,而是其它 IO 还连着外设/电阻网络,睡眠时内部上下拉或外设 ESD 路径形成漏电。

ESP-IDF 文档明确建议:Deep-sleep 下可以isolate 一些 IO 来进一步降电流,用rtc_gpio_isolate()可以关掉该脚的输入输出/上下拉以避免漏电。

✅ 做法(思路):

  • 除了 GPIO6 以外,把**所有“连到外设/有上下拉/有电平”的 RTC IO(0~21)**逐个 isolate 测电流,找到“罪魁祸首”那几根。

  • 注意别 isolate 你真正需要保持状态的脚(比如电源使能脚)。


5) 兼容性坑:某些 IDF 版本/特定 GPIO 上,EXT1 会让管脚在 deep-sleep 出现“被抬高”导致额外耗电

社区里确实出现过类似现象:升级 IDF 后 deep-sleep 从 ~20µA 变 ~131µA,定位到EXT1 使某个 GPIO 在 deep-sleep 被抬到 ~0.79V/1.12V,如果外部有下拉就会额外耗电。

✅ 你可以快速验证是不是同类问题:

  1. 只保留最小程序:enable ext1 → deep_sleep

  2. deep-sleep 时用万用表量 GPIO6 电压(配 47k 下拉更好观察)

    • 若你看到0.5~1.2V 这种“悬空偏置”,优先:

    • 换一个 RTC IO 做 EXT1(比如 7/8/9…)对比电流

    • 或升级到更新的 ESP-IDF 分支/patch 版本再测


你现在这组数据我会怎么判断

  • 130µA(短地)已经说明:基础电流不低,不只是“300k 下拉电阻的电流”(300k 对 3.3V 也就 11µA)。

  • 300k 下拉更高,强烈暗示:GPIO6 在睡眠态可能被“顶到阈值附近”或有漏电路径,300k 压不住 → 额外耗电。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 11:54:17

探索电力系统潮流计算:用Matpower玩转IEEE69节点系统

matpower应用&#xff1a;IEEE69节点系统潮流计算&#xff0c;主要是文档 包括&#xff1a;1.ieee69节点设计好参数的程序文件 2.自己编写的word&#xff08;具体内容详见目录&#xff09;在电力系统分析中&#xff0c;潮流计算是一个绕不开的话题。无论是电网规划、运行调度&a…

作者头像 李华
网站建设 2026/2/12 12:23:10

安捷伦8565EC 8564EC 8563EC频谱分析仪

产品详情&#xff1a; Agilent 8565EC 频谱分析仪 详细说明 HP-8565EC 50G频谱分析仪9KHz-50GHz         8560EC 系列频谱分析仪   8560EC系列便携式频谱分析仪具有通常在较大型且更昂贵的台式分析仪上才有的测量能力和性能。 8560EC系列把杰出的相位噪声、灵敏度、1…

作者头像 李华
网站建设 2026/2/11 14:29:39

Java动态代理

Java动态代理 一、概述二、具体实现 2,1创建被代理对象&#xff08;同时里面包含了相关的方法&#xff09; package com.itheima.mydynamicproxy1.zj;public class BigStar implements Star{ // 先是创建一个类private String name;public String getName() {return name;}p…

作者头像 李华
网站建设 2026/2/11 22:09:21

基于深度学习YOLOv11的晶圆体缺陷检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文提出了一种基于深度学习目标检测模型YOLOv11的晶圆体缺陷检测系统&#xff0c;旨在实现高效、精准的晶圆制造缺陷分类与定位。该系统针对9类典型晶圆缺陷&#xff08;Center、Donut、Edge-Loc、Edge-Ring、Loc、Near-full、None、Random、Scratch&#xff09…

作者头像 李华
网站建设 2026/2/12 12:54:37

Java事务ACID解析:深入浅出搞定这4大特性!

文章目录Java事务ACID解析&#xff1a;深入浅出搞定这4大特性&#xff01;什么是事务&#xff1f;1. 原子性&#xff08;Atomicity&#xff09;&#xff1a;要么全部成功&#xff0c;要么全军覆没定义实际应用示例代码总结2. 一致性&#xff08;Consistency&#xff09;&#x…

作者头像 李华