esp的深度睡眠关机功耗很高,一般软件方面应该查哪里?

一般先从这几处查,软件侧最常见:

  1. 先确认真的进了 Deep Sleep

    • 看日志是不是已经执行到 esp_deep_sleep_start()

    • 上电后打印 esp_sleep_get_wakeup_cause(),确认不是刚睡下又被立刻唤醒

    • 如果功耗是 mA 级,很多时候不是深睡眠没进去,就是反复唤醒了

  2. 查唤醒源是不是配错

    • 定时器、GPIO、触摸、UART、ULP 有没有误开

    • GPIO 唤醒脚是否悬空、极性是否配反,导致一进睡眠就醒

    • 先只保留一个最简单的唤醒源测试,比如只开 timer

  3. 睡前有没有把外设都关干净

    • Wi-Fi / BT:esp_wifi_stop()esp_bt_controller_disable()esp_bluedroid_disable()

    • UART、ADC、I2C、SPI、LED、传感器电源控制脚是否还在工作

    • 某些任务/定时器/中断如果还在跑,说明根本没真正进入深睡

  4. 查 RTC 电源域有没有被保留

    • 重点看有没有显式保留:

      • ESP_PD_DOMAIN_RTC_PERIPH

      • ESP_PD_DOMAIN_RTC_SLOW_MEM

      • ESP_PD_DOMAIN_RTC_FAST_MEM

      • ESP_PD_DOMAIN_XTAL

    • 如果不需要,尽量关掉,例如:

      复制代码

      esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);

      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);

  5. 查 GPIO 状态

    • 睡前 GPIO 电平是否导致外部电路漏电

    • 某些 IO 内部上下拉没关,或者外部上下拉打架,会明显增大功耗

    • 特别查:

      • 接 MOS 管使能脚

      • 传感器 EN 脚

      • 电平转换芯片 OE 脚

      • 外挂 Flash / PSRAM / 屏幕背光 / LDO EN

  6. 查是否用了 GPIO hold / RTC IO 配置不当

    • gpio_hold_en() / gpio_deep_sleep_hold_en() 有时能稳住电平省电

    • 但配错也可能让外围一直处于耗电状态

    • RTC IO 如果作为唤醒脚,注意其上下拉和方向配置

  7. 查日志和调试配置

    • 串口日志本身不会让 deep sleep 一直高很多,但如果程序在睡前还卡在打印、flush、等待事件,就会误以为"睡了"

    • 先用最小代码验证:

      复制代码

      void app_main(void)

      {

      esp_sleep_enable_timer_wakeup(10 * 1000000ULL);

      esp_deep_sleep_start();

      }

    • 如果这个版本功耗正常,说明问题就在你业务初始化/外设/唤醒配置里

  8. 查有没有"反复重启"而不是"持续休眠"

    • 很多板子看起来是深睡高功耗,实际上是:

      • 睡下去

      • 被错误唤醒

      • 又启动一遍

      • 再睡

    • 这样平均电流就很高

    • 先做一个最小 deep sleep 示例 测功耗

      再一项项加回:

    • 先加唤醒源

    • 再加 GPIO 配置

    • 这样最快定位。

    • 再加外设初始化

    • 最后加 Wi-Fi / BLE

相关推荐
安生生申5 分钟前
uni-app 连接 JDY-31 蓝牙串口模块实践
c语言·前端·javascript·stm32·单片机·嵌入式硬件·uni-app
熙芯XiChip8 分钟前
CPLD核心原理与结构
单片机
于小猿Sup11 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
chao18984412 小时前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
不会武功的火柴13 小时前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
嵌入式小站16 小时前
STM32 零基础可移植教程 05:按键消抖,为什么按一次会触发好几次
chrome·stm32·嵌入式硬件
czhaii16 小时前
跟我动手学FX系列PLC GX2环境
嵌入式硬件
拾知_H17 小时前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
2zcode18 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
jllllyuz19 小时前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件