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