根据研究hifi的某童鞋的说法,stm32 i2s时钟的抖动指标较差。PLL为引起时钟抖动(相噪恶化)的来源之一,F4手册提供的指标为均方根值90ps、峰峰值正负280ps(MCLK=12.343MHz),该抖动约为时钟周期的千分之几量级。
研究F4的时钟结构,可发现下图所示路径:
HSE晶振振荡器可直接由MCO1输出至片外,而I2S也有一个外部时钟输入I2S_CKIN。“碰巧”的是,MCO1是引脚PA8对应的第二功能,I2S_CKIN是引脚PC9对应的第二功能,而这两个引脚是挨着的,如下图所示。
因此,我们只要选择合适的HSE晶振频率,将PA8和PC9用一条不能再短的走线短接,再通过合理的寄存器配置,即可跳过PLL环节提供正确频率的MCLK输出。
由于F4的MCLK路径中有一个无法禁止的2分频,所以要想获得12.288MHz的MCLK(96k采样常用),需要使用24.576MHz的HSE晶振。
该用法电路可行性已经验证,但因为没有合适的仪器无法实测抖动值。有兴趣的盆友可以一试。
[ 此帖被BG2BHC在2014-08-27 16:49重新编辑 ]