esp32s3adc
时间: 2025-01-29 07:42:59 浏览: 53
### ESP32-S3 ADC 功能概述
ESP32-S3 配备有两个模数转换器 (ADC),即 ADC1 和 ADC2。这些模块能够读取模拟信号并将其转换成数字形式的数据,适用于处理来自各种传感器或可变电阻元件的输入[^2]。
#### 支持特性
- **工作范围**:支持 0 至 3.3V 输入电压。
- **分辨率**:提供多种位宽选项用于精确度调整。
- **多路复用**:每个 ADC 拥有若干独立通道以连接不同类型的外部设备。
### 初始化与配置
为了使能 ADC 并设置其参数,在程序启动阶段需调用相应 API 函数完成初始化过程:
```c++
#include "driver/adc.h"
// 定义使用的具体引脚编号
const int pin = GPIO_NUM_34;
void setup() {
Serial.begin(115200);
// 设置指定GPIO作为ADC输入模式
adc1_config_width(ADC_WIDTH_BIT_12); // 设定采样精度为12比特
adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_11); // 对应于GPIO34
}
```
上述代码片段展示了如何通过 `adc1_config_width` 来设定数据宽度,并利用 `adc1_config_channel_atten` 方法来指明所选信道及其增益等级。
### 数据采集流程
一旦完成了硬件接口的基础搭建之后,则可通过如下方式获取实际测量值:
```c++
void loop() {
uint32_t rawValue;
// 执行一次AD变换操作
rawValue = adc1_get_raw((adc1_channel_t)ADC1_CHANNEL_6);
float voltage = esp_adc_cal_raw_to_voltage(rawValue, &characteristics);
Serial.printf("Raw Value: %d | Voltage: %.2f mV\n",rawValue,voltage);
delay(1000);
}
```
此部分实现了周期性的 AD 转换请求发送给选定通道,并打印出未经处理的结果 (`rawValue`) 及经过校准后的物理意义下的电平(`voltage`) 值。
阅读全文
相关推荐


















