您的位置:首页 > 其它

STM32时钟源

2016-05-02 17:33 666 查看
STM32的时钟系统对于一个熟练的单片机开发来说应该再熟悉不过了,但对于没有太多基础的新手来说(比如一个月前的我)来说,看到这样一张时钟系统图难免有点头大,不过当真正对设计者的目的有了了解以后再回过头来看这样一幅图的时候会发现看懂它其实并不是什么难事。



STM32F103一共有5个时钟源,分别为外部高速时钟(HSE)、内部高速时钟(HSI)、外部低速时钟(LSE)、内部低速时钟(LSI)以及锁相环时钟(PLL)

对于STM32这样一个相对复杂的单片机系统来说,系统内核、各种总线和外设所需要的工作频率都不尽相同,因此就需要通过各种手段在芯片内部产生不同速度的时钟来协调各个设备的工作。按照常理,整个时钟系统只要有一个高速时钟源搭配各种分频器就可以产生各种满足需求的时钟频率,然而如果直接给系统提供高速时钟则面临着要解决各种电磁干扰和稳定性问题,因此STM32采用的方式是在芯片内部提供一个可以提供最高72MHz时钟的PPL,并提供一个速度相对较低的时钟作为锁相环的输入时钟。为此,芯片内部本身内置了一个8MHz的RC震荡电路作为锁相环的输入,该时钟即为HSI。但由于时钟集成在芯片内部,其稳定性和准确性都无法保证,因此若想使芯片能够稳定地工作则有必要从外部引入一个时钟源,对此芯片也提供了引入外部高速时钟源的接口,即图中OSC_OUT和OSC_IN,在此处引入的时钟即为HSE。

通过以上HSI或HSE与PPL的配合,系统时钟就可以达到最高72MHz,然后再经过各种分频就可以使整个系统工作起来。

从时钟树可以看出,系统时钟主要有三个作用,一是为Cotex-M3内核提供运行时钟,二是直接或经过分频后为挂载在各种总线上的外设提供时钟,第三则是通过128分频以后为RTC(实时时钟)提供时钟源。

虽然一个系统时钟完全可以满足整个系统的时钟需求,但由于芯片内的实时时钟(RTC)需要为系统提供一个持续稳定的时间,有些情况下需要其在系统掉电时也能继续依靠电池电源运行,因此有必要为其提供一个独立于系统时钟的低速时钟(作为时钟其频率不需要太高)。而这个时钟源也分为两种,一种来自外部的可以尽可能精确时钟源,即LSE,和另一种由内部RC震荡电路提供的精度有限的时钟源,即LSI。此外,由于芯片中设置了独立看门狗用于在芯片运行异常的情况下将其复位,因此也需要一个独立的时钟源为独立看门狗提供工作时钟。在STM32F103中,此时钟来自于LSI(内部低速时钟)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: