这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32NUCLEO-C542RC】:10浅谈一下STM32C5的时钟配置

共1条 1/1 1 跳转至页

【STM32NUCLEO-C542RC】:10浅谈一下STM32C5的时钟配置

高工
2026-10-20 09:27:18     打赏

一:STM32C5 时钟系统概述

STM32C5 是意法半导体面向入门级、成本敏感市场推出的 MCU 系列,采用 Arm Cortex-M33 内核,最高运行频率 144 MHz,核心性能 593 CoreMark。为了让芯片面积和复杂度尽量低,STM32C5 采用了一套与高端系列不同的简化时钟架构:没有传统意义上的 PLL,而是依靠内部振荡器、智能分频器和时钟恢复系统(CRS)来实现灵活、准确的时钟供给。整个时钟管理由 RCC(Reset and Clock Control,复位与时钟控制)外设统一负责。

理解 STM32C5 的时钟可以抓住一条主线:先认识时钟从哪来(时钟源),再看系统时钟怎么选(SYSCLK),最后看时钟怎么分给各个外设(总线预分频与内核时钟分频器)。下面按这个顺序展开。

二:时钟来源

STM32C5 一共有五个时钟源,分为内部振荡器和外部晶振两大类。

1:HSI——高速内部振荡器

HSI 是一个 144 MHz 的内部振荡器,在全温度范围(-20°C 到 130°C)内精度为 ±1%。它是芯片上电启动和退出低功耗模式时使用的主时钟,启动阶段默认以 HSI 三分频后的 48 MHz 运行。HSI 支持用户微调(TRIM),调节是单调的,步进约 0.1%,足以满足 USB 设备对时钟精度的要求;微调寄存器位于 CRS 章节,复位值设为 48/128,有意留出更多余量去补偿低温下频率偏低的情况。需要注意的是,HSI 的频率还会受到电压波动、器件老化和回流焊等机械应力的影响。

2:PSI——可编程速度内部振荡器

PSI 是一个可输出 100 MHz、144 MHz 或 160 MHz 的可编程振荡器,但它只能以类似 PLL 的模式工作,必须有一个参考时钟(HSE、LSE 或 HSI)才能运行。PSI 能输出什么频率取决于参考时钟:例如以 48 MHz 的 HSE 为参考时,可以输出 100/144/160 MHz;以 32.768 kHz 的 LSE 为参考时,输出 100.016/144.015/160.006 MHz。PSI 的存在正是为了替代传统 PLL,给系统和外设提供更高的时钟。HSI 与 PSI 共用一个专用的振荡器供电域和稳压器。

3:HSE——外部高速晶振

HSE 支持 4 到 50 MHz 的外部晶振或外部时钟信号,并带有时钟检测器,用于监测外部时钟是否失效。在 NUCLEO-C542RC 开发板上,板载的 HSE 晶振为 24 MHz。

4: LSE——外部低速晶振

LSE 是 32.768 kHz 的外部晶振,主要给 RTC 提供精准的实时时钟,NUCLEO-C542RC 开发板板载了这颗晶振。

5:LSI——内部低速 RC 振荡器

  LSI 是约 32 kHz 的内部 RC 振荡器,主要给独立看门狗 IWDG 使用,也可作为低功耗定时器等外设的备用时钟。

三:系统时钟 SYSCLK 与时钟树

1:SYSCLK 的四个来源

STM32C5 的系统时钟 SYSCLK 可以从四个来源中选择:HSE(外部晶振直通)、PSIS(PSI 直通,最高 160 MHz)、HSIS(HSI 直通,144 MHz)和 HSIDIV3(HSI 三分频后的 48 MHz)。芯片复位后的默认状态是使用 HSIDIV3 作为 SYSCLK,也就是先以 48 MHz 起步运行。

2:内核时钟分频器 PSIK 与 HSIK

STM32C5 提供两条“内核时钟”分频路径:PSIK 对 PSI 输出分频,HSIK 对 HSI 输出分频,分频系数支持 1、1.5、2、2.5 一直到 8 这样的分数分频。这一点非常实用:例如 PSI 输出 160 MHz 时,PSIK 除以 2 得到 80 MHz,除以 3 得到 53.33 MHz;PSI 输出 144 MHz 时,除以 3 正好得到 48 MHz。分数分频让设计者无需 PLL 的多个输出,就能给不同外设凑出合适的频率。

