没志青年
发布于 2025-07-19 / 19 阅读
0

ESP32 ADC

模数转换器 (ADC) 单次转换模式驱动 - ESP32-S3 - — ESP-IDF 编程指南 v5.5 文档

模数转换器 (ADC) 连续转换模式驱动 - ESP32-S3 - — ESP-IDF 编程指南 v5.5 文档

手册 39.3 章节,P 1374

SAR ADC

ADC 电气参数

查看数据手册 esp32-s3_datasheet_cn.pdf

ADC 特性:

可以看出,ESP32 的 ADC 的采样速度并不高,只有 100k SPS,即每秒采样 10,000次,根据奈奎斯特定理,最大可采样频率为 50 kHz。

ADC 架构

ESP32-S3 内置了两个 12 位的 SAR ADC(逐次逼近型ADC),可测量最多来自 20 个管脚的模拟信号。

有四个控制器:

  • 1 个数字控制器(Digital ADC1 Controller):支持高性能多通道扫描和 DMA 连续转换。

    • 支持多通道扫描模式,并可自定义扫描通道顺序

    • 支持单 SAR ADC 采样模式???什么意思,单通道?

    • 提供两个滤波器,滤波系数可配

    • 支持阈值监控,采样值大于设置的高阈值或小于设置的低阈值将产生中断

    • 支持 DMA

  • 2 个RTC 控制器(RTC ADC1 Controller、RTC ADC2 Controller):支持在低功耗模式下工作和单次转换。

    • 支持单次转换

    • 可在低功耗模式下工作

    • 可由 ULP 协处理器配置

  • 1 个内部 PWDET 控制器(Power/Peak Detect Controller):仅供 RF 内部使用,用来检测功率。

特性:

  • 四个控制器均配有独立的 ADC Reader 模块。

  • 通过软件选择可设置 SAR ADC1 的控制权交给 DIG ADC1 控制器还是 RTC ADC1 控制器。

  • RTC ADC2 控制器和 PWDET 控制器可通过指定的仲裁的方式,轮流获取 SAR ADC2 的控制权。

在芯片设计上 ADC2 是有数字控制器的,但实际上无法使用,使用 RTC 控制器来控制。参考:[ADC-183] SAR ADC2 的数字控制器 (DMA) 无法工作 - ESP32-S3

RTC ADC 控制器

RTC 电源域中的 SAR ADC 控制器,可在低频状态下提供最小功耗 ADC 测量。

大多数情况下,需要和 ULP 协处理器一起配合工作:

  • RTC ADC 控制器不支持连续扫描和 DMA,但协处理器可通过软件的方式实现。

  • 可在 Deep-sleep 模式下对通道进行周期性检测。在 Deep-sleep 模式下,ADC 采样只能通过 ULP 协处理器触发(通过配置 RTC 外设的寄存器来触发 ADC)。

DIG ADC 控制器

与 RTC ADC 控制器相比,DIG ADC 控制器使用了快速时钟,采样速率大幅提升。

支持专用定时器触发的多通道扫描,。

扫描完成将产生中断。?1个还是素有???

ADC 对应引脚

ADC 转换和衰减

Vref 为 SAR ADC 内部参考电压,出厂设定为 1100 mV。

如需转换大于 Vref 的电压,信号输入 SAR ADC 前可进行衰减。衰减可配置为 0 dB、2.5 dB、6 dB 和 12 dB

单次转换

读取原生数据:

esp_err_t adc_oneshot_read(adc_oneshot_unit_handle_t handle, adc_channel_t chan, int *out_raw)

原始值转换为电压值:

esp_err_t adc_cali_raw_to_voltage(adc_cali_handle_t handle, int raw, int *voltage)

线程安全:

  • adc_oneshot_new_unit()

  • adc_oneshot_config_channel()

  • adc_oneshot_read()

非线程安全:

  • adc_oneshot_del_unit()

Kconfig配置:

连续转换