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

相关推荐
唔好理总之好犀利13 分钟前
TVS管分析:MKS烧保险丝异常分析
stm32·单片机·嵌入式硬件
Dr.kangder1 小时前
嵌入式处理器虚拟化仿真技术(九)——SimpleScalar原理与应用
嵌入式硬件·架构·嵌入式·虚拟化·仿真
芯片设计-曾工11 小时前
当精准脉冲遇上清晰视界——CH2205E模块与YL1621的“黄金搭档“
驱动开发·stm32·单片机·51单片机·硬件工程
LCG元16 小时前
STM32 硬件 SPI + DMA 驱动 OLED 显示屏(SSD1306):从原理到 112fps 高速刷新全流程
stm32·单片机·嵌入式硬件
天吾cc17 小时前
RTT-ADC
单片机·嵌入式硬件·学习
qq_4480111617 小时前
C语言中的野指针和空指针
c语言·开发语言·单片机
崇山峻岭之间18 小时前
STM32F407的FOC驱动01
stm32·单片机·嵌入式硬件
Lzh编程小栈1 天前
【嵌入式硬核精讲】I2C通信协议万字详解(时序帧格式、同步半双工、重复起始、一对多挂载、寄存器、面试必考)
stm32·单片机·嵌入式硬件·面试
十月的皮皮1 天前
STM32从零到量产开发:四路继电器工业控制模块开发 -上位机 Program.cs 应用程序入口设计说明
c语言·stm32·单片机·stm32cubemx·hal库
LCG元1 天前
STM32F103+MPU6050互补滤波姿态解算与OLED实时显示实战(附完整工程代码)
stm32·单片机·嵌入式硬件