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.

[参考译文] CCS/LAUNCHXL-F28377S:ePWM 输出电压电平会随着比较值的增加而偏移

Guru**** 2578945 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/648738/ccs-launchxl-f28377s-epwm-output-voltage-level-offsets-as-the-comparison-value-increases

器件型号:LAUNCHXL-F28377S

工具/软件:Code Composer Studio

您好!

我的 PWM 输出电压电平随着比较值 CMPA 的增加而变化。 电压波形中会出现偏移、如所附视频所示。 是否预计会发生这种情况? 如何删除此项?

感谢您访问 advance.www.youtube.com/watch

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

    您好、Felipe、

    您连接到该引脚的是什么? 您使用的是哪个引脚? PWM 的频率是多少?

    此致、

    Kris

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

    你(们)好、Kris。 感谢您的回答。

    没有任何元件连接到引脚、我只是测量它的电压。

    我使用 PWM2A 运行 ePWM_updown_AQ_cpu01.c 示例、因此输出为引脚80。 我对 AQCTLA 寄存器进行了如下配置:

       EPwm2Regs.AQCTLA.bit.CAD = AQ_SET;
       EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;

    仅使用 CMPA。 PWM 频率为10kHz。 我正在扩大和减少 epwm2中断中的 CMPA 值。 我没有使用 update_compare 函数。

    中断代码如下:

    (FLAG 是用于在增加和减少 CMPA 之间交替的变量。 我在此中断内设置 TBPRD、以便可以在运行时更改 PWM 频率。)

    _interrupt void epwm2_ISR (void)

       如果(标志= 0)
       {
       COUNTER++;
       如果(计数器= meu_TBPRD)标志= 1;
       Duty_cycle =(float)计数器/meu_TBPRD;

       MEU_CMPA = Duty_cycle*meu_TBPRD;
       EPwm2Regs.CMPA.bit.CMPA = meu_CMPA; //设置比较 A 值
       EPwm2Regs.TBPRD = meu_TBPRD;          //设置定时器周期
       //
       //清除此计时器的 INT 标志
       //
       EPwm2Regs.ETCLR.bit.INT = 1;

       //
       //确认此中断以接收来自组3的更多中断
       //
       PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
       }
       其他
       {
           计数器-;
           如果(计数器=0)标志=0;
           Duty_cycle =(float)计数器/meu_TBPRD;
           MEU_CMPA = Duty_cycle*meu_TBPRD;
           EPwm2Regs.CMPA.bit.CMPA = meu_CMPA;   //设置比较 A 值
           EPwm2Regs.TBPRD = meu_TBPRD;        //设置定时器周期
           //
           //清除此计时器的 INT 标志
           //
           EPwm2Regs.ETCLR.bit.INT = 1;

           //
           //确认此中断以接收来自组3的更多中断
           //
           PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
       }

    C 代码是复用的。 感谢 again.e2e.ti.com/.../epwm_5F00_updown_5F00_aq_5F00_cpu01_5F00_CHANGED.c

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

    感谢您提供更多信息。 我只想确认您是否使用了 LAUNCHXL-F28377S
    LaunchPad?

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

    我发现了问题、它是示波器探针。 现在、它按预期工作。 很抱歉耽误你的时间。 是否应删除主题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Felipe、

    感谢您的告知、我们很高兴您发现了这个问题。 我会把它留在这里、但由您决定。 您的情况可能会帮助其他人走下坡路。

    此致、
    Kris