文章频道目录
频道首页
关于我们
ESP32——UART笔记
启明云端经验分享 | 乐鑫Light-sleep保持低功耗连接
启明云端经验分享 | 简单又高效,AT HTTP请求
以小魔方遥控器为例,来看看ESP32-C2功能如何
新品发布!繁花终了,启明7寸全能型开发主板搭载Model4核心板
为何目前智能家居主流是蓝牙和Wi-Fi而不是ZigBee?
两轮电动车仪表用启明4.3寸串口屏,大家觉得这个方案哪里需要优化
重磅新品 | Model3 全功能型7寸开发板正式发布!
ESP32-P4首秀|启明云端带你解读乐鑫P4多媒体开发板
光子课堂 | 漫画础光Linux工作流程
P4099 [HEOI2013] SAO
信访矛盾纠纷实质性化解
统一(全局)异常处理
使用Result同意返回结果对象
基于Crow的C++的WebSocket服务器
会话技术
springboot项目properties配置文件
搭建VUE前端环境
WSL安装
Docker学习记录二
electron学习
Docker使用学习一
西瓜书系列——第一章绪论
使用Mybatis-plus生成springboot项目
前端和SpringBoot解决跨域问题
【数据结构】关于无头链表插入节点
Docker打包及部署项目
分布式理论和一致性算法详解
webApi
JavaScript进阶二
JavaScript进阶一
RabbitMQ
url特殊字符转义及解决方法(附有例子)
JS做谷歌浏览器关闭事件监听
Java用Tessdata做OCR图片文字识别
关于测试系统登录操作耗时原因分析过程
不该用的代码生成器
aService调用bService合适吗?
我为什么不喜欢MyBatis-Plus
protobuf 插件(option)使用
使用 RPM 命令升级 CentOS 7 操作系统内核
Windows 操作系统使用 Tcping 命令检查目标主机端口是否开放
如何在 Docker 容器中使用 systemctl
SQLServer 2019安装配置
AI提示工程师:一个新兴的职业
C# TPL之Parallel 并行库解密
漫谈垃圾回收算法
缓存驱逐策略总结
人工智能的国际监管:六种尝试及其优缺点
人工智能如何帮助小型企业节省资金
植物大战僵尸魔改代码
Java多线程读取大文件
个人博客部署教程
Java的多态概念解释
CSS知识点学习一
CSS知识点学习二
CSS知识点学习三
CSS知识点学习四
CSS知识点学习五
HTML知识点学习一
markdown知识点
JS知识点学习二
Excel的一些快捷键
JS知识点学习一
c++指针
开启五月新篇章—瓜分礼物沾沾喜气~
44道接近2w字Redis面试题,问麻了
HTTP协议这一篇就够了
electron安装【纯详细版】
字节跳动最全Git应用及面试问题
TypeScript与JavaScript
响应式布局
正则表达式
SAT问题及其解
c++编程规范------demo1
寒假总结
素数查找
git学习
Windows硬盘管理小技巧
python打包
jdk8 环境配置
01 背包问题(动态规划)
筛素数
简单的递归(DFS)
mysql 5.7 安装配置教程
宝塔部署wordpress(手动版)
学习通信原理之——频谱/功率谱/功率谱密度(MATLAB演示)
linked-list-cycle-ii (数学证明)
一个专科生的2022年终总结——默默努力,成为更好的自己
Django使用ORM进行统计查询技巧
bpmn-js: 自定义渲染器 CustomRenderer
类(1)
调试器优化、条件语句、头文件
VisualStudio的编译与链接
什么是Scrum的3355
01.JDK8之前的时间API
08.最终一致性事务模型
07.强一致性事务模型
06.分布式事务入门
05.Spring事物原理
启明云端经验分享 | 乐鑫Light-sleep保持低功耗连接
收藏
0
fhxxkj 最近修改于 2024-11-18 22:31:50

文本颜色

背景颜色

插入画图

ESP32 是设计用来应对移动设备、可穿戴电子设备和物联网(IoT)芯片,作为一款超低功耗芯片,具有许多特定,比如精细的时钟门控、节能模式和动态电压调整等。

 

在使用超低功耗的IoT传感器Hub应用时,ESP32只有在某些特定情况下才会被周期性唤醒,能够极大地降低消耗。通过调整射频放大器的输出功率,还能实现通信距离、数据传输速度和功耗的最佳平衡。

 

