ESP 系列的产品 ULP 协处理器的应用

参考文档:

  • 《ESP32-S2 技术参考手册》 中 “1. 超低功耗协处理器 (ULP)” 章节
  • 《ESP32-S3 技术参考手册》 中 “2 超低功耗协处理器 (ULP­FSM, ULP­RISC­V)” 章节
  • 《ESP32-C6 技术参考手册》 中 “3 低功耗处理器” 章节
  • ULP 协处理器编程
  • ULP RISC-V 协处理器编程
  • Programming ULP FSM coprocessor using C macros (legacy)
  • ESP32-S3 ULP coprocessor instruction set
  • ULP 例程:esp-idf/examples/system/ulp
  • ULP FSM 例程:esp-iot-solution/examples/ulp_examples
  • 什么是 ULP 超低功耗协处理器?
  • 支持 ULP (超低功耗)协处理器的产品有哪些?
  • ULP-RISC-V 协处理器与 ULP-FSM 协处理器的区别
  • ULP-FSM 与 ULP-RISC-V 支持的具体特性
  • ESP32-S2 、ESP32-S3 与 ESP32-C6 的 ULP-FSMULP­-RISC­V 协处理器对比
  • ULP-RISC-V 协处理器工作流程
  • ULP-RISC-V 协处理器的具体应用
  • ULP 应用与 DeepSleep 的功耗对比

什么是 ULP (Ultra Low Power)超低功耗协处理器?


ULP 超低功耗协处理器 (ULP, Ultra-Low-Power coprocessor) 是一种功耗极低的处理器设备,可在芯片进入 Deepsleep 时保持上电,允许开发者将 ULP 协处理器的程序存放在 RTC 慢速存储器中,使其能够在 Deep-sleep 模式下访问 RTC 外设、内部传感器及 RTC 寄存器。在对功耗敏感的场景下,主 CPU 处于睡眠状态以降低功耗,ULP 协处理器可以由协处理器定时器唤醒,通过控制 RTC GPIO、RTC I2C、SAR ADC、温度传感器 (TSENS) 等外设监测外部环境或与外部电路进行交互,并在达到唤醒条件时主动唤醒主 CPU。

无论主 CPU 是否处于休眠状态,ULP 协处理器可独立于主 CPU 运行,是主 CPU 的有力补充,甚至可以在一些功耗敏感的设计中取代 主CPU。


支持 ULP (超低功耗)协处理器的产品有哪些?


产品ESP8266ESP32ESP32-S2ESP32-S3ESP32-C2ESP32-C3ESP32-C5ESP32-C6ESP32-H2
ULPNOYesYesYesNONOYesYesNO

ULP-RISC-V 协处理器与 ULP-FSM 协处理器的区别


目前,我们的产品提供了两种类型的 ULP 协处理器,分别是:

  • ULP-RISC-V (发音为"risk five")协处理器:基于 RISC-V 指令集 (ULP-RISC-V)
  • ULP-FSM (Finite State Machine)协处理器:基于有限状态机 FSM 架构 (ULP-FSM)
产品ESP32ESP32-S2ESP32-S3ESP32-C5ESP32-C6
ULP_FSMYesYesYesNONO
ULP_RISC-VNOYesYesYesYes

注意:两个 ULP 协处理器不能同时使用。用户只能选择其中一个 ULP 超低功耗协处理器工作。


ULP-FSM 与 ULP-RISC-V 的特性


ULP-FSM 协处理器不支持高级语言,用户需使用 ULP-FSM 专门指令集进行编程(汇编语言编写(必须使用 .S 扩展名))
在这里插入图片描述

  • ULP-­FSM 协处理器具有以下特性:

    • 支持常用指令,包括运算、跳转、控制等
    • 支持传感器专用指令
    • 支持被主 CPU、专用定时器、RTC GPIO 启动

ULP-RISC-V 协处理器支持用户使用 C 语言(或汇编语言)编写程序,然后使用编译器(基于 GCC 的 RISC-V 工具链)将程序编译成 RV32IMC 标准指令码。
在这里插入图片描述

  • ULP­-RISC­V 协处理器具有以下特性:
    • 支持 RV32IMC 指令集
    • 32 个 32 位通用寄存器
    • 32 位乘除法器
    • 支持中断
    • 支持被主 CPU、专用定时器、RTC GPIO 启动

