学习目标:
STM32的RCC时钟树
学习内容:
主要学习: HSE时钟、HSI时钟、锁相环时钟(PLLCLK)(由HSI或者HSE提供)、系统时钟(SYSCLK)(来源HSI,HSE,PLLCLK)、HCLK时钟、PCLK1时钟、PCLK2时钟、RTC时钟、MCO时钟![STM32时钟树](https://i-blog.csdnimg.cn/blog_migrate/8dcf061e4cda83f3a261ab934188f076.png#pic_center)
STM32的外部晶振从OSC_IN和OSC_OUT进入再由HSE产生HSE时钟,由于外部时钟HSE产生需要时间,在启动成功之前由HSI时钟代替启动。产生的时钟除以2(注意:HSI不能代替HSE时钟,主要是原因是HSI时钟没有HSE时钟稳定)之后进入图中2锁相环进行倍频。在锁相环产生稳定PLLC时钟之后,产生AHB总线的时钟(HCLK时钟),提供给图中B的系统时钟,同时可以产生APB1或者APB2总线的时钟(APB1为低速总线时钟,APB2为高速总线时钟)。
除了以上三条时钟总线,还有RTC时钟,看门狗时钟,I2S时钟,以太网PHY时钟,USB PHY时钟,MCO时钟。
以下为时钟总结(以STM32F407为例):
HSE:High Speed External Clock signal,即高速的外部时钟。
来源:有源晶振(1-50M)、无源晶振(4-26M)
控制:RCC_CR 时钟控制寄存器的位16:HSEON控制
HSI:Low Speed Internal Clock signal,即高速的内部时钟。
来源:芯片内部,大小为16M,当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动成功。
控制: RCC_CR 时钟控制寄存器的位0:HSION控制
锁相环时钟:PLLCLK
来源:HSI、HSE。由PLLSRC位配置。
HSE或者HSI先经过一个分频因子M进行分频,然后再经过一个倍频因子N,然后再经过一个分频因子P,最后成为锁相环时钟PLLCLK = (HSE/M) * N / P = 25/25 * 336 / 2 = 168M
控制: RCC_PLLCFGR :RCC PLL 配置寄存器
系统时钟
缩写:SYSCLK,最高为168M。
来源:HSI、HSE,PLLCLK。
控制: RCC_CFGR 时钟配置寄存器的SW位
HCLK时钟
HCLK:AHB高速总线时钟,最高为168M。为AHB总线的外设提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核提供时钟(FCLK)。
AHB为advanced high-performance bus。
来源:系统时钟分频得到。
控制: RCC_CFGR 时钟配置寄存器的HPRE位
PCLK1时钟
PCLK1:APB1低速总线时钟,最高为42M,为APB1总线的外设提供时钟。
来源:HCLK分频得到,通常配置为4分频。
控制: RCC_CFGR 时钟配置寄存器的PPRE1位
PCLK2时钟
PCLK1:APB高速总线时钟,最高为84M,为APB2总线的外设提供时钟。
来源:HCLK分频得到,通常配置为2分频。
控制: RCC_CFGR 时钟配置寄存器的PPRE2位
RTC时钟
RTC:为芯片内部的RTC提供时钟。
来源:HSE_RTC(HSE分频得到)、LSE(外部32.768KHZ的晶体提供)、LSI(32KHZ)。
控制: RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制
MCO时钟输出
MCO:把控制器的时钟通过外部的引脚输出,可以外外部的设备提供时钟。MCO1为PA8,MCO2为PC9。
控制: RCC_CFGR 时钟配置寄存器的MCOX的PREx位
独立看门狗时钟:IWDGCLK,由LSI提供
I2S时钟:由外部的引脚I2S_CKIN或者PLLI2SCLK提供。
以太网PHY时钟:407没有集成PHY,只能外接PHY芯片,比如LAN8720,那PHY时钟就由外部的PHY芯片提供,大小为50M。
USB PHY时钟:407的USB没有集成PHY,要想实现USB高速传输,只能外接PHY芯片,比如USB33000。那USB PHY时钟就由外部的PHY芯片提供。
学习时间:
学习的时间2020.11.19