3:两个 48 MHz 时钟域

除了内核时钟,芯片还提供两个独立的 48 MHz 时钟域:PSIDIV3(PSI 三分频)和 HSIDIV3(HSI 三分频)。它们主要服务于需要精确 48 MHz 的外设,例如 USB FS 和 RNG。HSE 也可以直接作为 USB 的 48 MHz 来源,以满足 USB Host 对频率精度的严格要求。

4:总线时钟 HCLK 与 APB 时钟

SYSCLK 先经过 AHB 预分频器(可除以 1 到 512)得到 HCLK,HCLK 供给 AHB 总线、内核、存储器和 DMA,同时作为 Cortex 自由运行时钟 FCLK 与系统节拍定时器的时钟。HCLK 再分别经过 APB1、APB2、APB3 预分频器(各可除以 1、2、4、8、16)得到 PCLK1、PCLK2、PCLK3,分别驱动三组 APB 外设。定时器还有一条“时钟加倍”规则:当 APB 预分频系数大于 1 时,定时器时钟会自动翻倍,APB1 上的 TIM2/3/4/6/7/12 和 APB2 上的 TIM1/8/15/16/17 都遵循这个规则。

四:外设时钟配置

1. 专用时钟多路复用器

STM32C5 几乎给每个外设都配备了独立的时钟多路复用器(Mux),只有 ADC 和 DAC 例外。这意味着可以独立地为每个外设挑选时钟源,而不必受制于固定的时钟分配。典型映射关系如下:SPI1/2/3 可以从 psik_ck、hsik_ck、PCLK 或 AUDIOCLK 中选择;I2C1/2/3 可以从 psik_ck、hsik_ck 或 PCLK 中选择;USART1/2/3/6 与 UART4/5/7 可以从 psik_ck、hsik_ck、PCLK(部分还含 LSE)中选择;FDCAN1/2 可以从 psik_ck、hse_ck 或 PCLK 中选择;XSP1 外部串行存储接口可以从 psis_ck、psik_ck、hse_ck 或 HCLK 中选择;以太网 ETH 使用 psis_ck 或 psik_ck 作为 ETH_CLK,其 PTP 时钟再经过 1、2、4、16 分频;LPTIM1 可以从 hsik_ck、lsi_ck 或 PCLK 中选择;LPUART 可以从 hsik_ck、lse_ck、lsi_ck 或 PCLK 中选择。

2. ADC 与 DAC 的时钟

ADC 和 DAC 的时钟来自一条带 1 到 128 分频的专用通路,可以从 psis_ck、psik_ck、hsik_ck、hse_ck、HCLK 等来源中选择。DAC 还有一个独立的采样保持时钟。

3. 时钟输出 MCO 与 LSCO

芯片提供两个 MCO(微控制器时钟输出)引脚,可以把内部时钟经 1 到 15 分频后输出到外部引脚,便于调试和测量;另外还有一个 LSCO 低速时钟输出,可输出 LSE 或 LSI。

五:时钟恢复系统 CRS

CRS 是 STM32C5 实现“无晶振 USB”的关键。它利用 USB 的 SOF(帧起始)包作为同步基准,在运行中不断微调 HSI 的频率,使 USB 通信满足时序要求;也可以用 LSE 或 HSE 分频出的 1 MHz 时钟做同样的动态校准。CRS 有四个可选同步源:GPIO 复用信号、LSE、USB SOF、HSE 分频出的 1 MHz 时钟。这样 USB 应用不需要额外接晶振,也不必用定时器做复杂的软件校准。

六:低功耗模式下的时钟

在 Stop 0 低功耗模式下,通过 HSIKERON 和 PSIKERON 控制位可以让 HSI 或 PSI 振荡器继续运行:只要对应使能了 HSIS、HSIK、HSIDIV3(或 PSI 相关时钟),振荡器在 Stop 模式下就会保持运行,便于快速唤醒;PSI 的参考时钟也会保持开启。唤醒后系统时钟由 STOPWUCK 位决定:默认选择 HSIDIV3 的 48 MHz,也可以选择 HSIS 的 144 MHz,在唤醒速度和功耗之间做权衡。





关键词: NUCLEO-C542RC     时钟配置    

共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]