深入了解ESP32睡眠模式及其对应功耗

毫无疑问,ESP32是许多WiFi/MCU Socs强有力的竞争者,在性能和价格上具有绝对优势。但是,根据它的使用方式,ESP32可以是对功耗要求较高的设备。

当您的IoT项目由家用市电提供电源时,您不会太在乎功耗。但是,如果您要使用电池为项目供电,则需要计算每个mA电流。

这里的解决方案是利用其一种睡眠模式来减少ESP32的功耗使用情况。实际上,这是一个很好的策略,可以显著提高不需要一直活跃的项目的电池寿命。

ESP32芯片内部

要了解ESP32如何实现节能,首先我们需要知道芯片内部的内容。下图显示了ESP32芯片的功能框图。

深入了解ESP32睡眠模式及其对应功耗

ESP32芯片的核心是一个双核32位微处理器,具有448 kb的ROM、520 kb的SRAM和4MB的存储器。

该芯片还包含一个WiFi模块、一个蓝牙模块、一个加密加速器(专门设计用于执行加密操作的协调员)、一个RTC模块和许多外围设备。

ESP32电源模式

ESP32的高级电源管理提供了五种可配置的电源模式。根据功耗要求,芯片可以在不同的功率模式之间切换。这些模式是:

●    活动模式

●    调制解调器睡眠模式

●    轻度睡眠模式

●    深度睡眠模式

●    休眠模式

每种模式都有自己的独特功能和节能。

ESP32活动模式

正常模式也称为活动模式。在这种模式下,芯片的所有功能都保持活跃。

由于活动模式始终运行所有操作(尤其是WiFi模块、处理核心和蓝牙模块),因此操作芯片需要超过240mA的电流。还可以观察到,如果您一起使用WiFi和蓝牙,有时会出现高功率尖峰(高达790mA)。

深入了解ESP32睡眠模式及其对应功耗

显然,这是最低效率的模式,并消耗最多的电流。因此,如果您想节省电源,则必须利用另一种功耗模式来禁用未使用的功能。


ESP32调制解调器睡眠

在调制解调器睡眠模式下,除了WiFi、蓝牙和射频外,其他所有内容都是活跃的。它还可以使CPU运行,并且时钟是可配置的。

在这种模式下,芯片在慢速下消耗了约3mA,高速消耗20mA。

深入了解ESP32睡眠模式及其对应功耗

为了使WiFi/蓝牙连接保持活动,Wi-Fi、蓝牙和射频以预定义的间隔唤醒。这被称为关联睡眠模式(Association Sleep Pattern)。

在这种睡眠方式中,ESP32在活动模式和调制解调器睡眠模式之间切换。为此,ESP32使用DTIM信标机制在站模式下连接到路由器。

为了节省功耗,ESP32停用了两个DTIM信标间隔之间的Wi-Fi模块,并在下一个信标到达之前自动醒来。睡眠时间由路由器的DTIM信标间隔时间决定,通常为100ms至1000ms。


ESP32轻度睡眠

轻度睡眠类似于Modem睡眠,芯片也遵循其中的关联睡眠方式。

唯一的区别是,在轻度睡眠模式下,数字外围设备,大多数RAM和CPU都是时钟门控。

在轻度睡眠模式下,CPU通过关闭其时钟脉冲而暂停,而RTC和ULP-CoproCessor保持活跃。

深入了解ESP32睡眠模式及其对应功耗

在进入轻度睡眠模式之前,ESP32将其内部状态存储在RAM中,并在从睡眠中醒来时恢复操作。这被称为完全保留(Full RAM Retention)。

一旦配置了唤醒源,使用esp_light_sleep_start()函数进入轻度睡眠。


ESP32深度睡眠

在深度睡眠模式下,CPU、大多数RAM和所有数字外围设备都可以关闭。芯片唯一保持运行的部分是:

●    ULP协处理器

●    RTC控制器

●    RTC外围设备

●    RTC快速而缓慢的内存

芯片将消耗约0.15 mA(如果ULP协处理器打开)至10µA。

深入了解ESP32睡眠模式及其对应功耗

在深度睡眠模式下,主CPU被关闭,而Ultra­Low­Power(ULP)协处理器可以采用传感器读数,并在必要时唤醒CPU。这种睡眠模式称为ULP传感器监控模式。这对于设计应用程序需要由外部事件或计时器或两者组合唤醒的应用程序很有用,同时保持最少的功耗。

与CPU一起,芯片的主要内存也被禁用。因此,存储在该内存中的所有内容被删除且都无法访问。

由于RTC内存一直供电,因此即使在深度睡眠期间也保留了其内容,并且可以在芯片唤醒后检索。这就是为什么芯片在进入深度睡眠之前将Wi-Fi和蓝牙连接数据存储在RTC内存中的原因。

如果要在重新启动后使用数据,请通过使用RTC_DATA_ATTR属性来定义全局变量,将其存储在RTC内存中。例如,RTC_DATA_ATTR int myVar = 0;

从深度睡眠中出来后,芯片通过复位重新启动,并从一开始就开始执行程序。

与其他睡眠模式不同,系统无法自动进入深度睡眠模式。 esp_deep_sleep_start()函数用于配置唤醒源后立即进入深度睡眠。


ESP32休眠模式

与深度睡眠模式不同,在休眠模式下,芯片会禁用内部8 MHz振荡器以及ULP处理器。 RTC恢复内存也已关闭,这意味着我们在休眠模式下无法保留任何数据。

除了一个RTC计时器(在慢速时钟)和一些RTC GPIO外,其他所有内容都被关闭。他们负责从休眠模式中唤醒芯片。

深入了解ESP32睡眠模式及其对应功耗


这进一步降低了功耗。在休眠模式下芯片仅消耗约2.5μa。如果您要构建一个不需要一直活跃的项目,则此模式特别有用。

- 本文内容来自网络,如有侵权,请联系本站处理。

2023-07   阅读(47)   评论(0)
 标签: 创客 ESP32

涨知识
AMR

AMR是Autonomous Mobile Robot的缩写,即自主移动机器人,是集环境感知,动态决策规划,行为控制与执行等多功能于一体的综合系统。

评论:
相关文章
Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


Arduino-ESP32文件系统全解析:SPIFFS、LittleFS、SD卡操作

Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。


ESP32-P4-WIFI6开发板

ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。


ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。