工具与软件:
尊敬的专家:
通过使用 F28069、我们发现当占空比从非0%变为0%时、1个 PWM 周期的 EPWM4B 输出高杠杆。 潜在的问题可能是什么?
配置:将 PWM 开关周期配置为38.4K、在过零点触发 PWM 中断、并配置为每2个 PWM 过零事件触发一次 PWM 中断(EPwm4Regs.ETPS.bit.INTPRD = 2)。 执行中断函数中的控制算法并更改 PWM 比较值。
配置代码如下:
EPwm4Regs.CMPCTL.bit.SHDWAMODE = 0; // Compare A Register Shadow mode (比较 A 寄存器影子模式)
EPwm4Regs.CMPCTL.bit.SHDWBMODE = 0; // Compare B Register Shadow mode (比较 B 寄存器影子模式)
EPwm4Regs.CMPCTL.bit.LOADAMODE = 0; // Load on = zero (在 CTR 上加载)
EPwm4Regs.CMPCTL.bit.LOADBMODE = 0; // Load on = zero (在 CTR 上加载)
EPwm4Regs.AQCTLA.all = 0;
EPwm4Regs.AQCTLB.all = 0;
EPwm4Regs.AQCTLA.bit.CAU = 2;
EPwm4Regs.AQCTLA.bit.CAD = 1;
EPwm4Regs.AQCTLA.bit.PRD = 2;
EPwm4Regs.AQCTLA.bit.ZRO = 1;
EPwm4Regs.AQCTLB.bit.CAU = 2;
EPwm4Regs.AQCTLB.bit.CAD = 1;
EPwm4Regs.AQCTLB.bit.PRD = 2;
EPwm4Regs.AQCTLB.bit.ZRO = 1;
EPwm4Regs.ETSEL.bit.INTEN = 1; // Enable EPWMxINT generation (启用 EPWMxINT 生成)
EPwm4Regs.ETSEL.bit.INTSEL = 1; // Enable CTR = zero event (启用 CPU =归零事件)
EPwm4Regs.ETSEL.bit.SOCAEN = 1; // Enable SOCA pulse (启用 SOCA 脉冲)
EPwm4Regs.ETSEL.bit.SOCASEL = 3; // Enable CTR = zero event (启用 CPU =归零事件)
EPwm4Regs.ETPS.bit.INTPRD = 2; //在 INTCNT=01 (第一个事件)时生成中断每2个过零事件触发1中断
EPwm4Regs.ETPS.bit.SOCAPRD = 1; //在 SOCACNT=01 (第一个事件)上生成脉冲
请帮助提供一些建议,谢谢!
Joyce