时钟控制器原理

一、时钟频率与周期

1 秒钟里总的变化次数称为时钟频率单位是 Hz, 每变换一次高低 电平所用的时间称为一个周期, 它是频率的倒数

二、基础时钟源

2.1 三种振荡器

2.1.1 RC振荡器

  • 优点:成本低、启动速度快

  • 缺点:精度低(不如晶振和陶瓷谐振器)

  • 总结:便宜、快、但不准


2.1.2 无源晶体振荡器

  • 工作原理:利用压电效应和共振原理,自身无法起振,需要借助外部时钟电路才能产生振荡信号

  • 总结:自己振不起来,需要外面帮一把(需要匹配电容和芯片内部振荡电路)


2.1.3 有源晶体振荡器

  • 工作原理:内部已集成完整的振荡电路,原理与无源晶振类似,但需要外部电源供电才能起振

  • 总结:自己就是完整振荡器,通电就能用,不需要外部匹配电路

2.1.4 对比表格

类型 是否需要外部电路 是否需要电源 精度 成本 启动速度
RC振荡器 不需要 需要
无源晶体 需要(匹配电容+芯片内部电路) 不需要单独供电
有源晶体 不需要(内部完整) 需要单独供电

2.2 四种时钟源

2.2.1 HSI(内部高速时钟)

项目 说明
来源 内部 16MHz RC 振荡器
用途 直接做系统时钟,或作为 PLL 输入
优点 成本低(无需外部元件)、启动速度快
缺点 精度不如外部晶振(即使校准后)

2.2.2 HSE(外部高速时钟)

项目 说明
来源 外部有源晶振或无源晶振(4~26MHz)
用途 直接做系统时钟,或作为 PLL 输入
优点 精度高
缺点 需要外部元件,成本高,启动慢

2.2.3 LSI(内部低速时钟)

项目 说明
来源 内部 RC 振荡器,约 32kHz
用途 独立看门狗(IWDG)、RTC(低精度场景)
特点 功耗极低,可在停机和待机模式下保持运行
缺点 精度差,频率随温度波动

2.2.4 LSE(外部低速时钟)

项目 说明
来源 外部 32.768kHz 晶振或陶瓷谐振器
用途 RTC(实时时钟/日历)、其他定时功能
优点 功耗低、精度高
缺点 需要外部晶振

2.2.5 总对比表

时钟 英文全称 类型 频率 主要用途 一句话
HSI High-Speed Internal 内部高速 16MHz 系统时钟 / PLL输入 自带,快但不准
HSE High-Speed External 外部高速 4~26MHz 系统时钟 / PLL输入 外接,准但启动慢
LSI Low-Speed Internal 内部低速 ~32kHz 看门狗 / 低精度RTC 自带低速,省电但不准
LSE Low-Speed External 外部低速 32.768kHz 高精度RTC 外接晶振,准又省电

三、系统时钟

3.1 PLL锁相环

3.1.1 PLL 含义

PLL(Phase-Locked Loop,锁相环)是一个倍频器 ,可以把输入的较低频率时钟(HSI或HSE)倍频到更高频率,从而得到系统时钟(SYSCLK)。


3.1.2 PLL 工作原理

复制代码
HSI (16MHz) 或  ──→  PLLM  ──→  PLLN  ──→  PLLP  ──→  SYSCLK(系统时钟)
HSE (4-26MHz)      (分频)    (倍频)    (分频)      (最高168MHz)
                              │
                              └──→  PLLQ(USB/SDIO等外设时钟)

3.1.3 PLL 相关参数(可编程因子)

参数 全称 作用
PLLM 分频因子 将输入时钟分频(降低频率)后再送入PLL
PLLN 倍频因子 在PLL内部倍频(放大频率)
PLLP 主系统时钟分频因子 PLL输出后分频得到SYSCLK
PLLQ USB/SDIO分频因子 输出分频后给USB、SDIO等外设用

为了在输入时钟频率固定的情况下,通过"先分频、再倍频、再分频"的组合,灵活得到系统所需的各种不同频率(如CPU高速、USB固定、总线低速),而这些比例通常用整数公式就能算出来。

3.1.4 存在意义

输入晶振的振荡频率越高,价格越贵;

输入晶振的振荡频率越高,精度会有衰减

所以只能先输入一个相对高的时钟频率,然后进行分频和倍频输出给系统时钟

3.2 SYSCLK(系统时钟)

3.2.1 SYSCLK含义

SYSCLK 是系统时钟,也就是 CPU、内存、总线(AHB/APB)等核心部件的工作时钟,决定了处理器执行指令的速度。


3.2.2 SYSCLK 的来源选择

SYSCLK 通过 System Clock Mux(系统时钟选择器) 从以下三种时钟源中选取一个:

输入源 类型 典型频率 说明
HSI 内部高速 RC 16MHz 上电默认,启动快但不准
HSE 外部高速晶振 4~26MHz 精度高,需要外接晶振
PLLCLK PLL 倍频输出 可达 168MHz PLL 对 HSI 或 HSE 倍频后得到,频率最高

