STM32
直播中

自我清欢

9年用户 868经验值
擅长:可编程逻辑 模拟技术 EMC/EMI设计 光电显示 存储技术
私信 关注
[问答]

STM32F407 I2S如何修改MCLK,实现256*Fs以外的MCLk?

最近用STM32F407的芯片需要输出MCLK=128*fs;MCLK=192*fs;MCLK=512*fs等配置,该芯片没有SAI,不知是否有其他方法可以修改MCLK,实现256*Fs以外的MCLk?

回帖(1)

h1654155216.9102

2024-4-25 17:31:25
要实现STM32F407 I2S的MCLK为128*fs、192*fs或512*fs等配置,您可以通过以下步骤进行操作:

1. 首先,您需要确定I2S的时钟源。通常,I2S时钟源可以是PLL、PLLI2S或外部时钟。在STM32F407中,PLL和PLLI2S都可以作为I2S时钟源。

2. 接下来,您需要计算所需的PLL或PLLI2S输出频率。根据您所需的MCLK值,可以得出以下公式:

   MCLK = PLL_Output_Frequency / (I2S_CKPL * I2S_DIV)

   其中,I2S_CKPL是PLL输出时钟除以PLLI2SQ的值,I2S_DIV是I2S时钟除以I2SDIV的值。

3. 根据所需的MCLK值,计算PLL或PLLI2S的输入频率。例如,如果您希望MCLK为128*fs,那么PLL或PLLI2S的输入频率应该是:

   Input_Frequency = MCLK * I2S_CKPL * I2S_DIV

4. 配置PLL或PLLI2S以生成所需的输出频率。您需要设置PLL或PLLI2S的输入分频器(PLLM或PLLI2SM)、输出倍频器(PLLN或PLLI2SN)和输出分频器(PLLQ或PLLI2SQ)。

5. 启用PLL或PLLI2S,并将其作为I2S时钟源。

6. 配置I2S时钟除以I2SDIV的值。根据您的需求,设置I2SDIV的值。

7. 配置I2S_CKPL的值。根据您的需求,设置I2S_CKPL的值。

8. 最后,配置I2S的其余参数,如数据格式、音频频率等。

通过以上步骤,您应该可以实现STM32F407 I2S的MCLK为128*fs、192*fs或512*fs等配置。请注意,您可能需要根据您的具体硬件和需求进行一些调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分