This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
早上好。
我先设置 PWM、然后将 GPIO 设置为 PWM 功能。
此时、将出现 PWM 输出。
PWM 模式如下所示。
频率:50kHz
模式:向上向下
TBPRD:100M/50k/2=1000
DBRD 和 FED:TBPRD x 2 = 2000
初始化顺序如下:
void device_init (void)
{
Dint;
IER = 0x0000;
IFR = 0x0000;
InitSysCtrl();
PWM_peripheral_clock_stop ();
PWM_init();
PWM_GPIO_init ();
grid_PWM_protection_init ();
PWM_PERFICE_CLOCK_START ();
interrupt_init();
interrupt_enable();
}
PWM 设置如下所示。
void PWM_init (void)
{
EALLOW;
EPwm7Regs.TBCTL.bit.PRDLD = 0;
EPwm7Regs.TBPRD =((uint16)(grid_PWM_PERIOD)>> 1);
EPwm7Regs.TBCTR = 0;
EPwm7Regs.TBPHS.bit.TBPHS = 0;
EPwm7Regs.TBCTL.bit.CTRMODE = 2;
EPwm7Regs.TBCTL.bit.CLKDIV = 0;
EPwm7Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm7Regs.CMPA.bit.CMPA = 0;
EPwm7Regs.CMPCTL.bit.LOADASYS = 0;
EPwm7Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm7Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm7Regs.AQCTLA.ALL = 0;
EPwm7Regs.AQCTLA.bit.CAU = 1;
EPwm7Regs.AQCTLA.bit.CAD = 3;
EPwm7Regs.AQCTLA.bit.ZRO = 2;
EPwm7Regs.DBCTL2.bit.SHDWDBCTLMODE = 1;
EPwm7Regs.DBCTL2.bit.LOADDBCTLMODE = 0;
EPwm7Regs.DBCTL.bit.LOADREMODE = 1;
EPwm7Regs.DBCTL.bit.LOADFEDMODE = 0;
EPwm7Regs.DBCTL.bit.HALFCYCLE = 0;
EPwm7Regs.DBRED.bit.DBRED = GGE_PWM_PERIOD;
EPwm7Regs.DBFED.bit.DBFED = GRGE_PWM_PERIOD;
EPwm7Regs.DBCTL.bit.OUT_MODE = 3;
EPwm7Regs.DBCTL.bit.IN_MODE = 0;
EPwm7Regs.DBCTL.bit.DEDB_MODE = 0;
EPwm7Regs.DBCTL.bit.POLSEL = 2;
EPwm7Regs.TBCTL.bit.PHSEN = 0;
EPwm7Regs.TBCTL.bit.SYNCOSEL = 1;
EPwm7Regs.TZFRC.bit.OST = 1;
EPwm7Regs.AQSFRC.bit.RLDSF = CLR;
//EPwm7Regs.AQCSFRC.bit.CSFA = 1;
//EPwm7Regs.AQCSFRC.bit.CSFB = 1;
EDIS;
}
GPIO 设置如下。
void PWM_GPIO_init (void)
{
EALLOW;
GpioDataRegs.GPADAT.bit.GPIO12=0;
GpioDataRegs.GPADAT.bit.GPIO13 = 0;
GpioDataRegs.GPACLEAR.bit.GPIO12=1;
GpioDataRegs.GPACLEAR.bit.GPIO13=1;
GpioCtrlRegs.GPADIR.bit.GPIO12=1;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO12=0;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO12=1;//执行此部分时、PWM 输出发生。
GpioCtrlRegs.GPAMUX1.bit.GPIO13=1;//执行此部分时、PWM 输出发生。
EDIS;
}
PWM 跳闸设置如下所示。
void PWM_protection_init (void)
{
EALLOW;
///------------------ //
//---- ePWM7配置--- //
///------------------ //
//数字比较跳闸选择寄存器
EPwm7Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 3;
EPwm7Regs.DCTRIPSEL.bit.DCALCOMPSEL = 4;
EPwm7Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 6;
//Trip Zone 数字比较器选择寄存器
EPwm7Regs.TZDCSEL.bit.DCAEVT1 = 2;
EPwm7Regs.TZDCSEL.bit.DCAEVT2 = 4;
EPwm7Regs.TZDCSEL.bit.DCBEVT1 = 2;
//数字比较 A/B 控制寄存器
EPwm7Regs.DCACTL.bit.EVT1SRCSEL = 0;
EPwm7Regs.DCACTL.bit.EVT2SRCSEL = 0;
EPwm7Regs.DCBCTL.bit.EVT1SRCSEL = 0;
EPwm7Regs.DCACTL.bit.EVT1FRCSYNCSEL = 0;
EPwm7Regs.DCACTL.bit.EVT2FRCSYNCSEL = 0;
EPwm7Regs.DCBCTL.bit.EVT1FRCSYNCSEL = 0;
//TRIP 区域选择寄存器
EPwm7Regs.TZSEL.bit.DCAEVT1 = 1;
EPwm7Regs.TZSEL.bit.DCAEVT2 = 1;
EPwm7Regs.TZSEL.bit.DCBEVT1 = 1;
EPwm7Regs.TZSEL.bit.CBC6 = 1;
//TRIP 区域控制寄存器
EPwm7Regs.TZCTL.bit.TZA = 2;//执行此部件时、PWM 输出为低电平。
EPwm7Regs.TZCTL.bit.TSB = 2; //执行此部件时、PWM 输出为低电平。
//跳匣区域清除寄存器
EPwm7Regs.TZCLR.bit.OST = 1;
EPwm7Regs.TZCLR.bit.DCAEVT1 = 1;
EPwm7Regs.TZCLR.bit.DCAEVT2 = 1;
EPwm7Regs.TZCLR.bit.DCBEVT1 = 1;
//TRIP Znoe 强制寄存器
EPwm7Regs.TZFRC.bit.OST = 1;
EDIS;
}
黄色:PWM 输出 A (Vgs、高侧 FET)
蓝色:PWM 输出 B (Vgs、低侧 FET)
我有一个 TIEVM-HV-PH-DCAC 板。
导入网格连接反转器 LCLFltr_F2837x 后、观察到 Q1和 Q2的 Vgs 波形。
Q1 Vgs 生成大约90uS 的高输出。
这似乎是一个与我正在发展的症状相似的症状。
如何实现低输出?
黄色:Q1的 VGS (PWM 输出 A)
蓝色:Q2的 VGS (PWM 输出 B)
你好、Lewis、
如果我理解正确、现在您正在尝试强制两个输出均为低电平?
我建议更改 PWM_GPIO_init ()和 grid_PWM_protection_init ()函数的顺序、以便在为 ePWM 配置引脚时、已经完全设置了跳闸软件强制。
此致、
Marlyn
早上好。
我通过更改您所说的顺序来解决这个问题。
很容易:)
谢谢你。