时钟控制器原理

一、时钟频率与周期

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 中用于连接各种外设 的总线,分为 APB1 和 APB2 两条。


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

相关推荐
inrichtt3 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
半杯咖啡半行码4 小时前
Linux字符设备驱动开发基础:从设备号到ioctl的完整实战
stm32·单片机·嵌入式硬件
碧海银沙音频科技研究院5 小时前
基于炬芯ATS3089X的usb U盘/usb audio声卡/usb cdc虚拟串口/录音dump到本地功能实现
stm32·单片机·嵌入式硬件
CC180253944865 小时前
具有强大的图像和语音处理能力的高性能 MCU芯片ESP32-P4NRW32X
单片机·嵌入式硬件
小范的技术工坊6 小时前
Linux应用开发(文件IO)
linux·stm32·单片机
科芯创展7 小时前
XZ1824 宽电压150V 10A开关降压DC-DC控制器技术解析
单片机
恒锐丰科技林技术员7 小时前
EG1416 低侧栅极驱动芯片:小封装下的功率驱动利器
经验分享·嵌入式硬件·硬件工程
Zwawa8 小时前
让电机走到指定位置:编码器位置环 PID
c语言·单片机·嵌入式
桀人8 小时前
I2C概念引入
stm32·单片机·嵌入式硬件
神一样的老师9 小时前
RA4M2 + AHT20 温湿度传感器实战
单片机·嵌入式硬件