<RT1176系列14>CCM(Clock Controller Module)解读
1、概述
时钟控制模块(CCM)负责管理片上模块时钟。振荡器、锁相环(PLL)和相位分数分频器(PFD)将生成固定或可变频率的时钟源。
- 振荡器(Oscillators):提供基础时钟源,例如24MHz 外部晶振(OSC_24M)、400MHz 内部高速振荡器(OSC_RC400M)。
- 锁相环(PLL):对基础时钟进行倍频,生成高频时钟,例如 RT1176 的 ARM_PLL 将 24MHz 倍频至 792MHz(供 M7 核使用),SYS_PLL2 倍频至 528MHz(供外设和总线使用)。
- 相位分数分频器(PFD):对 PLL 输出的高频时钟进行精准分频,生成多种中频时钟,例如 SYS_PLL3_PFD2 将 480MHz 分频至 270MHz(用于 LPSPI4 等外设),灵活性高于普通整数分频。
2、模块框图

时钟控制模块(CCM)内部的时钟根生成逻辑,会生成内核、总线和外设模块所需的各类时钟根。这些时钟根将通过低功耗时钟门控(LPCG) 分配至各个模块,LPCG 包含每个时钟对应的时钟门控逻辑。
CCM 中 LPCG 的控制信号会作为时钟使能信号的来源。由于部分时钟在复位期间需要被关闭,系统复位控制器(SRC)也会向 LPCG 发送时钟门控信号。
在低功耗模式下,通用电源控制器(GPC)会向 CCM 发送低功耗模式状态信号,CCM 会根据配置启用时钟门控。同时,CCM 可能会撤销锁相环(PLL)的使能信号,以便这些模块在低功耗模式下断电。
- 时钟根与 LPCG 的关联:你之前配置 LPSPI4 时钟时用到的
kCLOCK_Root_Lpspi4就是 CCM 生成的 “时钟根”,LPCG 相当于这个时钟根的 “开关”—— 通过控制 LPCG 的门控信号,可单独开启或关闭 LPSPI4 的时钟(不影响其他模块),这也是你能单独修改 LPSPI4 频率的核心原因。 复位与低功耗的时钟控制:
- 复位时(如系统上电复位),SRC 会关闭非必要外设的时钟(如 LPSPI、UART 等),避免复位期间模块误动作。
- 低功耗模式下,CCM 关闭 PLL 和外设时钟的逻辑,可减少功耗。
3、模块特性
- 每个时钟根支持 8 路时钟源
- 8 位分频器,每个时钟根最高支持 256 分频
- 每个时钟根可通过软件关闭
- 4 位分数分频(含分子和分母配置)
- 16 组预设时钟根配置参数,支持电源模式切换时自动切换・时钟组
- 同步时钟组,组内各时钟可动态切换(无需停机)
- 时钟组可通过软件关闭
- 16 组预设时钟组配置参数,支持电源模式切换时自动切换・外设时钟可根据 CPU 平台、软件配置或系统电源模式自动门控(开启 / 关闭)・锁相环(PLL)和振荡器可根据 CPU 平台、软件配置或系统电源模式自动关闭・两种访问控制机制:信任区(Trustzone)和域(Domain)
- 每个组件可独立设置保护机制
- 为用户模式、特权模式、安全模式、非安全模式独立配置权限
- 支持域模式访问的白名单控制
- 访问控制配置可独立锁定(防止误修改)
4、时钟树


