ESP32低功耗模式

发布者:安静的夜晚最新更新时间:2025-09-10 来源: cnblogs关键字:ESP32  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章

1.ESP32 系列芯片提供三种可配置的睡眠模式,针对这些睡眠模式,我们提供了了多种低功耗解决方案,用户可以结合具体需求选择睡眠模式并进行配置。三种睡眠模式如下:

  • Modem-sleep 模式:CPU 可运行,时钟可被配置。Wi-Fi/蓝牙基带和射频关闭。

  • Light-sleep 模式:CPU 暂停运行,Wi-Fi/蓝牙基带和射频关闭。RTC 存储器和外设以及 ULP 协处理器运行。任何唤醒事件(MAC、主机、RTC 定时器或外部中断)都会唤醒芯片。

  • Deep-sleep 模式:CPU 和大部分外设都会掉电,Wi-Fi/蓝牙基带和射频关闭,只有 RTC 存储器和 RTC 外设以及 ULP 协处理器可以工作。Wi-Fi 和蓝牙连接数据存储在 RTC 中。


三种模式的区别如下:

2.Modem-sleep 模式

  • 目前 ESP32 的 Modem-sleep 仅工作在 Station 模式下,连接路由器后生效。Station 会周期性在工作状态和睡眠状态两者之间切换。

  • ESP32 通过 Wi-Fi 的 DTIM Beacon 机制与路由器保持连接。在 Modem-sleep 模式下,系统可以自动被唤醒,无需配置唤醒源。一般路由器的 DTIM Beacon 间隔为 100 ms ~ 1,000 ms。

  • DTIM (Delivery Traffic Indication Message): 使用无线路由器时无线发送数据包的频率。

  • 在 Modem-sleep 模式下,ESP32 会在两次 DTIM Beacon 间隔时间内,关闭 Wi-Fi 模块电路,达到省电效果,在下次 Beacon 到来前自动唤醒。睡眠时间由路由器的 DTIM Beacon 时间决定。Modem-sleep 模式可以保持与路由器的 Wi-Fi 连接,并通过路由器接收来自手机或者服务器的交互信息。

  • Modem-sleep 一般用于 CPU 持续处于工作状态并需要保持 Wi-Fi 连接的应用场景,例如,使用 ESP32 本地语音唤醒功能,CPU 需要持续采集和处理音频数据。

 

3.Light-sleep 模式

    Light-sleep 的工作模式与 Modem-sleep 相似,不同的是,除了关闭 Wi-Fi 模块电路以外,在 Light-sleep 模式下,还会关闭时钟并暂停内部 CPU,比 Modem-sleep 功耗更低。有两种方式使 CPU 进入 Light-sleep 模式:

  • 强制 Light-sleep: 通过调用 API 强制 CPU 进入 Light-sleep 模式,强制进入 Light-sleep 模式后,不能通过路由器接收来自手机或者服务器的交互信息。强制 Light-sleep 模式可用于需要保持与路由器的连接,不需要实时响应路由器发来的数据的场景。

  • 自动 Light-sleep: 配置为自动休眠方式后,会在 CPU 处于空闲的状态下自动进入 Light-sleep 模式,能通过路由器接收来自手机或者服务器的交互信息。通常自动 Light-sleep 会与 Modem-sleep 模式 以及电源管理功能共同使用,电源管理功能允许系统根据 CPU 负载动态调节 CPU 频率以降低功耗。若系统应用中有小于 DTIM Beacon 间隔时间的循环定时,系统将不能进入 Light-sleep 模式。

  • 自动 Light-sleep 模式可用于需要保持与路由器的连接,可以实时响应路由器发来的数据的场景。并且在未接收到命令时,CPU 可以处于空闲状态。比如 Wi-Fi 开关的应用,大部分时间 CPU 都是空闲的,直到收到控制命令,CPU 才需要进行 GPIO 的操作。

     

4.Deep-sleep 模式

相对于其他两种模式,系统无法自动进入 Deep-sleep,需要由用户调用接口函数 esp_deep_sleep_start() 进入 Deep-sleep 模式。在该模式下,芯片会断开所有 Wi-Fi 连接与数据连接,进入 Deep-sleep 模式,只有 RTC 存储器和 RTC 外设以及 ULP 协处理器可以工作。从 Deep-sleep 唤醒后,CPU 将软件复位重启。


Deep-sleep 可以用于低功耗的传感器应用,或者大部分时间都不需要进行数据传输的情况。设备可以每隔一段时间从 Deep-sleep 状态醒来测量数据并上传,之后继续进入 Deep-sleep。也可以将多个数据存储于 RTC memory(RTC memory 在 Deep-sleep 模式下仍然可以保存数据),然后一次发送出去。


关键字:ESP32  低功耗模式 引用地址:ESP32低功耗模式

上一篇:ESP32高分辨率计时器笔记
下一篇:ESP32-mqtt笔记

推荐阅读最新更新时间:2026-03-19 13:04

