[STM32F4] 求助:香水城->关于STM32F4X PLL 输出时钟频率,求精确的计算

[复制链接]
1554|2
 楼主| 上帝来自地球 发表于 2014-10-17 09:34 | 显示全部楼层 |阅读模式
我们公司现在的新产品要求精确的系统时钟,但系统时钟不是多少Mhz的整数,所以需要知道计算方法的精确换算。
在数据手册中,PLL的输出频率计算方式如下
f(VCO clock) = f(PLL clock input) × (PLLN / PLLM)
f(PLL general clock output) = f(VCO clock) / PLLP
比如:
f(PLL clock input) = 16Mhz, PLLN = 234, PLLM = 18, PLLP = 6
因为计算过程中可能会产生小数,计算方法的顺序和小数精确位数的选取都会对最终的计算结果产生影响。
现在有如下的疑问:
1.计算的严格顺序是f(PLL general clock output) = f(PLL clock input) × (PLLN / PLLM) / PLLP 吗?

2.计算过程中的
a.f(VCO clock) = f(PLL clock input) × (PLLN / PLLM) = 16Mhz * (254 / 18) (在这里(254 / 18)是按类型float还是double来保留小数的位数呢?)
b.f(PLL general clock output) = f(VCO clock) / PLLP
在计算过程中出现除法的地方,对小数的位数是如何进行取舍保留的?

因为公司的新产品还有使用STM32F0X的?所以也帮忙确认一下M0的吧。
数据手册中没有详细的计算方法,我直接上clock tree贴图了。



因为比较着急,所以请香水城版主尽快帮忙确认一下。

在此先感谢香水城版主对ST技术支持的贡献了!




STM32F0X.png
mmuuss586 发表于 2014-10-17 19:00 | 显示全部楼层
会产生小数点;
所以PLLM的值取和晶振频率一样;
再通过后面倍频,总能得到你所需要的频率;
SYSCLK= = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N/2;
 楼主| 上帝来自地球 发表于 2014-10-17 22:02 | 显示全部楼层
现在就是需要配置小数部分,所以才有疑问的。
比如我需要的PLL输出为4.096Mhz,19.5Mhz等等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部