MCLK抖动是I2S音频失真的核心诱因,尤其在ESP32这类非专用音频MCU上。首先,确保硬件上MCLK由独立、低抖动晶振(如24.576MHz或22.5792MHz)直接供给DAC,而非从ESP32内部PLL分频——ESP32的APLL虽可输出MCLK,但抖动较大,建议用外部有源晶振或专用时钟芯片(如Si5351)替代。其次,在软件层面,使用ESP-IDF的I2S驱动时,务必配置`i2s_config_t`中的`use_apll`为`false`(除非你已用外部时钟),并设置`mclk_multiple`为`I2S_MCLK_MULTIPLE_256`,确保MCLK频率是采样率的整数倍,减少相位误差。若仍抖动,可在DAC前加一级PLL或FIFO缓冲(如用SRC4192做异步采样率转换),隔离时钟域。实操建议:用示波器测量MCLK的周期抖动(Jitter),目标应<50ps RMS;若超标,优先检查电源去耦(MCLK引脚旁加100nF+10uF电容)和PCB走线长度匹配。最后,调试时可用正弦波测试,观察FFT频谱中是否出现边带杂散,以此定位抖动源。
mcuku 阿沐 · 2026-08-27