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.

[参考译文] TMS320F280039:频率改变 PWM 应用

Guru**** 2393725 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1388464/tms320f280039-frequency-change-pwm-application

器件型号:TMS320F280039

工具与软件:

尊敬的 TI:

我正在使用 PWM5和 PWM7的一个频率更改项目。 我的主 ISR 频率是20KHz 的计时器。 PWM 将从20KHz 更改为400KHz。 在20K ISR 中、软件可以同时更改 PRD、CMPA、CMPB。

PWM 为向上/向下计数模式。  并从影子寄存器加载 PRD 和 CMP。

有时 AQ 子模块可能会丢失 CAU 以开启 PWMA。

我将 PWMA 更改为从 CC_CTR_ZERO、CC_CTR_PRD、CC_CTR_ZERO_PRD 加载时间。 但缺失仍然存在。

是否有任何其他我忘记配置的寄存器?

以下代码是 PWM5配置、PWM7是相同的。

        EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;  // set Shadow load
        EPwm5Regs.TBCTL2.bit.PRDLDSYNC = 0;
        EPwm5Regs.TBPRD = 400;               // PWM frequency = 1/(2*TBPRD)
        EPwm5Regs.CMPA.bit.CMPA = 200;   // set duty 50% initially
        EPwm5Regs.CMPA.bit.CMPAHR = 0;   // initialize HRPWM extension
        EPwm5Regs.CMPB.bit.CMPB = 200;   // set duty 50% initially
        EPwm5Regs.CMPB.bit.CMPBHR = 0;
        EPwm5Regs.TBPHS.all = 0;
        EPwm5Regs.TBCTR = 0;

        EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Select up-down
                                                        // count mode
        EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
        EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;          // TBCLK = SYSCLKOUT
        EPwm5Regs.TBCTL.bit.FREE_SOFT = 11;

        EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;  // LOAD CMPA on CTR = PRD
        EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
        EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
        EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

        EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;             // PWM toggle high/low
        EPwm5Regs.AQCTLA.bit.CAD = AQ_SET;
        EPwm5Regs.AQCTLB.bit.CBU = AQ_SET;             // PWM toggle high/low
        EPwm5Regs.AQCTLB.bit.CBD = AQ_CLEAR;

感谢你的帮助

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

    尊敬的 Yuncheng:

    [quote userid="589900" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1388464/tms320f280039-frequency-change-pwm-application 并且有时 AQ 子模块可能会错过 CAU 来打开 PWMA

    只是有时还是总是?

    在你的代码中,我看到你有: EPwm5Regs.AQCTLA.bit.CAU = AQ_clear;
    为什么您希望 PWMA 打开? PWMA 应该很低、PWMB 应该设置在 CAU 上。

    谢谢  

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

    有时会发生这种情况、但并非总是如此。

    抱歉,这个错误,我是指  AQ 子模块可能会丢失  CAD 以打开 PWMA。

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

    Yunsheng、

    让我尝试一下配置、然后回复给您

    谢谢

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

    您好、Yunsheng、

    我尝试了上述配置、无法看到 PWMA 缺少 CAD。

    是否存在发生这种情况的特定情况?

    谢谢