本文介绍 ESP32 强大的超低功耗协处理器 (ULP co-processor),给出汇编环境的搭建步骤。
ULP 协处理器是一个功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行。超低功耗协处理器的补充使得 ESP32 能够胜任一些对低功耗要求较高的应用场合。
ULP 协处理器的主要特性有:
更多特性及介绍详见 ESP32 技术参考手册。
鉴于以上的特性,ULP 协处理器能够在消耗较低电流的情况下,完成 ADC 采样,进行 I2C Sensor 的读写,驱动 RTC GPIO 口动作,可以在某些超低功耗场景中完全替代主 CPU。
下表给出一般测得的电流数值:
场景 | 电流值 |
---|---|
Deep-sleep | 6 μA |
Delay Nop | 1.4 mA |
GPIO Toggle | 1.4 mA |
SAR_ADC Sampling | 2.3 mA |
注意: 上表列出的电流消耗是在 ULP 协处理器引用 VDD3P3_RTC 工作电压,运行在 8 MHz,并且没有进入睡眠情况下测得的。当 ULP 协处理器设置为周期性的进入深度睡眠,在短时间内唤醒工作时,这些数字将会大大减少。因此,ULP 协处理器的理想工作状态是周期性唤醒,短暂工作之后,继续进入休眠状态,以短时间高效的工作和长时间的休眠换取低功耗平衡。
ULP 协处理器目前只支持汇编开发,我们提供了三种不同平台(Linux,Windows,MacOS)的 ULP 协处理器编译环境的设置方法。
需说明:在安装汇编工具链之前,我们默认你已经安装和配置好 ESP32 ESP-IDF C 语言编译工具链,安装参考链接。
Linux 下配置编译环境比较简单,只需要下载汇编编译工具链,解压到安装目录中,再添加环境变量即可完成设置。
bin
目录到环境变量 PATH
中。例如,解压目录是 /opt/esp32ulp-elf-binutils
那么添加 export PATH=/opt/esp32ulp-elf-binutils/bin:$PATH
这一行到 .bashrc
文件中,运行 source .bashrc
使上述环境变量生效,这样,ULP 的汇编环境就设置完毕了。首先安装 Windows / MSYS2 下的 C 编译工具链可参考说明链接 ,之后再安装 ULP 协处理器编译工具链链接
解压 ULP 工具链 esp32ulp-elf-binutils-win32-...
到 MSYS2 的 opt
目录中,一般建议使用 C:\msys32\opt
目录,因为 ESP32 toolchain xtensa-esp32-elf
也在这个目录下。
打开位于目录 C:\msys32\etc\profile.d
下的 esp32_toolchain.sh
文件,把 ULP 工具链的 bin/
目录添加到 path 中,设置例如:
# This file was created by ESP-IDF windows_install_prerequisites.sh
# and will be overwritten if that script is run again.
export PATH="$PATH:/opt/xtensa-esp32-elf/bin:/opt/esp32ulp-elf-binutils/bin"
MacOS 平台编译设置几乎是和 Linux 一样的,但需下载 MacOS 平台对应的编译工具链.
bin/
目录地址到 PATH 环境变量中,生效即可。如果把 ULP 汇编代码编译为应用组件的一部分,必须采取以下步骤:
ULP_APP_NAME ?= ulp_$(COMPONENT_NAME)
ULP_S_SOURCES = $(COMPONENT_PATH)/ulp/ulp_source_file.S
ULP_EXP_DEP_OBJECTS := main.o
include $(IDF_PATH)/components/ulp/component_ulp_common.mk
汇编指令目前有 24 条,在 ULP coprocessor instruction set 获得更详细的说明。
在 esp-iot-solution 目录下目前有一些 ULP 协处理器使用的例子供参考
Num | Examples | Note |
---|---|---|
1 | ulp_hall_sensor | 在超低功耗模式下读取片内霍尔传感器例程 |
2 | ulp_rtc_gpio | 在 ULP mode 下操作 RTC GPIO 管脚翻转例子 |
3 | ulp_tsens | 在超低功耗模式下读片内温度传感器 |
4 | ulp_watering_device | 在超低功耗模式下使用 SAR_ADC 监测土壤湿度浇花的综合例程 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。