时基子模块
7 Jun 2024
Read time: 1 minute(s)
每个 PWM 信号发生器都有一个独有的时基子模块,用以确定 PWM 信号发生器所有事件的时序。PWM 信号频率由时基周期寄存器 TBPRD 和时基计数器模式决定,时基子模块信号和寄存器关系如下所示:
不同时基计数器模式下 PWM 周期和频率的关系显示了当时基计数器周期设置为 4(即 TBPRD = 4),时基计数器在递增模式、递减模式、增减模式下 PWM 周期和频率的关系及计算方式。每一步增加时间由时基时钟 TBCLK 决定,时基时钟由系统时钟 SYSCLKOUT(SYSCLKOUT 由 PLL 配置给出,详见章节)分频得到。
时基计数器有以下三种操作模式,可通过时基控制寄存器
(TBCTL) 进行选择:
- 递增模式:时基计数器从零开始递增,直到达到时基周期寄存器 (TBPRD) 中的值时,时基计数器重置为零并开始再次递增。
- 递减模式:时基计数器从时基周期寄存器 (TBPRD) 中的值开始递减,直到达到零时,时基计数器重置为时基周期寄存器 (TBPRD) 中的值并开始再次递减。
- 增减模式:时基计数器从零开始递增,直到达到时基周期寄存器 (TBPRD) 中的值,当达到时基周期寄存器 (TBPRD) 中的值时,时基计数器开始递减,直到达到零时,时基计数器重复该模式并开始递增。
时基周期寄存器(TBPRD)拥有影子寄存器,影子寄存器提供了一种保持寄存器更新与硬件同步的方法。
- 影子模式:使用时基周期影子寄存器时 (PWM_TBCTL[PRDLD] =0 ),只有当时基计数器(TBCTR) 等于 0 时,时基周期寄存器的值(TBPRD)才会更新,读写时基周期寄存器实际上都是操作它的影子寄存器,这样可以防止由于软件异步修改寄存器从而导致错误操作。
- 立即模式:不使用时基周期影子寄存器时 (PWM_TBCTL[PRDLD] =1 ),读写时基周期寄存器(TBPRD),就是立即对 TBPRD 进行操作,在此模式下,有可能出现在当前的周期,新写入的数值与计数器的数值错过比较时刻,造成当前周期输出的 PWM 占空比异常。