ESP32 集成了2个12位逐次逼近型AD,有5个专用转换控制器管理,支持18个AD转换通道,可以测量内部VDD等电压信号,本次实验利用一路AD采集光敏电阻电压
特性
- 1个内部电压vdd33通道、2个pa_pkdet通道
- 可配置12位、11位、10位、9位多种分辨率
- 支持DMA(1个控制器支持)
- 支持多通道扫描模式(2个控制器支持)
- 支持Deep-sleep模式运行(1个控制器支持)
- 支持ULP协处理器控制(2个控制器支持)
ESP32拥有5个专用转换器:
- 2个高性能多通道扫描转换器,SAR ADC1/2 Controller [ADC1 8路:GPIO32-39,ADC2 10路:GPIO0,2,4,12-15,25-27]
- 2个支持Deep-sleep模式下低功耗转换器, RTC ADC1/2 Controller
- 1个功率检测/峰值检测控制器
ADC2 限制
- 仅当WiFi驱动程序未启动时,应用程序才能使用ADC2,因为具有更高优先级的WiFi驱动程序也使用ADC.某些ADC2引脚用作捆扎引脚(GPIO0,2,15),因此无法自由使用
1.硬件原理图
2.硬件初始化
- 设置ADC分辨率
- 设置ADC基准电压
3.API介绍
导入头文件: “driver/adc.h” “esp_adc_cal.h”
函数名 | 描述 | 案例 |
---|---|---|
esp_err_t adc1_config_width(adc_bits_width_t width_bit) |
配置ADC1所有通道分辨率 width_bit: ADC_WIDTH_9Bit:ADC_WIDTH_12Bit |
adc1_config_width(ADC_WIDTH_12Bit) |
esp_err_t adc1_config_channel_atten(adc1_channel_t channel,adc_atten_t atten) |
配置ADC1通道的基准电压源,默认0db:1.1V channel: ADC1_CHANNEL_0:ADC1_CHANNEL_7 atten: ADC_ATTEN_0db,2_5db,6db,11db [1,1/1.34,1/2,1/3.6] |
adc1_config_channel_atten(ADC1_CHANNEL_0,ADC_ATTEN_0db) |
int adc1_get_voltage(adc1_channel_t channel) |
获取ADC1通道读数 | adc1_get_voltage(ADC1_CHANNEL_0) |
代码
1 |
|
效果