多语言展示
当前在线:1228今日阅读:23今日分享:25

如何随STM32时钟进行分析

STM32系列芯片基于专为要求高性能,低成本,低功耗的嵌入式应用专门设计的ARM cortex内核。其时钟分布较为复杂但对时钟的理解又非常重要。
方法/步骤
1

STM32的时钟系统共有三个主要的时钟源:HSI 8MHz RC时钟源,频率为8MHz;HSE高速外部时钟源,可接晶体或者外部时钟源,输入频率可变,4MHz~16MHz;PLL锁相环。另外还有两个额外的时钟源:LSI RC 低速内部时钟,频率仅40Hz;LSE低速外部时钟源,只能接频率为32.768KHz的晶体。所以归结起来,STM32共有5个时钟源。对于PLL锁相环,从图中可以看出,它有两个输入源,一个是HSI/2,一个是HSE,可先选择除频系数然后选择倍频系数,均为2~16倍。这里要注意的是STM32也有很多不同的系列,所以时钟系统也有差别,这里主要针对的是STM32F3X系列。

2

HSE 时钟,高速外部时钟可由两个输入时钟源产生,一个是外部晶体或陶瓷谐振器。一个是用户直接输入对应频率的时钟。关于这两种接法请参考下图:需要注意的是如果是选择用户直接输入4M~32MHz的时钟需要是高精度的时钟源。

3

HSI 时钟,它由一个8MHz的RC振荡器产生并可以直接应用为系统时钟或者二分频后作为PLL的输入。它的优点是成本低,没有额外的电子元件。并且它的启动时间要高于HSE时钟,据我测试的经验,后者是秒级大概2s左右,而前者是ms级,在10-20ms间。但因为较为快速的启动时间,所以时钟源的精度是要比外部时钟源低很多的。所以也导致了它的不同应用,通常情况下,为了系统的快速启动,软件设计之初会采用HSI时钟,而在2S后外部时钟源稳定则切换至HSE时钟。

4

LSE时钟,它是一个32.768KHz的低速外部时钟源,它的优点是可以提供低功耗但是高精度的时钟源给RTC或者一些其他计时功能。

5

LSI时钟,它是一个低速的可以带来低功耗的时钟源,它和LSE时钟都不能作为系统时钟源,它主要是让系统可以在standby模式可以独立的运行watch dog和RTC。时钟源频率为40KHz但精度却在30KHz和60KHz之间,因此选择它也是有代价的,RTC的误差会被放大很多倍。

6

PLL时钟,它的时钟输入源可选择为HSI和HSE,倍频范围为2~16倍,但是输出频率范围却被限制在16-72MHz。  请看下图,有一个USB clk的部分,STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。

注意事项

STM32系统时钟很复杂,但要想真正理解一颗芯片的工作原理,时钟这块是必须重点关注的。

推荐信息