下图是STM32的时钟系统,从图中可以看到USB的时钟是从PLL的输出得到。
当使用外部时钟源时,PLL的输入为外部时钟或外部时钟除以2;如图所示,要使用USB,PLL的输出必须是48MHz或72MHz。
使用外部时钟时,因为振荡器的限制,外部晶体只能是4~16MHz之间;因为PLL的倍频系数为1~16中的任意值,因此外部晶体就有了如下一些数值可选: PLL输入直接使用外部时钟时:
晶体频率(MHz) | 倍频系数 | PLL输出频率(MHz) | 16 | 3 | 48 | 12 | 4 | 48 | 9.6 | 5 | 48 | 8 | 6 | 48 | 6.857 | 7 | 48 | 6 | 8 | 48 | 5.333 | 9 | 48 | 4.8 | 10 | 48 | 4.364 | 11 | 48 | 4 | 12 | 48 |
晶体频率(MHz) | 倍频系数 | PLL输出频率(MHz) | 14.4 | 5 | 72 | 12 | 6 | 72 | 10.286 | 7 | 72 | 9 | 8 | 72 | 8 | 9 | 72 | 7.2 | 10 | 72 | 6.545 | 11 | 72 | 6 | 12 | 72 | 5.538 | 13 | 72 | 5.143 | 14 | 72 | 4.8 | 15 | 72 | 4.5 | 16 | 72 |
当PLL输入为外部时钟除2时,只需将上表中的晶体频率乘2即得可用的参数,当然晶体频率必须在4~16MHz的范围内。
|