3.3 HCLK(AHB 总线时钟

3.3.1 HCLK含义

HCLK (High-speed Clock )是 AHB (Advanced High-performance Bus先进高性能总线 )总线时钟 ,由 SYSCLK(系统时钟)经过 AHB Prescaler(AHB预分频器) 分频后得到,为 AHB 总线上的高速外设提供时钟。


3.3.2 时钟路径

复制代码
SYSCLK(系统时钟)
      │
      ↓
AHB Prescaler(分频器)
      │
      ↓
HCLK(AHB总线时钟,最大168MHz)

分频器把系统时钟分配成不同的时钟域,然后输出给不同的模块使用(不同模块的最大时钟频率不一样)


3.3.3 HCLK 提供时钟的模块

模块 英文名称 说明
DMA Direct Memory Access 直接存储器访问,高速数据传输
Cortex System Timer SysTick 系统滴答定时器,常用于操作系统心跳
FCLK Free-Running Clock 处理器自由运行时钟,休眠时仍保持运行
APB1 Advanced Peripheral Bus 1 低速外设总线,最大42MHz
APB2 Advanced Peripheral Bus 2 高速外设总线,最大84MHz
PTP Precision Time Protocol 精确时间协议,用于网络时钟同步(以太网IEEE 1588)

四、外设时钟

4.1 APB 总线时钟

4.1.1 APB 总线时钟含义

APB(Advanced Peripheral Bus,先进外设总线)是 STM32 中用于连接各种外设 的总线,分为 APB1APB2 两条。


4.1.2 时钟来源路径

复制代码
SYSCLK → HCLK(AHB总线时钟)→ APB Prescaler(分频器)→ APB1 / APB2 外设时钟
  • 输入源:HCLK(AHB 总线时钟)

  • 经过:APB Prescaler(APB预分频器)分频

  • 得到:APB1 和 APB2 的外设时钟


4.1.3 APB1 与 APB2 对比

总线 最大频率 典型外设
APB1 42MHz(HCLK/2、/4等) USART2/3/4/5、I2C1/2/3、SPI2/3、CAN、DAC、PWR、RTC等
APB2 84MHz(HCLK/1、/2等) USART1、SPI1、ADC1/2/3、TIM1/8/9/10/11、GPIO、SYSCFG、EXTI等

4.1.4 APB2与APB1运用场景

  • APB2 接的是高速外设(如 ADC、高级定时器、SPI1),需要更高的时钟频率来满足性能要求

  • APB1 接的是低速外设(如 I2C、普通串口、DAC),不需要太快,且为了降低功耗

4.2 外设控制器时钟

4.2.1 外设时钟来源

总线 最大频率 一句话作用 典型外设
AHB 168MHz 给高速核心模块提供时钟 DMA、GPIO、CRC、Flash、SRAM
APB1 42MHz 给低速外设提供时钟 USART2/3/4/5、I2C1/2/3、SPI2/3、CAN、DAC、PWR
APB2 84MHz 给高速外设提供时钟 USART1、SPI1、ADC1/2/3、TIM1/8/9/10/11、SYSCFG

外设用哪条总线,就由哪条总线的时钟驱动,各总线频率不同,满足不同外设的速度需求。

当 APB1 预分频器分频系数 APB1大于 1 时,定时器时钟会自动 乘以 2 ,让定时器获得比总线更高的时钟,以提高 PWM 精度和计时分辨率。


4.2.2 一条总线上挂多个外设的含义

  • 同一条总线上的外设共享同一个时钟源

  • 如果该总线的时钟被关闭,上面挂载的所有外设都会停止工作

  • 每个外设可以独立控制自己的时钟使能(在RCC寄存器中配置)


4.3 RTC 时钟源

RTC(实时时钟)的输入时钟可以由以下三种来源提供,通过 RTC Clock Mux(RTC时钟选择器) 选择:

时钟源 类型 典型频率 说明
LSE 外部低速晶振 32.768kHz 精度高,功耗低,RTC首选
LSI 内部低速RC ~32kHz 精度低,省电但不准
HSE(分频后) 外部高速晶振 4~26MHz(分频后得到1MHz以内) 需要外接晶振,分频后给RTC用

4.4 IWDG(独立看门狗)时钟源

时钟源 类型 典型频率 说明
LSI 内部低速RC ~32kHz 唯一来源,没有其他选择

五、时钟输出

5.1 MCO含义

MCO(Microcontroller Clock Output,微控制器时钟输出)是STM32的一个引脚功能,可以向外输出芯片内部的时钟信号 ,相当于一个可编程的有源晶振


5.2 STM32F407 的 MCO 引脚

引脚 名称 说明
PA8 MCO1 第一个时钟输出引脚
PC9 MCO2 第二个时钟输出引脚

5.3 主要作用

  • 给外部电路提供时钟信号(如给另一颗芯片提供时钟,节省外部晶振)

  • 调试时测量内部时钟频率(如检查HSE、HSI、PLL是否正常工作)


5.4 MCO 可以输出的时钟源

MCO引脚 可选输出的时钟源
MCO1(PA8) HSI、HSE、PLLCLK/2、LSE、LSI
MCO2(PC9) SYSCLK、PLLI2S、HSE、PLLCLK

相关推荐
H__Rick6 小时前
C51单片机学习-DAY3
单片机·学习·mongodb
望眼欲穿的程序猿7 小时前
Hello World
嵌入式硬件·rust
bkspiderx7 小时前
Windows DLL核心技术:深入理解__declspec(dllexport)与__declspec(dllimport)
windows·stm32·单片机·dllimport·dllexport·windows dll·__declspec
ACP广源盛139246256738 小时前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark
望眼欲穿的程序猿8 小时前
ESP32-S3 定时器中断
单片机·嵌入式硬件
电气_空空8 小时前
基于 LabVIEW 的深海气密采水器测控系统
单片机·嵌入式硬件·毕业设计·labview
星夜夏空999 小时前
STM32单片机学习(37) —— PWR和BKP
stm32·单片机·学习
牛牛,牛9 小时前
榨干最后一微安:STM32 的低功耗设计与中断唤醒机制深度剖析
单片机·嵌入式硬件
星华云10 小时前
[STM32] SAR型ADC(逐次逼近型ADC)工作原理简介
stm32·单片机·嵌入式硬件
小娄~~10 小时前
时钟控制器原理
单片机·嵌入式硬件