【STM32】理解时钟树(图示分析)

文章目录

时钟系统

什么是时钟

时钟在电子和计算机系统中指的是生成周期性信号的电路或设备,这种周期性信号用于同步系统内的各种操作。时钟信号通常是方波,具有固定的频率和周期,在数字电路中尤为重要。以下是时钟的详细说明:

  1. 时钟的基本概念
    周期 (Period):时钟信号重复一次所需的时间,通常以秒(s)或其子单位(如毫秒ms、微秒μs、纳秒ns)表示。
    频率 (Frequency):时钟信号每秒钟重复的次数,以赫兹 (Hz) 为单位,频率是周期的倒数。例如,1 MHz 表示每秒钟有 1,000,000 个时钟周期。
    占空比 (Duty Cycle):时钟信号在一个周期内处于高电平的时间与周期总时间的比值,通常以百分比表示。
  2. 时钟的作用
    同步操作:在数字系统中,不同的模块和电路需要在同一时间执行操作。时钟信号提供了一个共同的时间基准,确保各个模块同步运行。
    数据采样:时钟信号用来控制数据的采样和传输,例如在寄存器中写入或读取数据。
    时序控制:通过时钟信号,可以精确控制系统中各个操作的时序,确保数据处理的正确性。

时钟树

以STM32F103C8T6为例,先看产品手册中的时钟树很懵逼

简化图示

类比示例

单片机的总线矩阵相当于电脑的主板,

单片机的Cortex-M3内核相当于电脑的CPU,

Flash是相当于电脑的硬盘,单面机的RAM相当于电脑的内存条,

单片机的AHB总线相当于向PCLe插槽,APB1和APB2转换桥相当于PCLe转USB板卡,

单片机的APB2总线相当于USB3.0。

单片机的APB1总线相当于USB2.0,

而挂载在总线上的各种各样的模块,就相当于摄像头、麦克风、移动硬盘、鼠标、键盘等这些外部源的设备。

时钟树详解

时钟源

STM32F103C8T6 支持多种时钟源,包括:

  • 高频外部晶振 (HSE):通常用于高精度的外部晶振,可以是 4-16 MHz。
  • 低频外部晶振 (LSE):用于低功耗应用的外部晶振,频率通常为 32.768 kHz。
  • 高频内部振荡器 (HSI):内部 8 MHz 的振荡器。
  • 低频内部振荡器 (LSI):内部 40 kHz 的振荡器
  • PLL (锁相环):可以通过 HSE 或 HSI 提供倍频后的时钟信号。

系统时钟配置

系统时钟 (SYSCLK) 是整个芯片的主时钟源,可以选择 HSI、HSE 或 PLL 作为系统时钟源。选择过程如下:

  • 选择 HSE 或 HSI 作为 PLL 的输入时钟源(如果使用 PLL)。
  • 配置 PLL 的倍频系数,确保输出频率在允许的范围内(最高 72 MHz)
  • 选择系统时钟源:可以选择 HSI、HSE 或 PLL。
  • 配置 AHB、APB1 和 APB2 分频器,生成不同的外设时钟。

各总线时钟

  • AHB 时钟 (HCLK):由系统时钟 SYSCLK 通过 AHB 分频器提供,负责驱动内核、存储器和 DMA 等高速外设。
  • APB1 时钟 (PCLK1):通过 APB1 分频器从 HCLK 提供,驱动低速外设如 UART、I2C、SPI 等。
  • APB2 时钟 (PCLK2):通过 APB2 分频器从 HCLK 提供,驱动高速外设如 GPIO、ADC、TIM1 等。

外设时钟

  1. 高速外设时钟 (APB2)
    APB2 总线用于驱动高速外设,包括 GPIO、ADC、TIM1、SPI1 等。这些外设的时钟源通常来自以下几个路径:
    PCLK2 (APB2 预分频器输出时钟):通过 AHB 总线时钟 (HCLK) 分频获得。
    系统时钟 (SYSCLK):通过 PLL 或直接选择 HSI、HSE 作为系统时钟。
  2. 低速外设时钟 (APB1)
    APB1 总线用于驱动低速外设,包括 UART、I2C、TIM2-7、SPI2、SPI3 等。这些外设的时钟源如下:
    PCLK1 (APB1 预分频器输出时钟):通过 AHB 总线时钟 (HCLK) 分频获得。
    系统时钟 (SYSCLK):通过 PLL 或直接选择 HSI、HSE 作为系统时钟。
  3. ADC 时钟
    ADC 外设的时钟可以由以下路径提供:
    PCLK2:通过 RCC_CFGR 中的 ADCPRE 分频配置,可以选择 PCLK2 的 2、4、6 或 8 分频。
  4. USB 时钟
    USB 外设需要 48 MHz 的时钟,通常由 PLL 提供:
    PLL 输出时钟 (PLLCLK):通过 PLL 配置获得 48 MHz 时钟,如果 PLL 的输入时钟为 8 MHz(HSI),则需要配置 PLL 的倍频系数为 6。
  5. 实时时钟 (RTC)
    RTC 的时钟源可以是:
    低频外部晶振 (LSE):通常为 32.768 kHz。
    低频内部振荡器 (LSI):通常为 40 kHz。
  6. 定时器时钟
    定时器的时钟源可以是:
    APB1 和 APB2 时钟 (PCLK1, PCLK2):定时器时钟频率是由对应的 APB 时钟频率决定的,如果 APB 时钟进行了分频,定时器时钟可能会有 2 倍的频率。
  7. SPI 时钟
    SPI 外设的时钟源为:
    PCLK2 (对于 SPI1):通过 AHB 总线时钟 (HCLK) 分频获得。
    PCLK1 (对于 SPI2, SPI3):通过 AHB 总线时钟 (HCLK) 分频获得。
  8. UART/I2C 时钟
    UART 和 I2C 外设的时钟源为:
    PCLK1 (对于 UART2, UART3, I2C1, I2C2):通过 AHB 总线时钟 (HCLK) 分频获得。
    PCLK2 (对于 UART1):通过 AHB 总线时钟 (HCLK) 分频获得。
  9. GPIO 时钟
    GPIO 外设的时钟源为:
    PCLK2:通过 AHB 总线时钟 (HCLK) 分频获得
相关推荐
CODECOLLECT20 分钟前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen1 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠4 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_4 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技6 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计6 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦7 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报7 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业7 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能7 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微