ESP32-S2 、ESP32-S3 与 ESP32-C6 的 ULP-FSMULP­-RISC­V 协处理器对比

在这里插入图片描述


ULP-RISC-V 协处理器工作流程

在这里插入图片描述

  • 编写 ULP 协处理器运行的用户程序
  • 使用 ulp_riscv_load_binary() 将程序下载到 ULP 存储器中,即 RTC_SLOW_MEM
  • 使用 ulp_set_wakeup_period() 设置 ULP 定时器唤醒时间周期,即通过 ULP 定时器定时唤醒 ULP­-RISC­V 协处理器
  • 使用 ulp_riscv_run 运行 ULP­-RISC­V 协处理器的用户程序。
  • 使用 esp_sleep_enable_ulp_wakeup() 使能 ULP 唤醒源,用于唤醒 DeepSleep 模式

在这里插入图片描述

  • 使用 esp_deep_sleep_start() 进入 deepsleep 模式

ULP-RISC-V 协处理器的具体应用

ESP32-S2 与 ESP32-S3 的 ULP-RISC-V 协处理器应用例程

  • esp-idf/examples/system/ulp/ulp_riscv/gpio

通过检测 RTC GPIO 的电平状态来唤醒 Deepsleep

  • esp-idf/examples/system/ulp/ulp_riscv/gpio_interrupt

这里的程序看上去使用 RTC GPIO 中断来唤醒 ULP-RISC-V 协处理器的,但其实 ULP-RISC-V 协处理器只有一个唤醒源就是 ULP Timer,但是这个 ULP Timer 可以通过软件设置触发或者 RTC GPIO 中断触发,也就是整个唤醒过程是 RTC GPIO 中断 --> ULP Timer --> ULP ULP-RISC-V 协处理器,可以理解为是利用 RTC GPIO 间接唤醒了 ULP ULP-RISC-V 协处理器

  • esp-idf/examples/system/ulp/ulp_riscv/adc

通过检测 RTC ADC 通道的电压大小,当电压达到软件设置的 ADC 阈值时将唤醒 Deepsleep

  • esp-idf/examples/system/ulp/ulp_riscv/uart_print

演示了对 ULP-RISC-V 协处理器进行编程以对 UART TX 线进行位控制。即使主 CPU 处于深度睡眠状态,也可用于直接记录来自 ULP 的输出。

  • esp-idf/examples/system/ulp/ulp_riscv/i2c

使用 ULP 协处理器在低功耗模式下模拟 I2C 主机读取 BMP180 温度传感器和压力传感器的数据。定期测量 BMP180 传感器的温度和压力值,并在值高于某个阈值时唤醒主 CPU。
适用场景:

  • 健康监测:比如心率、血氧传感器,当数据高于某个阈值时唤醒 CPU,进行上报,以检测身体状态。
  • 消防安全:比如烟雾监测传感器,当烟雾达到一定浓度时,唤醒 CPU 进行报警。
  • 工业环境:比如恒温车间,通过温度传感器监测环境温度,当温度高于某个阈值时,唤醒 CPU 进行报警。
  • 畜牧养殖:比如孵化小鸡,通过光照传感器监测光照强度,当光照强度高于某个阈值时,唤醒 CPU 停止外部光照
  • esp-idf/examples/system/ulp/ulp_riscv/touch

对 ULP RISC-V 协处理器进行编程以读取触摸板传感器。

  • 水位监测:比如鱼缸应用,通过设置不同高度的触摸滑条,来监测水位,当水位到达设定的触摸滑条高度时,唤醒 CPU 停止外部供水。
  • esp-idf/examples/system/ulp/ulp_riscv/ds18b20_onewire

通过 RTC GPIO 模拟 OneWire 协议来读取 DS18B20 温度传感器的数据,当数据超过设定的限制时,唤醒 CPU 进行数据上报。

