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.
您好!
我正在研究如何使用 F28069在临界导通模式下控制升压 PFC 转换器。
我正在使用 PWM 模块在 TBCTR =零时将 ePWMA 输出设置为高电平、在 TBCTR = CMPA 时将 ePWMA 输出设置为低电平。 在 临界导通模式下运行时、我将使用模拟比较 器检测电感器电流的过零、并使用 COMPOUT 生成 DCAEVT1.SYNC 并复位 TBCTR、从而立即(理论上)将 ePWMA 设置为高电平。
问题在于、ePWMA 输出仅 在 COMPOUT 下降沿之后几纳秒变为高电平(我将 高电平配置为同步生成事件)。
使用的代码如下所示:
EPwm2Regs.TBPRD = maximum_period; // Set Period EPwm2Regs.CMPA.half.CMPA = maximum_period/2; // Set 50% duty EPWM2A EPwm2Regs.TBPHS.half.TBPHS = 0; // Value loaded into TBCTR after DCAEVT1.sync EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Asymmetrical mode EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Enable the reset EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // Don't sync down-stream module EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; // Set time-base clock prescale to one EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Set time-base clock prescale to one EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR=Zero EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; // set actions for EPWM2A EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Digital Compare EALLOW; EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT; // Digital Compare A High Input Select EPwm2Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI; // Digital Compare Output A Event 1 Selection: DCAH = high, DCAL = don't care EPwm2Regs.DCACTL.bit.EVT1SYNCE = DC_SYNC_ENABLE; // DCAEVT1 SYNC, Enable/Disable EPwm2Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1; // DCAEVT1 Source Signal Select EDIS;
下面的两个图像显示、无论 COMPOUT 脉冲的持续时间如何、SYNC 始终在 COMPOUT 的下降沿之后发生。
仅出于测试目的、我使用 ePWM1 CTR = 0来生成 ePWM2同步信号。 下图显示了在这种情况下同步响应速度快得多。
如何以 ePWM1模块生成的同步速度生成 DCAEVT1.SYNC 信号?
您好 Filipe、
要使用 EDGE 逻辑、我建议查看 DCEVTFILT。 可以在 DCFCTL 寄存器中设置不同的配置选项。
此致、
Marlyn