ESP32 S3低功耗设计

1. 电源域介绍

在这里插入图片描述

2. 功耗模式介绍

ESP32-S3 有一个先进的电源管理单元 (PMU),可以灵活地给芯片的不同电源域供电,在芯片性能、功耗和唤醒延迟之前取得最佳平衡。
睡眠模式下,大多数电源域已关闭。此时, ESP32-S3 中集成的超低功耗协处理器 (ULP) 仍可运行,从而实现极低的功耗。

配置 PMU 的程序较为复杂。为针对典型场景简化电源管理, ESP32-S3 具有以下预设功耗模式,可给不同电源域组合供电:

  • Active 模式 – CPU、 RF 电路和所有外设均上电。芯片可以处理数据、接收、发射和侦听信号。
  • Modem-sleep 模式 – CPU 上电,时钟频率下降。 RF 电路在需要时间歇性开启,因此无线可保持连接。
  • Light-sleep 模式 – CPU 停止工作,可选择上电。 RTC 外设及 ULP 协处理器可由定时器间歇性唤醒。芯片可由所有唤醒机制唤醒,包括 MAC、 RTC 定时器或外部中断。无线可保持连接。部分数字外设可选择关
    闭。
  • Deep-sleep 模式 – 仅 RTC 上电。无线连接数据存储在 RTC 存储器中。

3. 超低功耗协助处理器(ULP)

3.1. ULP

超低功耗协处理器 (ULP, Ultra-Low-Power coprocessor) 是一种功耗极低的处理器设备,可在芯片进入 Deepsleep 时保持上电,允许开发者通过存储在 RTC 存储器中的专用程序,访问 RTC 外设、内部传感器及 RTC 寄存器。在对功耗敏感的场景下,主 CPU 处于睡眠状态以降低功耗,协处理器可以由协处理器定时器唤醒,通过控制 RTC GPIO、 RTC I2C、 SAR ADC、温度传感器 (TSENS) 等外设监测外部环境或与外部电路进行交互,并在达到唤醒条件时主动唤醒主 CPU。
在这里插入图片描述
ESP32-S3 搭载了基于有限状态机 (FSM) 实现的 ULP 协处理器(以下简称 ULP-FSM)和基于 RISC-V 指令集的ULP 协处理器(以下简称 ULP-RISC-V),用户可根据需求灵活选择。

3.2. 特性

  • 可访问最多 8 KB SRAM RTC 慢速内存,用于储存指令和数据
  • 时钟采用 17.5 MHz RTC_FAST_CLK
  • 支持正常模式和 Monitor 模式
  • 可唤醒 CPU 或向 CPU 发送中断
  • 可访问外设、内部传感器及 RTC 寄存器

ULP-FSM 和 ULP-RISC-V 不能同时工作,用户只能选择其中一个作为 ESP32-S3 的超低功耗协处理器。 ULP-FSM与 ULP-RISC-V 特性比较如下:
在这里插入图片描述
ESP32-S3 协处理器的功能灵活,可以通过 RTC 寄存器控制 RTC 域中的模块。协处理器可独立于 CPU 运行,是 CPU 的有力补充,甚至可以在一些功耗敏感的设计中取代 CPU。 ESP32-S3 协处理器的基本架构可见图下图:
在这里插入图片描述

3.3. ULP睡眠和唤醒流程

ESP32-S3 的协处理器经过专门设计,无论 CPU 是否处于休眠状态,均可独立于 CPU 运行。
在典型场景中,为了降低功耗,系统可进入 Deep-sleep 模式。系统进入睡眠模式前需完成以下操作:

  1. 将协处理器需要执行的程序载入到 RTC 慢速内存;
  2. 配置 RTC_CNTL_COCPU_SEL 寄存器,选择协处理器;
  • 0:选择使用 ULP-RISC-V
  • 1:选择使用 ULP-FSM
  1. 如果选择使用 ULP-RISC-V,则还需要:
  • 置位再复位 RTC_CNTL_COCPU_CLK_FO;
  • 置位 RTC_CNTL_COCPU_CLKGATE_EN。
  1. 配置 RTC_CNTL_ULP_CP_TIMER_1_REG 寄存器来设置硬件定时器的唤醒间隔时间;
  2. 选择定时器使能方式:
  • 软件使能:软件置位 RTC_CNTL_ULP_CP_SLP_TIMER_EN;
  • RTC GPIO 使能:软件配置 RTC_CNTL_ULP_CP_GPIO_WAKEUP_ENA 开启通过 RTC GPIO 使能硬件定时器选项。
  1. 配置系统进入睡眠状态,主 CPU 休眠。

在 Deep-sleep 模式下:

  1. 硬件定时器周期性地将低功耗控制器置于 Monitor 状态,然后唤醒协处理器。
  2. 协处理器唤醒后执行一些必要操作,例如通过低功耗传感器监控芯片外部环境等操作;
  3. 操作完成后,系统返回 Deep-sleep 模式;
  4. 协处理器进入休眠,等待下一次唤醒。

进入 Monitor 模式后,协处理器的唤醒和睡眠流程见下图:
在这里插入图片描述

  1. 使能硬件定时器,定时器开始计数;

  2. 硬件定时器过期,唤醒协处理器。协处理器进入 Run 状态,执行预先烧写的程序;

  3. 协处理器执行 HALT 相关操作进入 HALT 状态;协处理器程序停止运行开始休眠。定时器再次启动,重复以上流程;
    • ULP-RISC-V 的 HALT 操作:置位寄存器 RTC_CNTL_COCPU_DONE;
    • ULP-FSM 的 HALT 操作:执行 HALT 指令。

  4. 通过协处理器程序或软件关闭硬件定时器,协处理器将不再进入 Monitor 状态。
    • 软件关闭:软件清零 RTC_CNTL_ULP_CP_SLP_TIMER_EN;
    • RTC GPIO 关闭:软件清零 RTC_CNTL_ULP_CP_GPIO_WAKEUP_ENA,并置位 RTC_CNTL_ULP_CP_GPIO_WAKEUP_CLR。

    注:硬件定时器的关闭方法需要与使能方法一致。

上述信号与寄存器之间的关系可见图 2-5。
在这里插入图片描述

4. 低功耗软件框架

低功耗软件框架部分代码在IDF文件目录:Espressif\frameworks\esp-idf-v5.1.2\components\esp_pm下,注意包含以下几个部分:

  • PM_TRACE
  • PM_LOCK
  • PM_IMPL

源码实现方式,可直接阅读源码,原理不并不复杂。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值