ARM Cortex-M低功耗模式基本介绍
无论是嵌入式系统在电池上运行还是连接到电网,设计绿色并最小化能源消耗的系统都是大多数系统的常见要求。现代嵌入式系统中最大的能源消费者之一是微控制器,并且了解如何最大程度地减少其能源消耗至关重要。即使您查看一个微控制器家族,每个处理器架构都将具有略有不同的低功率功能。在这篇文章中,我们将研究ARM Cortex-M处理器核心中的基本低功率模式以及如何使用它们。 基本低能模式 每个基于ARM Cortex-M处理器的微控制器都至少具有三种功率模式;跑步,睡眠和深度睡眠。显然,运行模式是处理器完全供电的地方,并执行嵌入式系统设计的所有操作。睡眠模式将停止CPU时钟,但会使系统时钟,闪光灯和外围时钟运行。深度睡眠模式不仅会停止CPU时
[单片机]
STM32单片机待机模式实现低功耗测试
只测试了待机模式,待机模式实现系统的最低功耗。 原理图如下,一开始全部焊接了,其中S2用来进入待机,S1用来唤醒 测试程序为: #include“stm32f10x.h”#include“system_stm32f10x.h”voidSys_Standby(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能PWR_EnterSTANDBYMode();//进入待机(standby)模式}//系统进入待机模式voidSys_Enter_Standby(void){RCC_AP
[单片机]
STM32单片机待机<font color='red'>模式</font>实现<font color='red'>低功耗</font>测试
STM32CubeMX学习笔记(15)——电源管理(PWR)低功耗睡眠模式
一、低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗。由用户根据应用选择具体的低功耗模式,以在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡。 睡眠模式、停止模式及待机模式中,若备份域电源正常供电,备份域内的 RTC 都可以正常运行,备份域内的寄存器的数据会被保存,不受功耗模式影响。 从表中可以看到,这三种低功耗模式层层递进,运行的时钟或芯片功能越来越少,因而功耗越来越低。 模式名称 说明 进入方式 唤醒方式 对1.8V区域时钟的影响 对VDD区域时钟的影响 调压器 睡眠模式 内核停止,所有外设包括M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行 调用WF
[单片机]
STM32低功耗模式下GPIO如何配置最节能?
STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点,亲测有效(基于STM32L011芯片 LL库),可降低几百微安。 1、将未使用的GPIO 配置为模拟输入模式 GPIO始终有一个输入通道,可以是数字或模拟通道,如果不需要读取GPIO数据,则优先配置为模拟输入。 对 I/O 端口进行编程作为模拟配置时: 输出缓冲器被关闭 施密特触发器输入被禁用,因此I/O引脚的每个模拟值零消耗。施密特触发器的输出被强制为恒定值(0)。 上拉和下拉电阻被硬件关闭 将不常用的GPIO配置为模拟输出,例程如下所示(LL库): GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; 2、调节GPIO
[单片机]
详解STM32低功耗模式
低功耗模式 本文讨论下STM32低功耗模式,先看如下手册。 对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,低功耗模式有三种: 睡眠模式,CM3 内核停止,外设仍然运行,此功耗是最高的 停止模式,所有时钟都停止,此功耗较低,典型大概在20uA左右 待机模式,1.8V 内核电源关闭,此功耗最低,典型大概在2uA左右 一般做开发大多都是选择停机模式,因为停机模式功耗较低,而且任一中断或事件都能唤醒。待机模式虽然功耗最低,电流只差10个微安,但是只有特定的事件和引脚可以唤醒,实时性不是很好。 先来看下官方库进入低功耗的方式。 void PWR_EnterSleepMode(uint8_t PWR_SLEEPE
[单片机]
详解STM32<font color='red'>低功耗</font><font color='red'>模式</font>
STM32L4单片机无法进入低功耗模式的原因及解决方法
1.引言 STM32 L4 系列作为一款高性能的低功耗芯片,具有强大的运算处理性能和极低的运行和待机功耗,广泛应用于各种需要节能设备上。 2. 问题描述 客户使用 STM32L431 作为主控项目开发电子烟产品,使用了 ST 的 HAL 软件库开发。各种驱动功能正常。空闲时进入待机状态。在研发阶段测试时一切正常,但是批量生产时发现产品无法进入低功耗或者说表现为耗电过大。 3. 问题分析与定位 首先查找软件设计本身,包括各种外设的配置以及进入低功耗前的各种处理,并未发现任何异常,随即简化软件在评估板上烧录代码,然后连接电流表,功耗一切正常。经过多次验证,每次都能进入低功耗。 这样看起来就非常奇怪了,客户的硬件也没什么特殊地方。后
[单片机]
STM32L4单片机无法进入<font color='red'>低功耗</font><font color='red'>模式</font>的原因及解决方法
探究STM32低功耗的几种模式
低功耗模式 本文讨论下STM32低功耗模式,先看如下手册。 对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,低功耗模式有三种: 睡眠模式,CM3 内核停止,外设仍然运行,此功耗是最高的 停止模式,所有时钟都停止,此功耗较低,典型大概在20uA左右 待机模式,1.8V 内核电源关闭,此功耗最低,典型大概在2uA左右 一般做开发大多都是选择停机模式,因为停机模式功耗较低,而且任一中断或事件都能唤醒。待机模式虽然功耗最低,电流只差10个微安,但是只有特定的事件和引脚可以唤醒,实时性不是很好。 先来看下官方库进入低功耗的方式。 void PWR_EnterSleepMode(uint8_t PWR_SLEEPEnt
[单片机]
探究STM32<font color='red'>低功耗</font>的几种<font color='red'>模式</font>
STM32低功耗模式测试
stm32单片机低功耗模式共有3种,下来对3种低功耗进行分析测试。 先看手册上相关低功耗资料介绍: 先来分析睡眠模式: 进入睡眠模式比较简单,只需一条指令即可。唤醒睡眠模式,我们使用串口中断来唤醒,通过对串口发送数据。利用串口RXD引脚来唤醒睡眠模式,代码如下: //进入睡眠模式 任意中断唤醒 WKUP不能唤醒 void sleep_mode_wfi(void) { __WFI(); //WFI指令进入睡眠 } //进入睡眠模式 唤醒事件唤醒 WKUP 不能唤醒 void sleep_mode_wfe(void) { __WFE(); } 通过调用这两个函数就可以直接进入睡眠模式,给串口发送数据可
[单片机]
STM32<font color='red'>低功耗</font><font color='red'>模式</font>测试
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved