Skip to main content

RCC时钟树

时钟是芯片的"心跳",我们去芯片的时钟树看看!

up的视频讲解:

1 时钟树

时钟 是单片机的脉搏,芯片从CPU到总线外设,它们工作都需要一个同步的时钟信号来统一指挥

时钟树:

  • STM32有很多外设器件,每个器件的时钟信号不一样,
  • 所以要将一个固定的信号频率进行倍频/分频处理,达到每个外设需要的频率
  • 时钟信号的分频就像树的分支一样,这就是时钟树

我们直接看看参考手册的时钟树框架图, 和Cube里面的时钟树配置界面

RCC时钟树

时钟树CUBE

时钟频率 时钟周期 机器周期
  • 时钟频率:指的是处理器或其他数字电路每秒钟振荡的次数,单位是 赫兹(Hz),通常以 MHz(兆赫, Hz) 来表示

  • 时钟周期:是指CPU时钟信号的一个完整振荡周期,它是计算机执行指令的最基本时间单位

  • 机器周期:是指CPU执行一条指令所需的基本时间单位,它是CPU执行指令的最小时间片段。通常,一个机器周期由多个时钟周期(Clock Cycle)组成

看起来很复杂, 我们从时钟信号的流向去分析:

  • 时钟源--->系统时钟--->总线时钟--->各个外设时钟

时钟信号的流向

2 时钟源

时钟源是整个时钟树的源头, 各个时钟源--->系统时钟--->总线时钟--->各个外设时钟

时钟源

STM32 有4个独立时钟源:HSI、HSE、LSI、LSE

  • HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。

  • HSE是高速外部时钟,常用石英/陶瓷谐振器,频率范围为4MHz~16MHz

  • LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟 

  • LSE是低速外部时钟,接频率为32.768kHz的石英晶体

3 系统时钟

SYSCLK(系统时钟) 是 Cortex-M3 内核、存储器、DMA 等核心模块的 “主时钟”,也是整个时钟树中所有总线时钟和外设时钟的来源 系统时钟--->总线时钟--->各个外设时钟

系统时钟

系统时钟

系统时钟来源:

  • HSI高速内部时钟

  • HSE高速外部时钟

  • PLL锁相环分频或者倍频

STM32F1 系列的 SYSCLK 最高为 72MHz

3 总线时钟

总线时钟

总线时钟

总线时钟 由系统时钟(SYSCLK)经过多级分频得到,是所有外设时钟的 “父时钟”
系统时钟--->总线时钟--->各个外设时钟

  • AHB 时钟 (HCLK):由系统时钟 SYSCLK 通过 AHB 分频器提供,负责驱动内核、存储器和 DMA 等高速外设。

  • APB1 时钟 (PCLK1):通过 APB1 分频器从 HCLK 提供,驱动低速外设如 UART、I2C、SPI 等。

  • APB2 时钟 (PCLK2):通过 APB2 分频器从 HCLK 提供,驱动高速外设如 GPIO、ADC、TIM1 等。

4 外设时钟

外设时钟

外设挂载情况

STM32的外设很多, 它们的工作时钟需要分成3种情况:

  1. 一般情况:外设挂载在 APB/AHB 总线上,直接复用总线时钟
  • AHB 挂载设备: DMA、FSMC、SDIO、RCC

  • APB1 外设: USART2/3、SPI2/3、I2C、CAN、PWR、BKP、DAC

  • APB2 外设: GPIO、AFIO、EXTI、USART1、SPI1

  1. 特殊情况:这些外设会额外倍频、分频、切换专属时钟
  • APB 总线上的定时器(TIM)

  • ADC 外设: 挂载在 APB2,PCLK2 为其输入,内部再加独立分频器(/2、/4、/6、/8),上限 14MHz

  1. 独立时钟源外设(完全脱离 APB/AHB 总线时钟)这类外设不使用所在总线时钟
  • USB: 要求精准 48MHz,单独从 PLL 分支输出

  • RTC:时钟来自 LSE (32.768kHz)

  • IWDG 独立看门狗:时钟来自 LSI

  • WWDG 窗口看门狗: PCLK1 再分频得到