10.4.2. 功能描述
每个PWM信号发生器包含4个子模块,分别是时基(Time-Base)子模块、计数比较(Counter-Compare)子模块、动作限定(Action-Qualifier)子模块、事件触发(Event-Trigger)子模块, 每个子模块可以通过软件配置实现特定功能。

图 10.4 PWM信号发生器框图
10.4.2.1. 时基子模块
每个PWM信号发生器都有一个自己的时基子模块,用以确定PWM信号发生器所有事件的时序。

图 10.5 时基子模块信号和寄存器
PWM信号频率由时基周期寄存器TBPRD和时基计数器模式决定,下图给出了时基计数器在递增模式、递减模式、增减模式下PWM周期和频率的关系。 周期设置为4(TBPRD=4),每一步增加时间由时基时钟TBCLK决定,时基时钟由系统时钟SYSCLKOUT分频得到。

图 10.6 时基频率和周期
10.4.2.2. 计数比较子模块
计数比较子模块将时基计数器的值作为输入,该值不断与计数比较器A(CMPA)和计数比较器B(CMPB)寄存器的值作比较, 当时基计数器的值等于任意一个比较寄存器的值时,计数比较单元将产生一个相应的事件。

图 10.7 计数比较子模块信号和寄存器
10.4.2.3. 动作限定子模块
动作限定子模块用于决定哪个事件被用来转换为哪种动作类型,从而在PWMxA和PWNxB输出要求的波形。

图 10.8 动作限定子模块的输入和输出

图 10.9 PWMxA和PWMxB可能的动作限定器动作输出
10.4.2.4. 事件触发子模块
事件触发子模块管理由时基子模块和计数比较子模块产生的事件,产生一个中断到CPU。

图 10.10 事件触发子模块与中断控制器的互连