ESP32先进的电源管理技术,可以在不同的功耗模式之间切换,乐鑫目前的ESP系列芯片都支持三种低功耗模式:

  • Modem-sleep 模式:CPU 可运行,时钟频率可配置。Wi-Fi 及 Bluetooth LE 的基带和射频关闭, 但 Wi-Fi 或 Bluetooth LE 可保持连接。

  • Light-sleep 模式:CPU 暂停运行。任何唤醒事件(MAC、主机、RTC 定时器或外部中断)都会唤 醒芯片。Wi-Fi 或 Bluetooth LE 可保持连接。

  • Deep-sleep 模式:CPU 和大部分外设都会掉电,只有 RTC 存储器处于工作状态。Wi-Fi 连接数据 存储在 RTC 中。RTC 时钟定时器或RTC GPIO 可以将芯片从 Deep-sleep 模式中唤醒。

 

01

 

02

03

 

04

不同模式下的ESP32功能框图

 

其中在 Modem-sleep 模式和 Light-sleep 模式下WiFi、蓝牙可以保持连接(详细功耗数据可以参考规格书)以ESP32为例,功耗可以参考下表

 

Light-sleep 模式下保持连接

硬件准备

ESP32/ESP32C3/ESP32S3系列模组既支持外置 32.768 kHz 的时钟振荡器作为 RTC 睡眠时钟,也支持外 部激励信号(如有源晶振)作为 RTC 睡眠时钟。外置 32.768 kHz 晶振的电路如下图所示:

 

32.768 kHz 晶振选择要求:

  • 等效内阻 (ESR) ⩽ 70 KΩ。

  • 两端负载电容值根据晶振的规格要求进行配置。

  • 并联电阻 R18 用于偏置晶振电路,电阻值要求 5 MΩ < R18 ⩽ 10 MΩ。

  • ESP32-D0WD-V3 外接 32.768 kHz 晶振时,并联的电阻必须上件;ESP32 系列其他芯片建议预留。

 

软件配置

编译时可使用 CONFIG_PM_ENABLE 选项启用电源管理功能。

 

启用电源管理功能将会增加中断延迟。额外延迟与多个因素有关,例如:CPU频率、单/双核模式、是否需要进行频率切换等。CPU 频率为 240 MHz 且未启用频率调节时,最小额外延迟为0.2 us;如果启用频率调节,且在中断入口将频率由40 MHz 调节至 80 MHz,则最大额外延迟为 40 us。

 

通过调用 esp_pm_configure()函数可以在应用程序中启用动态调频(DFS) 功能和自动Light-sleep 模式。此函数的参数 esp_pm_config_t 定义了频率调节的相关设置。在此参数结构中,需要初始化以下三个字段:

  • Max_freq_mhz:最大CPU 频率 (MHz),即获取 ESP_PM_CPU_FREQ_MAX 锁后所使用的频率。该字段通常设置为 CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ。

  • Min_freq_mhz:最小CPU 频率 (MHz),即仅获取 ESP_PM_APB_FREQ_MAX 锁后所使用的频率。该字段可设置为晶振 (XTAL) 频率值,或者 XTAL 频率值除以整数。注意,10 MHz 是生成 1 MHz 的 REF_TICK 默认时钟所需的最小频率。

  • Light_sleep_enable:没有获取任何管理锁时,决定系统是否需要自动进入Light-sleep 状态 (true/false)。

 

如果在menuconfig中启用了CONFIG_PM_DFS_INIT_AUTO选项,最大 CPU 频率将由CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ设置决定,最小 CPU 频率将锁定为 XTAL 频率。

 

需要注意的是:

自动 Light-sleep 模式基于FreeRTOS Tickless Idle功能,因此如果在menuconfig 4中没有启用CONFIG_FREERTOS_USE_TICKLESS_IDLE选项,在请求自动 Light-sleep 时,esp_pm_configure() 将会返回 ESP_ERR_NOT_SUPPORTED错误。Light-sleep 状态下,外设设有时钟门控,不会产生来自GPIO 和内部外设的中断。睡眠模式 文档中所提到的唤醒源可用于从 Light-sleep 状态触发唤醒。

 

Menuconfig配置

蓝牙还需要配置 Modem-sleep 相关配置

具体可以参考ESP-IDF下的 power_save 例程

文本颜色

背景颜色

内容大纲
批注笔记
启明云端经验分享 | 乐鑫Light-sleep保持低功耗连接
公开批注
|
我的批注
划词添加批注或者你想说的话~
ArticleBot
AI文档
主页
文章
会议室
Git管理
云文档