3.1主要时钟
STM32F4系列时钟树概述
1.STM32F4系列时钟树概述
众所周知,时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F4 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么 STM32 要有多个时钟源呢?因为首先 STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。
2.RCC主要作用(时钟部分)
注意:
HCLK=SYSCLK=PLLCLK=168M,PCLK1=HCLK/2=84M,PCLK1=HCLK/4=42M。
以上是stm32f4库函数的标准配置,一般默认使用这个。
3.时钟树
(1)HSE高速外部时钟信号
① 接外部晶振,频率4M~26MHz。
使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空;
使用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且需要配谐振电容。
② STM32F4开发板使用25M无源晶振,使用HSE或HSE经PLL倍频之后的时钟作为系统时钟SYSCLK
HSE发生故障时,HSE和PLL都会关闭,系统时钟由高速内部时钟时钟信号HSI接替,知道HSE恢复正常。
(2)锁相环PLL
① 锁相环时钟:PLLCLK;
② 来源:HSI、HSE。由PLLCLK位配置。
HSE或HSI先经过一个分频因子M进行分频,然后再经过一个倍频因子N,再经过一个分频因子P,最后成为锁相环时钟。
STM32F4中,PLLCLK = (HSE/M)*N/P = 25/25-336/2 = 168M;
③ 控制:RCC_PLLCFGR——RCC PLL配置寄存器
④ PLL48CK:为USB_FS、RANG、SDIO提供时钟;
(3)系统时钟(SYSCLK,最高为168M)
①来源:HSI、HSE、PLLCLK;
②控制:RCC_CFGR时钟配置寄存器的SW位。
(4)HCLK时钟
① HCLK作用:AHB(advanced high-performance bus)高速总线时钟,最高为168M。为AHB总线的外设提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核提供时钟(FCLK);
②来源:系统时钟分频得到;
③控制:RCC_CFGR 时钟配置寄存器的HPRE位。
(5)PCLK1时钟
① PCLK1作用:APB1低速总线时钟,最高为42M, 为APB1总线的外设提供时钟;
② 来源:HCLK分频得到,通常配置为4分频;
③ 控制:RCC_CFGR 时钟配置寄存器的PPRE1位。
(6)PCLK2时钟
① PCLK2作用:APB高速总线时钟,最高为84M, 为APB2总线的外设提供时钟;
② 来源:HCLK分频得到,通常配置为2分频;
③ 控制:RCC_CFGR 时钟配置寄存器的PPRE2位。
3.2其他时钟
(1)RTC时钟
① RTC作用:为芯片内部的RTC提供时钟;
② 来源:HSE_RTC(HSE分频得到)、LSE(外部32.768KHZ的晶体提供)、LSI(32KHZ);
③ 控制:RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制。
(2)独立看门狗时钟
IWDGCLK,由LSI提供;
(3)I2S时钟
由外部的引脚I2S_CKIN或者PLLI2SCLK提供;
(4)以太网PHY时钟
407没有集成PHY,只能外接PHY芯片,比如LAN8720,那PHY时钟就由外部的PHY芯片提供,大小为50M;
(5)USB PHY时钟
407的USB没有集成PHY,要想实现USB高速传输,只能外接PHY芯片,比如USB33000。那USB PHY时钟就由外部的PHY芯片提供;
(6)MCO时钟输出
① 把控制器的时钟通过外部的引脚输出,可以外外部的设备提供时钟。MCO1为PA8,MCO2为PC9;
② 控制:RCC_CFGR 时钟配置寄存器的MCOX的PREx位;