libxr
1.0
Want to be the best embedded framework
|
ESP32 ADC多通道驱动 More...
#include <esp_adc.hpp>
Data Structures | |
class | Channel |
ADC通道对象,提供通道级数据访问和抽象接口。 More... | |
Public Member Functions | |
ESP32ADC (adc_unit_t unit, const adc_channel_t *channels, uint8_t num_channels, uint32_t freq=SOC_ADC_SAMPLE_FREQ_THRES_LOW, adc_atten_t attenuation=ADC_ATTEN_DB_12, adc_bitwidth_t bitwidth=static_cast< adc_bitwidth_t >(SOC_ADC_DIGI_MAX_BITWIDTH), float reference_voltage=3.3f, size_t dma_buf_size=256) | |
构造函数:初始化ADC与DMA、参数配置 Constructor: Initialize ADC, DMA, and config parameters. | |
~ESP32ADC () | |
析构函数,释放所有资源 Destructor. Free all resources and stop ADC. | |
Channel & | GetChannel (uint8_t idx) |
获取通道对象的引用 Get a reference to channel object by index. | |
float | ReadChannel (uint8_t idx) |
读取指定通道最新均值(已归一化为电压) Read latest averaged and normalized value (in volts) for the given channel. | |
Private Member Functions | |
void | HandleSamples (const void *buf, size_t size_bytes) |
采样缓冲区数据解析与均值计算 Parse DMA buffer and calculate channel averages. | |
float | Normalize (float raw) const |
原始ADC值归一化到电压 Normalize raw ADC value to voltage. | |
Static Private Member Functions | |
static bool IRAM_ATTR | OnConvDone (adc_continuous_handle_t handle, const adc_continuous_evt_data_t *edata, void *user_data) |
DMA采集完成中断回调。内部调用。 DMA conversion done callback. Called internally by ESP-IDF. | |
Private Attributes | |
adc_digi_pattern_config_t * | m_patterns_ |
ADC采样模式数组 / Pattern config array. | |
Channel * | m_channels_ |
通道对象数组 / Channel objects array | |
float * | m_latest_values_ |
最新均值(每通道)/ Latest average value (per channel) | |
int * | m_sum_buf_ |
求和缓冲 / Accumulation buffer | |
int * | m_cnt_buf_ |
计数缓冲 / Count buffer | |
adc_unit_t | m_unit_ |
ADC单元 / ADC unit. | |
uint8_t | m_num_channels_ |
通道数 / Number of channels | |
adc_atten_t | m_attenuation_ |
衰减档位 / Attenuation | |
adc_bitwidth_t | m_bitwidth_ |
位宽 / Bit width | |
float | m_reference_voltage_ |
参考电压 / Reference voltage | |
uint16_t | m_max_raw_ |
最大原始采样值 / Max raw value | |
adc_continuous_handle_t | m_handle_ = nullptr |
ESP-IDF采集句柄 / ADC handle. | |
ESP32 ADC多通道驱动
ESP32 multi-channel ADC driver
该类封装ESP32的ADC连续采样、DMA搬运和多通道均值计算。 支持线程安全读取,适用于高采样率场景。
This class encapsulates ESP32 ADC continuous sampling, DMA buffering, and per-channel averaging. Thread-safe and suitable for high-speed applications.
Definition at line 33 of file esp_adc.hpp.
|
inline |
构造函数:初始化ADC与DMA、参数配置 Constructor: Initialize ADC, DMA, and config parameters.
unit | ADC单元(ADC_UNIT_1或2)/ ADC unit number (ADC_UNIT_1 or 2) |
channels | ADC通道号数组 / Array of ADC channel numbers |
num_channels | 通道数量 / Number of channels |
freq | 采样频率(Hz)/ Sample frequency in Hz (default: SOC_ADC_SAMPLE_FREQ_THRES_LOW) |
attenuation | 衰减档位 / ADC attenuation (default: ADC_ATTEN_DB_12) |
bitwidth | 精度位宽 / Bit width (default: chip max) |
reference_voltage | 参考电压(V)/ Reference voltage (default: 3.3V) |
dma_buf_size | DMA缓冲区大小 / DMA buffer size in bytes (default: 256) |
Definition at line 98 of file esp_adc.hpp.
|
inline |
析构函数,释放所有资源 Destructor. Free all resources and stop ADC.
Definition at line 159 of file esp_adc.hpp.
|
inline |
获取通道对象的引用 Get a reference to channel object by index.
idx | 逻辑通道索引 / Channel logical index |
Definition at line 179 of file esp_adc.hpp.
|
inlineprivate |
采样缓冲区数据解析与均值计算 Parse DMA buffer and calculate channel averages.
buf | 缓冲区指针 / Buffer pointer |
size_bytes | 数据字节数 / Buffer size in bytes |
Definition at line 210 of file esp_adc.hpp.
|
inlineprivate |
原始ADC值归一化到电压 Normalize raw ADC value to voltage.
raw | 原始采样值 / Raw ADC value |
Definition at line 254 of file esp_adc.hpp.
|
inlinestaticprivate |
DMA采集完成中断回调。内部调用。 DMA conversion done callback. Called internally by ESP-IDF.
Definition at line 194 of file esp_adc.hpp.
|
inline |
读取指定通道最新均值(已归一化为电压) Read latest averaged and normalized value (in volts) for the given channel.
idx | 逻辑通道索引 / Channel index |
Definition at line 187 of file esp_adc.hpp.
|
private |
衰减档位 / Attenuation
Definition at line 267 of file esp_adc.hpp.
|
private |
位宽 / Bit width
Definition at line 268 of file esp_adc.hpp.
|
private |
通道对象数组 / Channel objects array
Definition at line 260 of file esp_adc.hpp.
|
private |
计数缓冲 / Count buffer
Definition at line 263 of file esp_adc.hpp.
|
private |
ESP-IDF采集句柄 / ADC handle.
Definition at line 271 of file esp_adc.hpp.
|
private |
最新均值(每通道)/ Latest average value (per channel)
Definition at line 261 of file esp_adc.hpp.
|
private |
最大原始采样值 / Max raw value
Definition at line 270 of file esp_adc.hpp.
|
private |
通道数 / Number of channels
Definition at line 266 of file esp_adc.hpp.
|
private |
ADC采样模式数组 / Pattern config array.
Definition at line 259 of file esp_adc.hpp.
|
private |
参考电压 / Reference voltage
Definition at line 269 of file esp_adc.hpp.
|
private |
求和缓冲 / Accumulation buffer
Definition at line 262 of file esp_adc.hpp.
|
private |
ADC单元 / ADC unit.
Definition at line 265 of file esp_adc.hpp.