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.

[参考译文] TMS320F28069:PWM 输出在1个周期内异常地变为高电平

Guru**** 2378810 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1479677/tms320f28069-pwm-output-abnormally-goes-high-for-1-cycle

器件型号:TMS320F28069

工具与软件:

尊敬的专家:

通过使用 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Joyce、您好!

    请给我几天时间来回顾一下您的初始化。 感谢您的耐心等待!

    此致、

    Allison

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Joyce、您好!

    我猜可能需要考虑 CMP 值加载时间和值的时间。 您能详细说明一下您要将 CMP 从和更改为什么值吗?

    根据这些脉冲何时被加载、它可能在 CMPA 将 PWM 设定为高电平后发生。 请告知我您是否已排除此问题-您是否尝试过不同的加载模式?

    此致、

    Allison