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

时钟系统可以从不同时钟源(PLL、内部环形振荡器、USB 时钟等)引入时钟,并使用多个时钟发生器来提供所需的时钟。时钟系统可以独立启动和停止时钟,并改变某些时钟频率,同时将其他时钟频率保持在最佳状态频率。

图 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 输入时钟 (可选)

时钟系统可以从不同时钟源(PLL、内部环形振荡器、USB 时钟等)引入时钟,并使用多个时钟发生器来提供所需的时钟。
浙公网安备 33010602011771号