普通的PWM简单配置就能输出指定占空比的波形,一些特殊功能,比如反向,斩波,低电平或高电平指定相位,随意配置等,只能增强型PWM(EPWM)能做到。
EPWMX有3组,分别是EPWM1、EPWM2、EPWM3
EPWM1有2个通道,EPWM1A和EPWM1B
EPWM2有2个通道,EPWM2A和EPWM2B
EPWM3有2个通道,EPWM3A和EPWM3B
(1)、TBPRD = 256,1个计数周期
(2)、CMPA = 128,EPWM1A通道的相位
(3)、TBCTL ,配置为增减模式,计数器从0递增到TBPRD,再从TBPRD递减到0,配置TBCLK分频参数为1,且持续运行
(4)、AQCTLA,配置counter为0、counter为PRD时无输出(保持之前状态),counter为CMPA递增阶段输出高,counter为CMPA递减阶段输出低。
占空比 = CMPA 相位 / TBPRD 周期
或高电平占空比 = TBPRD - CMPA + CMPA / TBPRD / 2
(1)增减模式时
频率 frequency = 主时钟 / TBCLK分频参数 / TBPRD周期 / 2
注意:增减模式时,2个TBPRD周期才能输出1个周期PWM,所以多除了个2
(2)递增模式或递减模式时
频率 frequency = 主时钟 / TBCLK分频参数 / TBPRD周期
频率 = (主时钟40M) / (TBCLK分频参数1) / (TBPRD周期256) / (2)= 78.13 K
占空比 = (相位128) / (TBPRD周期256) = 50 %
斩波1周期包含1段PWM波和1段低电平,PWM波在斩波中的比例就叫斩波占空比
(1)、TBPRD = 512,1个计数周期
(2)、 CMPA = 256,EPWM2A通道的相位
(3)、TBCTL,配置为增减模式,计数器从0递增到TBPRD,再从TBPRD递减到0,配置TBCLK分频参数为1,且持续运行
寄存器 AQCTLA,配置counter为0、counter为PRD时无输出(保持之前状态),counter为CMPA递增阶段输出高,counter为CMPA递减阶段输出低。
(4)、DBCTL,配置同时打开EPWM2A上升沿和下降沿延时功能。
(5)、DBRED = 32,上升沿延时计数(时钟cycle数)
(6)、DBFED = 32,下降沿延时计数(时钟cycle数)
(7)、PCCTL = 0x0001,打开斩波功能
(8)、PCDUTY = 0x0000ffff,PWM的占空比50%(1的个数占32位的比例)
斩波占空比 = CMPA 相位 / TBPRD周期
PWM占空比 = 1的个数占32位的比例
1个时钟cycle = 1 / 主时钟 = 多少秒
(1)增减模式时
斩波频率 frequency = 主时钟 / TBCLK分频参数 / TBPRD周期 / 2
注意:增减模式时,2个TBPRD周期才能完整输出PWM,所以多除了个2
(2)增减模式时
PWM频率 frequency = 主时钟 / 32
不延迟的斩波,有16个周期PWM输出
延迟的斩波,有15个周期PWM输出
注意:延迟1个周期输出PWM,即会丢失1个周期PWM,再输出剩下的15个周期PWM。
斩波频率 = (主时钟40M) / (TBCLK分频参数1) / (TBPRD周期512) / (2) = 39.0625 K
上图中斩波周期是25.6 us,斩波频率 = 1 / 0.0000256 s = 39.0625 K
斩波占空比 = (CMPA 相位 256) / (TBPRD周期 512) = 50%
配置了延迟,斩波占空比变成了 15 * 800 ns / 25.6 us = 12 us / 25.6 us = 46.875 %
PWM频率 = (主时钟 40M) / 32 = 1.25 M
PWM占空比 = 1的个数占32位的比例 = 50%
1个时钟cycle = 1 / (主时钟 40M) = 0.000000025 s
32 cycle = 0.000000025 s * 32 = 0.0000008 s = 800 ns(恰好为1个PWM周期)
输出低电平或高电平指定占空比的PWM,需要CPMA和CPMB这2个相位配合,配置当counter为CPMA时输出指定动作,配置当counter为CPMB时输出指定动作。
(1)TBPRD = 512,1个计数周期
(2)CMPA = 256,相位1
(3) CMPB = 64,相位2
(4)TBCTL,配置为增减模式,计数器从0递增到TBPRD,再从TBPRD递减到0,配置TBCLK分频参数为1,且持续运行
(5)AQCTLB,配置counter为0、counter为PRD时无输出(保持之前状态),counter为CMPA递增阶段、递减阶段时无输出(保持之前状态)。counter为CMPB递增阶段时输出高,递减阶段时输出低。
频率 frequency = 主时钟40M / (TBCLK分频参数1) / (TBPRD周期256) / 2 = 78.13 K
低电平占空比 = CMPB 相位 / TBPRD 周期 = 64 / 256 = 25%