您好!
下面是我的 EPWM9配置。 我使用 PWM2到7生成了三相 SPWM。
我希望 t 生成与 SPWM 同步的50Hz 方波。 我使用 PWM9A 为 Uphase 生成50Hz、为 W phase 生成9B。
我的配置如下。
EALLOW;
// TZ1中断使能
EPwm9Regs.TZSEL.bit.OSHT1 = 1;// TZ 1拉电流以强制 PWM 为高电平
EPwm9Regs.TZCTL.bit.TZA = TZ_FORCE_HI;
EPwm9Regs.TZCTL.bit.TSB = TZ_FORCE_HI;
EPwm9Regs.TBPRD = 18750;//PWM 周期
EPwm9Regs.TBPHS.Half.TBPHS = 0;//相位为0
EPwm9Regs.TBCTR = 0;//清除计数器
//设置 TBCLK
EPwm9Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm9Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm9Regs.TBCTL.bit.PHSDIR = TB_UP;
EPwm9Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm9Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm9Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm9Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm9Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm9Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//设置比较
EPwm9Regs.CMPA.half.CMPA = 0;//初始比较
EPwm9Regs.CMPB = 0;//初始比较
EPwm9Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm9Regs.AQCTLA.bit.CAD = AQ_SET;
EPwm9Regs.AQCTLB.bit.CBU = AQ_SET;
EPwm9Regs.AQCTLB.bit.CBD = AQ_SET;
EPwm9Regs.AQSFRC.bit.ACTSFA = 0x02;
EPwm9Regs.AQSFRC.bit.ACTSFB = 0x02;
EPwm9Regs.AQSFRC.bit.RLDSF = 0x03;
EPwm9Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;//死区模块被禁用
EDIS;
为了生成正弦波、只要有正弦器件、我就将 PWM 引脚设为高电平、而正弦为负时将 PWM 引脚设为低电平。
50Hz 壁挂生成的代码;
实际要求有一些不同、但这是代码的一部分、其中我必须生成与 SPWM 同步的50Hz 降噪波。
VUREF_RAM_PWM12 =>正弦 PWM
IF (VUREF_RAM_PWM12 >= 0)
{
EPwm9Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm9Regs.AQCTLB.bit.CBU = AQ_SET;
}
其他
{
EPwm9Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm9Regs.AQCTLB.bit.CBU = AQ_CLEAR;
}
在引脚9A:有50Hz 方波
在引脚9B 上:只观察到恒定高+3.3V 电压。
我在 PWM7模块中进行了相同的配置来验证。 此外、PWM7A 提供50Hz 正弦波、而 PWM7B 提供恒定高电平。
有人可以帮助吗?
回复、
Umang