5、CCM 模式
CCM 功能模块支持以下模式:
- 未分配模式(Unassigned Mode)
- 域模式(Domain Mode)
- CPU 低功耗模式(CPULPM)
- 设定点模式(Setpoint Mode)
注意:在任何模式下,任何域中的所有寄存器均可读取,但写入访问会受保护机制限制。
5.1未分配模式(Unassigned Mode)
若时钟未分配至域模式、设定点模式或 CPU 低功耗模式,则自动进入未分配模式。复位后,所有时钟源、时钟根、时钟门控和时钟组均处于未分配模式。
在未分配模式下,域访问控制机制禁用,但信任区(Trustzone)访问控制仍生效。
时钟源:时钟源配置来自
OSCPLLn_DIRECT寄存器(PLL / 振荡器需在 GPC 模式下工作)。仅当通过信任区认证后,这些寄存器才可在未分配模式下访问;在 CPU 低功耗模式或设定点模式下,这些寄存器无效且不可写入。时钟根:时钟根配置来自
CLOCK_ROOTn_CONTROL寄存器。仅当通过信任区认证后,这些寄存器才可在未分配模式下访问。时钟组:时钟组配置来自
CLOCK_GROUPn_CONTROL寄存器。在未分配模式下,任何域通过信任区认证后均可修改这些寄存器。时钟门控(LPCG):时钟门控配置来自
LPCGn_DIRECT寄存器。仅当通过信任区认证后,这些寄存器才可在未分配模式下访问;在 CPU 低功耗模式或设定点模式下,这些寄存器不可修改且无效。
5.2 域模式(Domain Mode)
在域模式下,域访问控制机制启用。
时钟源:时钟源配置来自
OSCPLLn_DIRECT寄存器。仅当通过信任区认证且访问来自白名单中的域时,才可访问该寄存器;在 CPU 低功耗模式或设定点模式下,该寄存器无效且不可写入。时钟根:基于域的认证机制激活,仅白名单中的域可修改
CLOCK_ROOTn_CONTROL寄存器。时钟组:时钟组配置来自
CLOCK_GROUPn_CONTROL寄存器。由于域认证机制生效,仅白名单中的域可修改这些寄存器。时钟门控(LPCG):时钟门控配置来自
LPCGn_DIRECT寄存器。仅当通过信任区认证且访问来自白名单中的域时,才可访问该寄存器;在 CPU 低功耗模式或设定点模式下,该寄存器不可修改且无效。
注意:域配置寄存器可在未分配模式下由任何域写入,但需通过信任区认证。
5.3 CPU 低功耗模式(CPULPM)
CPU 低功耗模式根据通用电源控制器(GPC)的低功耗信号控制振荡器、PLL 和 LPCG。
时钟源:
OSCPLLn_DOMAIN寄存器中的 3 位字段用于为每个 CPU 平台选择时钟源的依赖级别,有效值如下:- 0:任何模式下均不需要该时钟源
- 1:仅运行(RUN)模式需要,等待(WAIT)、停止(STOP)模式不需要
- 2:运行(RUN)和等待(WAIT)模式需要,停止(STOP)模式不需要
- 3:运行(RUN)、等待(WAIT)和停止(STOP)模式需要
- 4:运行(RUN)、等待(WAIT)、停止(STOP)和挂起(SUSPEND)模式需要
时钟根:不支持此模式。
时钟组:不支持此模式。
时钟门控(LPCG):
LPCGn_DOMAIN寄存器中为每个 CPU 平台设置 3 位时钟依赖级别(取值与时钟源相同)。时钟门控会判断每个 CPU 平台是否需要该时钟,若不需要则关闭时钟。
5.4 设定点模式(Setpoint Mode)
时钟源:设定点寄存器通过
OSCPLLn_SETPOINT寄存器为系统工作模式定义 16 个时钟源工作点(16 位)。当系统工作模式从一个设定点切换到另一个时,时钟源会查询对应的值,并根据通用电源控制器(GPC)的请求提供时钟。时钟根:运行在此模式下的时钟根不受
CLOCK_ROOTn_CONTROL寄存器影响,且所有写入访问被阻断。设定点寄存器为系统工作模式定义 16 个时钟根工作点。当系统工作模式切换时,时钟根会查询对应的值,并根据 GPC 的请求更新配置。参考CLOCK_ROOTn_SETPOINTm寄存器查看哪些时钟根支持设定点模式。速度等级(Speed Grade):在设定点模式下,需通过
CLOCK_ROOTn_SETPOINTm为时钟根通道提供速度等级信息。时钟通道利用该信息判断在系统供电电压变化前还是后修改时钟配置。等级值越小,表示时钟速度越快(例如,0 对应最快时钟,15 对应最慢时钟)。设定点逻辑通过速度等级判断时钟在设定点切换时是升速还是降速,并处理与电源控制等其他组件的关联。每个设定点配置都对应一个速度等级,相同速度的设定点可允许等级值更高、更低或相等。时钟组:在此模式下,
CLOCK_GROUPn_CONTROL寄存器无效,所有写入访问被阻断。设定点寄存器为系统工作模式定义 16 个时钟组工作点。当系统工作模式切换时,时钟组会查询对应的值,并根据 GPC 的请求更新配置。在设定点模式下,需通过CLOCK_ROOTn_SETPOINTm为时钟根通道提供速度等级信息。时钟门控(LPCG):设定点寄存器为系统工作模式定义 16 个时钟门控工作点。当系统工作模式切换时,时钟门控会查询对应的值,并根据 GPC 的请求更新配置。在设定点模式下,域配置寄存器不影响时钟源,且所有写入访问被阻断。
注意:这些寄存器仅可在未分配模式下通过信任区认证后修改。当时钟通道、源、根或门控被分配至设定点模式后,应用程序无法修改其寄存器;若需修改设定点值,需先将时钟通道切换至未分配模式。
