4. CCU4寄存器详解(下):周期寄存器(PRS)、比较寄存器(CRS)、捕获寄存器(CRS)、状态寄存器(STS)

在上一节中,我们深入剖析了CCU4的定时器核心寄存器——定时器寄存器(TMR)与分频器寄存器(PSC)。本节将继续完成剩余四个关键寄存器的解析:周期寄存器(PRS)、比较寄存器(CRS)、捕获寄存器(CRS)以及状态寄存器(STS)。这些寄存器共同构成了CCU4定时器在PWM生成、输入捕获和事件管理中的核心控制逻辑。

4.1 周期寄存器(PRS)—— 定义定时周期的标尺

周期寄存器(Period Register, PRS) 是CCU4定时器运行周期的基准。它决定了定时器从0向上计数到最大值(单次模式)或反复计数的上限(连续模式)。

  • 位宽:16位(与TMR一致)。
  • 复位值:0x0000。
  • 核心作用:当TMR的值等于PRS时,定时器产生周期匹配事件,该事件可触发中断、DMA请求或输出信号的周期翻转。
  • 影子寄存器机制:PRS具有影子寄存器。写入PRS的值不会立即生效,而是在下一个周期匹配事件发生时,才从影子寄存器加载到实际工作寄存器。这保证了PWM周期在切换时不会产生毛刺。
关键参数计算:
PWM频率 = 模块时钟频率 / (分频系数 × (PRS + 1))
例如:模块时钟 = 64 MHz,分频系数 = 2,PRS = 999,则PWM频率 = 64 MHz / (2 × 1000) = 32 kHz。

4.2 比较寄存器(CRS)—— PWM占空比的精确控制

比较寄存器(Compare Register, CRS) 用于设定与TMR进行比较的阈值。当TMR的值与CRS相等时,产生比较匹配事件,该事件用于控制PWM输出信号的翻转时刻,从而决定占空比。

  • 位宽:16位。
  • 复位值:0x0000。
  • 影子寄存器机制:与PRS类似,CRS也具备影子寄存器。写入CRS的值在下一个周期匹配事件时更新,确保占空比切换的平滑性。
  • 多通道支持:每个CCU4定时器切片通常包含多个比较通道(如CC4y_CRS和CC4y_CRS_S),用于生成互补PWM或死区控制。
占空比计算:
占空比 = (CRS + 1) / (PRS + 1) × 100%
当CRS = 0时,占空比接近0%;当CRS = PRS时,占空比接近100%。

4.3 捕获寄存器(CRS)—— 输入信号的精确时间测量

在输入捕获模式下,捕获寄存器(Capture Register, CRS) 用于记录外部事件发生时TMR的瞬时值。注意:捕获寄存器与比较寄存器在硬件上共享同一组寄存器地址,但功能由工作模式决定。

  • 触发源:外部输入引脚(如CCU40_IN0)或内部事件(如相邻定时器的溢出)。
  • 捕获边沿:可配置为上升沿、下降沿或双边沿捕获。
  • 多级捕获:支持连续捕获,每次捕获事件将TMR值锁存到CRS,并可触发中断读取。
  • 应用场景:测量脉冲宽度、周期、频率或编码器信号。
注意: 在捕获模式下,CRS的写入操作无效。读取CRS时,必须确保捕获事件已发生,否则读取到的值为上一次捕获的旧值或复位值。

4.4 状态寄存器(STS)—— 事件标志的实时监控

状态寄存器(Status Register, STS) 是一个只读寄存器,用于反映定时器当前的事件状态和运行标志。它是调试和中断服务程序中判断事件来源的关键。

位域 名称 描述
[0] IDLE 定时器空闲状态标志。当定时器停止且TMR=0时置1。
[1] RUN 定时器运行状态标志。定时器正在计数时置1。
[2] PER 周期匹配事件标志。当TMR等于PRS时由硬件置1,需软件清除。
[3] CM 比较匹配事件标志。当TMR等于CRS时置1,需软件清除。
[4] CAP 捕获事件标志。当捕获事件发生时置1,需软件清除。
[5] OV 溢出标志。当定时器计数超过PRS时置1(仅限连续模式)。
[6] UD 下溢标志。当定时器从0递减时置1(仅限中心对齐模式)。
使用建议: 在中断服务程序中,首先读取STS寄存器判断事件类型,然后通过写1清除对应标志位。例如:
uint16_t status = CCU40_CC40->STS;
if (status & CCU4_CC4_STS_PER_Msk) {
    // 处理周期匹配事件
    CCU40_CC40->STS = CCU4_CC4_STS_PER_Msk; // 清除标志
}
if (status & CCU4_CC4_STS_CM_Msk) {
    // 处理比较匹配事件
    CCU40_CC40->STS = CCU4_CC4_STS_CM_Msk;
}

4.5 寄存器协同工作流程

下图展示了在PWM生成模式下,PRS、CRS、TMR和STS四个寄存器之间的协同关系:

CCU4寄存器协同工作流程图 CCU4寄存器协同工作流程图(PWM模式) 模块时钟 PSC分频 TMR计数 PRS周期 CRS比较 STS状态 PWM输出 说明:TMR与PRS匹配产生周期事件,与CRS匹配产生比较事件,两者均更新STS标志,最终控制PWM输出。

4.6 寄存器配置实战要点

  1. 初始化顺序:先配置PRS和CRS,再启动定时器。避免在定时器运行中修改PRS导致周期突变。
  2. 影子寄存器更新时机:PRS和CRS的写入值在下一个周期匹配事件时生效。若需立即生效,可先停止定时器,写入后重新启动。
  3. 捕获模式下的CRS读取:务必在捕获中断中读取CRS,并清除CAP标志,防止重复触发。
  4. STS标志清除:通过写1清除对应位,写0无效。建议使用位掩码操作,避免影响其他标志。
  5. 调试技巧:在调试时,通过读取STS寄存器判断定时器是否按预期产生事件,是排查PWM无输出或捕获失败的首选方法。
快速参考:
- PRS决定频率,CRS决定占空比。
- 捕获模式下CRS记录时间戳,比较模式下CRS控制翻转点。
- STS是事件诊断的“仪表盘”,务必熟练使用。