新疆时时彩三开奖结果走势图

STM32时钟树知识分享

         众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢? 因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。 首先让我们来看看STM32F4的时钟系统图: 在STM32F4中,有5个最重要的时钟源,为HSI、HSE、LSI、LSE、PLL。其中PLL实际是分为两个时钟源,分别为主PLL和专用PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这5个中HSI,HSE以及PLL是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其他的是内部时钟源。下面我们看看STM32F4的这5个时钟源,我们讲解顺序是按图中红圈标示的顺序: <p> ①、LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 <p></p> ②、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。 <p></p> ③、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。我们的开发板接的是8M的晶振。HSE也可以直接做为系统时钟或者PLL输入。 <p></p> ④、HSI是高速内部时钟,RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。 <p></p> ⑤、PLL为锁相环倍频输出。STM32F4有两个PLL: </p> 1) 主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。 <p></p> 第一个输出PLLP用于生成高速的系统时钟(最高168MHz) <p></p> 第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz),随机数发生器的时钟和SDIO 时钟。 2)专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。 <p></p> 这里我们着重看看主PLL时钟第一个高速时钟输出PLLP的计算方法。图4.3.1.2是主PLL的时钟图。 从图4.3.1.2可以看出。主PLL时钟的时钟源要先经过一个分频系数为M的分频器,然后经过倍频系数为N的倍频器出来之后的时候还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主PLL时钟。 例如我们的外部晶振选择8MHz。同时我们设置相应的分频器M=8,倍频器倍频系数N=336,分频器分频系数P=2,那么主PLL生成的第一个输出高速时钟PLLP为: <p></p> <p></p> PLL=8MHz * N/ (M*P)=8MHz* 336 /(8*2) = 168MHz<p></p> <p></p> 如果我们选择HSE为PLL时钟源,同时SYSCLK时钟源为PLL,那么SYSCLK时钟为 168MHz。这对于我们后面的实验都是采用这样的配置。 上面我们简要概括了STM32的时钟源,那么这5个时钟源是怎么给各个外设以及系统提供时钟的呢?这里我们选择一些比较常用的时钟知识来讲解。 图4.3.1.1中我们用A~G标示我们要讲解的地方。 <p></p> A. 这里是看门狗时钟输入。从图中可以看出,看门狗时钟源只能是低速的LSI时钟。 <p></p> B. 这里是RTC时钟源,从图上可以看出,RTC的时钟源可以选择LSI,LSE,以及HSE分频后的时钟,HSE分频系数为2~31。 <p></p> C. 这里是STM32F4输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟。MCO输出时钟频率最大不超过100MHz。 <p></p> D. 这里是系统时钟。从图4.3.1可以看出,SYSCLK系统时钟来源有三个方面:HSI,HSE和PLL。在我们实际应用中,因为对时钟速度要求都比较高我们才会选用STM32F4这种级别的处理器,所以一般情况下,都是采用PLL作为SYSCLK时钟源。根据前面的计算公式,大家就可以算出你的系统的SYSCLK是多少。 <p></p> E. 这里我们指的是以太网PTP时钟,AHB时钟,APB2高速时钟,APB1低速时钟。这些时钟都是来源于SYSCLK系统时钟。其中以太网PTP时钟是使用系统时钟。AHB,APB2和APB1时钟是经过SYSCLK时钟分频得来。这里大家记住,AHB最大时钟为168MHz, APB2高速时钟最大频率为84MHz,而APB1低速时钟最大频率为42MHz。 <p></p> F. 这里是指I2S时钟源。从图4.3.1可以看出,I2S的时钟源来源于PLLI2S或者映射到I2S_CKIN引脚的外部时钟。I2S出于音质的考虑,对时钟精度要求很高。探索者STM32F4开发板使用的是内部PLLI2SCLK。 <p></p> G. 这是STM32F4内部以太网MAC时钟的来源。对于MII接口来说,必须向外部PHY芯片提供25Mhz的时钟,这个时钟,可以由PHY芯片外接晶振,或者使用STM32F4的MCO输出来提供。然后,PHY芯片再给STM32F4提供ETH_MII_TX_CLK和ETH_MII_RX_CLK时钟。对于RMII接口来说,外部必须提供50Mhz的时钟驱动PHY和STM32F4的ETH_RMII_REF_CLK,这个50Mhz时钟可以来自PHY、有源晶振或者STM32F4的MCO。我们的开发板使用的是RMII接口,使用PHY芯片提供50Mhz时钟驱动STM32F4的ETH_RMII_REF_CLK。 <p></p> H. 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。 这里还需要说明一下,Cortex系统定时器Systick的时钟源可以是AHB时钟HCLK或 HCLK的8分频。具体配置请参考Systick定时器配置,我们后面会在5.1小节讲解delay文件夹代码的时候讲解。 在以上的时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。后面我们讲解实例的时候会讲解到时钟使能的方法。

 
新疆时时彩三开奖结果走势图
民间时时彩龙虎技巧 下彩网app官方下载 挂机软件外接宝宝计划怎么办 抢红包玩法 双色球胆拖怎么买 为什么跟计划老是连挂 分分彩后二组选杀3码 赌场玩法 龙虎合怎么看规律 五星定位胆玩法