陈拓翻译 2022/05/30-2022/05/30

原文 https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/

毫无疑问,ESP32是许多WiFi/MCU SOC的有力竞争对手,在性能和价格上都经常击败它。但是,根据它所处的状态,ESP32可能是一款相对耗电的设备。

当您的物联网项目由墙上的插头供电时,您往往不会太在意功耗。但如果你打算用电池为你的项目供电,每一毫安都很重要。

这里的解决方案是通过利用ESP32的一种睡眠模式来减少其功耗。对于不需要一直处于活动状态的项目来说,这确实是一个大大延长电池寿命的好策略。

什么是ESP32睡眠模式?

ESP32睡眠模式是一种省电状态,ESP32不使用时可以进入该状态。ESP32的状态保持在RAM中。当ESP32进入睡眠模式时,任何不需要的数字外围设备的电源都会被切断,而RAM接收到的电源刚好足以使其保留数据。

ESP32芯片内部

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

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

它还包含WiFi模块、蓝牙模块、加密加速器(专门用于执行加密操作的协处理器)、RTC模块和许多外围设备。

ESP32电源模式

由于ESP32的高级电源管理,它提供了5种可配置的电源模式。根据电源要求,芯片可以在不同的电源模式之间切换。模式包括:

  • 活动模式
  • 调制解调器睡眠模式
  • 浅睡眠模式
  • 深度睡眠模式
  • 休眠模式

每种模式都有其独特的功能和节能功能。让我们一个接一个地看看。

ESP32激活模式

正常模式也称为激活模式。在此模式下,芯片的所有功能都处于激活状态。

由于主动模式使一切(尤其是WiFi模块、处理核心和蓝牙模块)始终保持开启状态,因此芯片需要240mA以上的电流才能工作。我们还观察到,如果同时使用WiFi和蓝牙功能,有时会出现高功率峰值(最大为790mA)。

如果您查看ESP32数据表,在射频工作的情况下,有功功率模式下的功耗如下:

显然,这是最低效的模式,将消耗最多的电流。因此,如果我们想节省电力,我们必须在不使用时禁用它们(通过利用其他电源模式之一)。

ESP32调制解调器睡眠

在调制解调器睡眠模式下,一切都处于活动状态,而只有WiFi、蓝牙和无线通信被禁用。CPU也可运行,时钟可配置。

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

为了保持WiFi/蓝牙连接处于活动状态,CPU、Wi-Fi、蓝牙和无线通信将按预定义的时间间隔唤醒。这就是所谓的关联睡眠模式。

在此睡眠模式期间,电源模式在活动模式和调制解调器睡眠模式之间切换。

ESP32只有在以Station模式连接到路由器时才能进入调制解调器睡眠模式。ESP32通过DTIM信标机制保持与路由器的连接。

为了省电,ESP32在两个DTIM信标间隔之间禁用Wi-Fi模块,并在下一个信标到达之前自动唤醒。

睡眠时间由路由器的DTIM信标间隔时间决定,通常为100ms到1000ms。

什么是DTIM信标机制?

DTIM是英文Delivery Traffic Indication Message缩写。

在DTIM信标(DTIM-Beacon)机制中,接入点(AP)/路由器定期发送信标帧。每个帧包含有关网络的所有信息。它用于宣布无线网络的存在并同步所有连接的成员。

ESP32轻度睡眠

轻度睡眠的工作模式与调制解调器睡眠的工作模式相似。该芯片还遵循关联睡眠模式。

区别在于,在轻睡眠模式下,数字外围设备、大多数RAM和CPU都是时钟选通的。

什么是时钟选通?

时钟选通是一种降低动态功耗的技术。

它通过关闭时钟脉冲来禁用部分电路,这样电路中的触发器就不必切换状态。切换状态是需要消耗功率的,如果不切换,功耗将变为零。

在轻度睡眠模式下,CPU通过关闭其时钟脉冲来暂停,而RTC和ULP协处理器保持活动状态。这导致功耗低于调制解调器睡眠模式(约0.8mA)。

在进入轻度睡眠模式之前,ESP32保持其内部状态,并在退出睡眠后恢复操作。它被称为全RAM保留。

esp_light_sleep_start()函数可用于在配置唤醒源后进入轻度睡眠。

ESP32深度睡眠

在深度睡眠模式下,CPU、大部分RAM和所有数字外围设备都会断电。芯片上唯一保持通电的部分是:RTC控制器、RTC外围设备(包括ULP协处理器)和RTC内存(慢和快)。

芯片功耗约为0.15 mA(如果ULP协处理器已通电)至10µA。

在深度睡眠模式下,主CPU断电,而ULP协处理器根据传感器的测量数据进行传感器测量并唤醒主系统。这种睡眠模式称为ULP传感器监测模式。

除了CPU之外,芯片的主存储器也被禁用。因此,存储在该内存中的所有内容都将被擦除,无法访问。

但是,RTC内存保持通电状态。因此,它的内容在深度睡眠时被保存下来,在我们叫醒芯片后可以取回。这就是原因,该芯片在禁用Wi-Fi和蓝牙连接数据之前,会将其存储在RTC内存中。

因此,如果要在重新启动时使用数据,请通过定义具有RTC_DATA_ATTR属性的全局变量将其存储到RTC内存中。例如,RTC_DATA_ATTR int bootCount = 0;

在深度睡眠模式下,除RTC模块外,整个芯片的电源被切断。因此,任何不在RTC恢复内存中的数据都将丢失,因此芯片将通过重置重新启动。这意味着程序再次从头开始执行。

