使用USB时的外时钟问题

ryl_522   2008-1-2 14:19 楼主
因为项目的需要,外时钟为11.0592M,应当
如何设置,让STM32F103的USB可以使用

回复评论 (7)

如果外时钟为11.0592M时,无法得到USB的时钟

下图是STM32的时钟系统,从图中可以看到USB的时钟是从PLL的输出得到。

当使用外部时钟源时,PLL的输入为外部时钟或外部时钟除以2;如图所示,要使用USB,PLL的输出必须是48MHz或72MHz。

使用外部时钟时,因为振荡器的限制,外部晶体只能是4~16MHz之间;因为PLL的倍频系数为1~16中的任意值,因此外部晶体就有了如下一些数值可选:
  PLL输入直接使用外部时钟时:
 晶体频率(MHz) 
点赞  2008-1-2 15:04

这样是一种限制

由于外围电路的需要,无法选择外时钟到上述频率,
USB接口就无法使用啦,为什么不独立出来USB的时钟
点赞  2008-1-2 15:27

楼主可以试试使用PLL输入为外部时钟除2,再取PLL倍频系数为1

这样,经PLL倍频,你将得到:(11.0592 / 2) x 13 = 71.8848MHz,这个数值非常接近72MHz。

STM32是USB全速设备,USB协议规定全速设备的数据速率误差为+/-0.25%,按上面的配置也许可以使用,但我不敢保证一定能用,我也没有试过。

从另一方面讲,也许你可以换一个频率,通过分频得到你最终希望的频率。想必一定是你某个外设需要这个频率,查一下你的外设的频率误差,也许它的要求比USB要宽,这样你就可以迁就USB的频率了。
点赞  2008-1-2 15:28

楼主如果方便可以说说你的具体应用,外围电路要求的时钟

                                 独立出来USB的时钟必然要占用一个管脚;STR71x系列就是独立出来USB的时钟占了一个管脚,结果很多用户有意见。
点赞  2008-1-2 15:33

如果外设要求低,就没必要使用外部时钟了

谢谢您的答复,我所说的独立时钟意思是芯片本身内部
有8M的时钟,直接6倍频出48M的USB时钟多好
点赞  2008-1-2 17:37

内部RC振荡器(HSI)不适合于做USB的时钟源

内部RC振荡器(HSI)不适合于做USB的时钟源,这是因为内部RC振荡器(HSI)在正常情况下(25°C)时的精度为+/-1%,在极端条件下为+/-3%;正像我上面说的USB要求+/-0.25%的误差,所以它不适合于做USB的时钟源。

请注意,RC振荡器受温度的影响很大,不能作为高精度时钟源。
点赞  2008-1-2 17:57

学习了

                                  
点赞  2008-6-3 14:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复