ESP32-C6 的 ULP-RISC-V 协处理器应用例程

  • esp-idf/examples/system/ulp/lp_core/gpio

  • esp-idf/examples/system/ulp/lp_core/lp_i2c

  • LP_I2C 和 I2C 的功能差异如下:

    在这里插入图片描述

  • LP I2C 可以在 HP CPU 下运行,使用 LP I2C 只需要注意:

    • 硬件上需要使用 LP I2C 管脚
    • lp_i2c_num 设置为 LP_I2C_NUM_0
    • LP I2C 默认使用 RC_FAST_CLK,如果需要改为 XTAL_CLK ,则在 i2c_config_t 里配置 .soc_periph_i2c_clk_src_t = I2C_CLK_SRC_XTAL; 即可。
    • LP I2C 相关的 API 带有 LP 前缀的,比如 i2c_master_init()i2c_slave_init()I2C 可使用;lp_core_i2c_master_init()LP I2C 可使用。
  • esp-idf/examples/system/ulp/lp_core/lp_uart/lp_uart_echo
  • esp-idf/examples/system/ulp/lp_core/lp_uart/lp_uart_print

ESP32-C6 的 UART 控制器LP UART 控制器的特性区分见下表:

在这里插入图片描述

  • LP UART 可以在 HP CPU 下运行,使用 LP UART 只需要注意:
    • 硬件上需要使用 LP UART 管脚
    • lp_uart_num 设置为 LP_UART_NUM_0
    • LP UART 默认使用 RC_FAST_CLK,如果需要改为 XTAL_CLK ,则在 uart_config_t 里配置 .lp_source_clk = LP_UART_SCLK_XTAL_D2; 即可。
    • LP UART 相关的 API 带有 LP 前缀的,比如 uart_read_bytes()uart_write_bytes()UART 可使用;lp_core_uart_write_bytes()lp_core_uart_read_bytes()LP UART 可使用。

ULP-RISC-V 应用与 Deepsleep 功耗对比

Deep Sleep 模式下使用 ULP 协处理器,底电流的大小和 Deep Sleep 相同,同时从图中可以看出,还会有定期的 ULP 处理器唤醒的功耗。因此平均功耗比起普通的 Deep Sleep 要高一点,但是当唤醒的间隔足够长时,就无限接近于 Deep Sleep 的底电流。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/73243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac下⬇️Git如何下载/上传远程仓库

使用终端检查电脑是否安装Git git --version 通过此文章安装Git ➡️ ​​​​​​​传送门🌐 方式1⃣️使用终端操作 1.下载——克隆远程仓库到本地 git clone [远程地址] 例:git clone https://gitee.com/lcannal/movie.git​ 2.编…

Java课题笔记~ JSP开发模型

MVC 1.JSP演化历史 1. 早期只有servlet,只能使用response输出标签数据,非常麻烦 2. 后来有了jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护&…

【校招VIP】前端JS语言考点之px rem等单位

考点介绍: rem vm等问题是前端面试里的高频题型。但是不少同学并不能很清楚的说明为什么在有px单位之后,还需要rem单位?往往会往不对的自适应方向回答。 作为基础性问题,只要回答不出来,面试就通过不了,需要…

compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 另一个程序正在使用