提示

ESP32支持在深度睡眠结束后运行深度睡眠唤醒存根stub。该函数在芯片唤醒后立即运行–在任何正常初始化之前,引导加载程序代码运行。唤醒存根运行后,芯片可以恢复睡眠或继续正常启动。

stub的官方说明:

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/deep-sleep-stub.html

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

默认情况下,ESP32将自动关闭唤醒源不需要的外围设备的电源。但您可以选择关闭/保持哪些外围设备。有关更多信息,请查看API文档:

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/

要了解有关ESP32深度睡眠及其唤醒来源的更多信息,请访问以下教程。

https://lastminuteengineers.com/esp32-deep-sleep-wakeup-sources/

ESP32深度睡眠实验

这里有我的一篇实验文章《ESP32深度睡眠电流怎样低于10uA》

https://zhuanlan.zhihu.com/p/521640890

https://blog.csdn.net/chentuo2000/article/details/125033711?spm=1001.2014.3001.5502

ESP32休眠模式

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

除慢时钟上只有一个RTC计时器和一些RTC GPIO处于活动状态外(他们负责将芯片从休眠模式唤醒),其他所有功能均已关闭。

这进一步降低了功耗。该芯片仅在休眠模式下消耗约2.5µA。

了解ESP32睡眠模式及其功耗相关推荐

  1. ESP32 (Sleep Modes)-睡眠模式学习(8)

    提示:本博客作为学习笔记,有错误的地方希望指正 文章目录 一.ESP32 Sleep Modes概述 1.Sleep模式 1.1.1. Light-sleep 模式 1.1.2. Deep-sleep ...

  2. 设备功耗计算专题《低功耗实战篇,ESP8266睡眠模式1@深度睡眠Deep-sleep》

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

  3. ESP32 深度睡眠模式功耗测试

    ESP32 深度睡眠模式功耗测试 ESP32 拥有 18 个 RTC IO 和 10 个 TouchPad, 每一个 RTC IO 和 TouchPad 经过配置都可以将芯片从 deep_sleep ...

  4. ESP32 学习笔记(二十二)睡眠模式

    睡眠模式 睡眠模式 概述 WiFi/BT 和睡眠模式 唤醒源 定时器 Touch pad External 唤醒(ext0) External 唤醒(ext1) ULP 协处理器唤醒 GPIO 唤醒( ...

  5. SYD8801低功耗【深度睡眠模式】【浅度睡眠模式】【进入睡眠模式后要等待硬件进入睡眠】【内部上拉电阻对功耗的影响】【测试低功耗步骤】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  6. ESP32低功耗模式

    低功耗模式 ESP32可以进入light-sleep和deep-sleep模式,还能进入一个用于相对较低功耗运行的modem-sleep模式 注意:进入低功耗模式前,应用程序必须关闭wifi和蓝牙设备 ...

  7. STM32CubeMX学习笔记(15)——电源管理(PWR)低功耗睡眠模式

    一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗.由用户根据应用选择具体的低功耗模式,以在低功耗.短启动时间和可用唤醒源之间寻求最佳平衡. 睡眠模 ...

  8. stm32芯片休眠模式_STM32睡眠模式低功耗(停止模式)

    目前stm32已经非常流行了,那么本文讨论下stm32低功耗模式,不多说先上手册内容! 这是英文文档 不好看懂是吧,下面看中文文档! 我对比了 STM32F0 和 STM32F1 两者进入低功耗是一样 ...

  9. ESP8266模块睡眠模式

    当我们使用电池给esp模块进行供电的时候,为了节省电量.我们要实际应用的时候,这个问题就需要去解决. 而这个问题的解决方法就是使用esp模块的睡眠模式 睡眠模式的类型 共有三种不同的睡眠模式:调制解调 ...

最新文章

  1. docker容器网络 - 同一个host下的容器间通信
  2. VALID SAME
  3. RabbitMQ负载均衡(2)——HAProxy
  4. C#中利用Socket实现网络语音通信[初级版本]
  5. php数组转化js数组格式化,php数组转换成js数组
  6. java线程 属性_Java 线程基础
  7. 【数据分析】脑图简介数据分析
  8. MySql 数据库安装、环境变量配置 以及 本地连接
  9. [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.24
  10. 挂机宝是服务器还是虚拟主机,挂机宝属于虚拟主机吗
  11. hash算法_Win10_64 默认应用的UserChoice Hash算法学习
  12. mysql数据库密码怎么修改_MySQL数据库密码如何修改?
  13. codebook码本算法
  14. Linux网卡驱动(4)—DM9000网卡驱动程序完全分析
  15. 【Android】关于ARouter转场动画的问题
  16. java 去系统运行时间_java 如何获取应用的运行时间
  17. 35岁后,互联网数据分析人的出路在哪里?
  18. 3、基于注解的IoC装配与依赖注入
  19. ssh 提示Connection closed by * 的解决方案
  20. 对展开运算符和object.assign()的理解

热门文章

  1. 自动出现的弹出窗口Js插件
  2. 十五款固态硬盘收获季节展示
  3. Linux下Vim的常用命令操作大全
  4. ZT 计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48
  5. Android 监听手机按下Home键
  6. SOFR, So Far ... So Good?
  7. 美团html页面代码,html+css+js制作美团官网
  8. Win11磁盘扩展卷变成灰色无法点击解决方法
  9. oracle gho系统吗,系统镜像GHO、WIM、ESD几种格式的区别
  10. nginx怎么防御DDOS攻击