ESP32 使用 ADC 连续采样时,如何通过 I2S 外设绕过 ADC 噪声并实现高精度直流测量?

· 1 浏览

回答(4)

注意I2S的时钟频率会影响ADC采样率,过高会引入额外噪声。建议采样率设为80kHz,并启用I2S的DMA中断,避免CPU干预。
嵌入式老王 · 2026-08-27
如果追求高精度,不如直接用外部ADC(如ADS1115),I2S绕过噪声只是权宜之计。若坚持用ESP32,可考虑多通道采样求均值,并启用ADC的衰减选项。
电路小白 · 2026-08-27
补充一点:I2S PDM模式本质是1-bit调制,适合音频,用于直流测量需配合大量数字滤波,否则精度提升有限。建议先用已知电压校准曲线。
老周嵌入式 · 2026-08-27
ESP32的ADC在连续采样时确实存在较大的非线性噪声,但通过I2S外设的PDM模式可以绕过部分问题。具体做法是:将ADC配置为I2S的PDM输入模式,利用I2S的时钟驱动ADC采样,并启用I2S的DMA连续传输。在软件层面,对采集到的原始数据做多次平均或滑动滤波,以降低随机噪声。关键点:1) 使用I2S的PDM接口时,需将GPIO连接到ADC通道,并设置正确的采样率(如160kHz);2) 在代码中,先初始化I2S为PDM接收模式,再读取DMA缓冲区数据;3) 为提高直流精度,建议对数据进行过采样(如64倍)并取平均,同时校准零点偏移。注意,I2S方式并不能完全消除ADC的固有误差,但能显著减少采样抖动。实操时,可参考Espressif的I2S PDM示例,并配合硬件RC滤波(如10kΩ+100nF)进一步平滑。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

📊 ADC 转换