问题情况: run App的时候,提示该文件被占用 想要clean Project,还是提示该文件被占用,这个文件和连带的文件夹都无法被删除。 方法1: AndroidStudio下方的terminal(没有这个窗口的话,从上面的…

【JAVA基础】- 同步非阻塞模式NIO详解

【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 五、同步非阻塞NIO总结 一、概述 NIO(Non-Blocking IO)是同步非阻塞方式来处理IO数据。…

【Spring Boot】构建RESTful服务 — RESTful简介

RESTful简介 本节将从基础的概念开始介绍什么是RESTful、RESTful的特点、RESTful中的资源、HTTP Method、HTTP Status,还将介绍RESTful和SOAP到底有哪些区别。 1.什么是RESTful RESTful是目前流行的互联网软件服务架构设计风格。REST(Representationa…

html练习

html练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>图灵之家</title></head><body><h1>图灵之家</h1><br><br><h2>我的…

项目实战 — 博客系统② {项目构建}

目录 一、创建项目 二、添加数据库 三、设置配置文件相关信息 四、 添加前端页面 五、构建项目分层 六、编写基本类 一、创建项目 二、添加数据库 -- 创建数据库 drop database if exists cat_blog; create database cat_blog DEFAULT CHARACTER SET utf8mb4;-- 使用数…

微服务——ES实现自动补全

效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法&#xff0c;按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…

Mr. Cappuccino的第60杯咖啡——Spring之BeanFactory和ApplicationContext

Spring之BeanFactory和ApplicationContext 类图BeanFactory概述功能项目结构项目代码运行结果总结 ApplicationContext概述功能MessageSource&#xff08;国际化的支持&#xff09;概述项目结构项目代码运行结果 ResourcePatternResolver&#xff08;匹配资源路径&#xff09;概…

一、初始 Spring MVC

文章目录 一、回顾 MVC 模式二、初始 Spring MVC2.1 Spring MVC 核心组件2.1.1 前端控制器&#xff08;DispatcherServlet&#xff09;2.1.2 处理器映射器&#xff08;HandlerMapping&#xff09;2.1.3 处理器适配器&#xff08;HandlerAdapter&#xff09;2.1.3 后端控制器&am…

前端性能优化之性能优化的指标和工具(chrome devtools、lighthouse、webpagetest)

文章目录 引言一、为什么要进行web性能优化二、RAIL测量模型1. 什么是RAIL2. 性能测量工具 三、性能测量工具的使用和性能指标以及优化目标1. Chrome DevTools1. 打开调试工具方式和配置2. network下的几个性能指标1. requests 请求总数2. transferred实际从服务器下载的数据量…

学会智慧工地有多爽?能省时间又高效?

当今社会&#xff0c;科技的迅速发展正在深刻地改变着各行各业&#xff0c;建筑领域也不例外。在这一背景下&#xff0c;"智慧工地"这一概念应运而生&#xff0c;它代表了将创新技术和数字化解决方案引入建筑工地&#xff0c;以提升效率、安全性和可持续性的愿景。 智…

岛屿的最大面积(力扣)递归 JAVA

给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。 岛屿的面积是岛上值为 1 的…

vue3+element-plus点击列表中的图片预览时,图片被表格覆盖

文章目录 问题解决 问题 视觉 点击图片进行预览&#xff0c;但还能继续选中其他的图片进行预览&#xff0c;鼠标放在表格上&#xff0c;那一行表格也会选中&#xff0c;如图所示第一行的效果。 代码 <el-table-column prop"id" label"ID" width"…

回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测

回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经网络多输入单输出回归预测效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 回归预测 | MATLAB实现K折交叉验证GRNN广义回归神经…

深入探析设计模式:工厂模式的三种姿态

深入探析设计模式&#xff1a;工厂模式的三种姿态 1. 简单工厂模式1.1 概念1.2 案例1.3 优缺点 2. 抽象工厂模式2.1 概念2.2 案例&#xff1a;跨品牌手机生产2.3 优缺点 3. 超级工厂模式3.1 概念3.2 案例&#xff1a;动物园游览3.3 优缺点 4. 总结 欢迎阅读本文&#xff0c;今天…

“深入解析Maven:安装、创建项目和依赖管理的完全指南“

目录 引言Maven的安装创建Maven项目之前的装备工作Eclipse创建新的Maven项目项目依赖管理 总结 引言 Maven是一个流行的项目管理工具&#xff0c;被广泛用于Java项目的构建、依赖管理和部署。它提供了一种简单而强大的方式来管理项目的各个方面&#xff0c;使开发人员能够更专…

虹科展会 | 自动驾驶展品:上海汽车测试展精彩回顾

2023年8月9日-8月11日&#xff0c;上海国际汽车测试及质量监控博览会在上海圆满落幕。本次展会提供了一个了解最新汽车测试及质量监控技术、产品和趋势的机会&#xff0c;同时也是汽车测试及质量监控领域的专业人士和业内人士的重要交流平台。 雅名特是虹科旗下子公司&#xff…

2023年国赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#xff0c…