Edit online

PWM 输出模式

PWM 产生

通过设置寄存器字段 XPWM_MODE = 0x0,使 XPWM 进入 PWM 输出模式。在该模式下,通过周期寄存器 XPWM_PRD 和比较寄存器 XPWM_CMP,可以调节 PWM 的频率以及占空比。

PWM 的生成方式,固定为在计数器 XPWM_CNT = 0 的时刻,XPWM 的输出为高电平。在 XPWM_CNT = XPWM_CMP 的时刻,XPWM 的输出为低电平。

PWM 的输出频率和占空比计算方式如下:
  • PWM_FRE = XPWM_CNT_CLK / XPWM_PRD

  • PWM_DUTY = XPWM_CMP / XPWM_PRD

  • XPWM_CNT_CLK = SYS_CLK / DIV

下图以 XPWM_PRD = 0x7,XPWM_CMP = 0x4 的 PWM 输出为例,占空比为 4/7:



动态更新

XPWM 的周期值 XPWM_PRD 和比较值 XPWM_CMP,支持动态更新,更新的方式
  • 立即更新:修改 XPWM_PRD 和 XPWM_CMP 寄存器后,PWM 立即生效。
  • 影子更新:修改 XPWM_PRD 和 XPWM_CMP 寄存器后,在下一个周期进行 PWM 的更新,即下一个周期的 XPWM_CNT_Z 对应的时刻进行更新。

XPWM_CMP 立即更新的举例:

XPWM_CMP 从 CMP0 更新到 CMP1,其中 CMP1 小于 CMP0,也小于当前的计数器数值。



XPWM_CMP 影子更新的举例

XPWM_CMP 从 CMP0 更新到 CMP1,其中 CMP1 小于 CMP0,也小于当前的计数器数值。



XPWM_PRD 立即更新的举例:

XPWM_PRD 从 PRD0 更新到 PRD1,其中 PRD1 小于 PRD0。



XPWM_PRD 影子更新的举例

XPWM_PRD 从 PRD0 更新到 PRD1,其中 PRD1 是小于 PRD0。



中断信号

XPWM 在 PWM 模式下,支持中断的产生,中断信号如下:

  • XPWM_CNT_Z:在计数器 XPWM_CNT = 0 的时刻,对应产生的标记信号。
  • XPWM_CNT_CMP:在计数器 XPWM_CNT = XPWM_CMP 的时刻,对应产生的标记信号。
  • XPWM_CNT_PRD:在计数器 XPWM_CNT =(XPWM_CNT_PRD - 1)的时刻,对应产生的标记信号。