RP2040 时钟树拆解:时钟源、发生器和外设时钟

时钟系统

image.png

时钟系统可以从不同时钟源(PLL、内部环形振荡器、USB 时钟等)引入时钟,并使用多个时钟发生器来提供所需的时钟。时钟系统可以独立启动和停止时钟,并改变某些时钟频率,同时将其他时钟频率保持在最佳状态频率。
a3172c8b-a843-4003-bce7-1805820a74dd.png
图 2.38 芯片子系统复位逻辑电路示意图

上图中,我们可以看到:

  • 左边(Clock sources)时钟源(总电源):包括环形振荡器(ROSC,芯片自带的 “备用小发电机”)、晶体振荡器(XOSC,精准的 “主电网”)、USB PLL/System PLL(“电压放大器”,把基础时钟升到高频);
  • 中间(Clocks)时钟发生器(变压器 + 开关):每个发生器都能 “调整时钟频率”(÷ 号代表分频,比如把 125MHz 分成更低的频率)、“单独开关”(en 代表开关);
  • 右边各个硬件模块(电器):每个模块都由对应的时钟发生器供电,比如 USB 用固定的 48MHz 时钟,系统核心用 125MHz 高频时钟。

总结来说,RP2040 的时钟系统就是一套 “时钟树”,先从环形振荡器、晶体振荡器、PLL 等时钟源获取基础时钟,再通过多个​时钟发生器​,把这些基础时钟转换成不同频率的时钟,分配给 GPIO、ADC、USB 等不同模块还能单独启动 / 停止某个模块的时钟、调整频率,既满足不同模块的节奏需求,又能省功耗。

常用的一些时钟参数如下:

  • PLL_SYS = 125MHz (默认) 133MHz (最高)
  • PLL_USB = 48MHz (固定)
  • CLK_SYS = PLL_SYS/CLK_REF (系统时钟,除非 DORMANT 模式,否则在这两个时钟中选择)
  • CLK_PERI = CLK_SYS (外设时钟)
  • CLK_USB = PLL_USB (固定)
  • CLK_ADC = PLL_USB (固定)
  • CLK_RTC = 46875Hz (用于 RTC 计数,12MHz / 256 = 46875Hz,CLKDIV_M1 = 46874 时,频率 1Hz)
  • GPCLK INPUT = 从 IO 输入时钟 (可选)
posted @ 2026-07-31 18:08  FreakStudio  阅读(12)  评论(0)    收藏  举报