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.

[参考译文] TMS320F28377S:ePWM 输出设置为低电平

Guru**** 2469720 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/911558/tms320f28377s-epwm-output-set-to-low

器件型号:TMS320F28377S

你好

我有一个与 TMS320F28377S 的 ePWM 输出相关的问题。

两个控制板同步以控制电路。

主板使用 SPI 通信执行控制并向从板发送占空比基准。

但是、PWM 运行期间、PWM 不会在一个周期发生、如图所示。

发生上述现象的 PWM 端口没有规律性、常量只在大约0.5的占空比部分出现。

ADC 中断和 SPI 中断在从板中工作。

起初、两个中断被操作、因此预计它们会相互碰撞。  

如果电源转换电路不工作、它将正常工作。 因此、我认为中断看起来不错。 初始化代码看起来也很好。

如果您能给我任何提示或建议、我将不胜感激。

非常感谢。

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

    很抱歉、我忘记了图片

    C1是 EPWM1A、C3是 EPWM2A。

    非常感谢。

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

    您好!


    [引用 user="dongkwan Yoe"]主板使用 SPI 通信执行控制并向从属板发送占空比参考。
    主器件侧或从器件侧的 PWM 脉冲是否缺失?

    [引用 user="dongkwan Yoe"]但是,PWM 运行期间,PWM 不会在一个周期发生,如图所示。

    是否在您更新通过 SPI 接收的占空比时发生这种情况?

    [引用 user="dongkwan Yoe"]两个控制板同步以控制电路。

    同步是如何完成的? 这是在主器件和从器件之间使用 EXTSYNCIN 实现的吗?



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

    您好、感谢您的回复。

    1。 PWM 脉冲仅在从板侧缺失。

    2.我无法准确确认。  

    SPI 中断语法如下。

    我已检查 ChipSelect 和 GPIO57

    我认为、通信结束后 PWM 更新正在进行中、因为在 ChipSelect 信号返回到高电平后 GPIO57的脉冲(清除后置位)将运行。

    interrupt void spibRx_int(){
     OPMODE = 2;
     Duty_ref_lim = SpibRegs.SPIRXBUF & 0xFFFF;
     GpioDataRegs.GPBSET.BIO57 = 1;
     GpioDataRegs.GPBCLEAR.bit.GPIO57=1;
     EPwm1Regs.CMPA.bit.CMPA =(int)(Duty_top_phaseB *(float) PWM_G1.phase_Duty_max_scaled);
     EPwm2Regs.CMPA.bit.CMPA =(int)(Duty_bot_phaseB *(float) PWM_G1.PHASE_Duty_max_scaled);
     EPwm3Regs.CMPA.bit.CMPA =(int)(Duty_top_phaseA *(float) PWM_G1.phase_Duty_max_scaled);
     EPwm4Regs.CMPA.bit.CMPA =(int)(Duty_bot_phaseA *(float) PWM_G1.phase_Duty_max_scaled);
     SpibRegs.SPIFFRX.bit.RXFFOVFCLR = 1;
     SpibRegs.SPIFFRX.bit.RXFFINTCLR = 1;
     PieCtrlRegs.PIEACK.ALL |= M_INT6;
     RX_cnt ++;
    3.是的、主板使用 OutputXbar 作为 SYNCOUT、从板使用 InputXBar 作为 SYNCIN。
    期待您的回答。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 user="dongkwan Yoe">2. 我无法准确确认它。  [/报价]

    代码看起来正常。 您可以检查正在更新的值是否符合预期。

    [引用 USER="dongkwan Yoe"]是的,主板使用 OutputXbar 作为 SYNCOUT,从板使用 InputXBar 作为 SYNCIN。

    根据从主器件到从器件的同步脉冲应用时间、比较事件可能会由于同步导致的比较值突然变化而丢失。 您可以通过禁用跨设备的同步来检查是否存在这种情况。  

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

    感谢您的回复。

    是否有可能由于噪声而忽略 SYNC 信号?

    或者、"由于同步导致比较值突然变化、比较事件可能会丢失"这意味着什么?

    同步信号是周期性的、因此我很难理解比较值会由于同步而突然变化。

    如果问题是比较值突然变化、它是否与 SPI 中断相关? 或者是否有办法去检查它?

    如何检查同步信号是否缺失?

    如果没有 SYNC、则无法驱动电源转换电路、因此无法分离和检查 SYNC 信号。

    与主器件相比、从模块从 ePWM 1A/1B 延迟90度到 ePWM 4A/4B、从 ePWM 5A5B 延迟到6A6B 延迟0度。  它是否也可以相关?

    ---从机模块上设置的 ePWM 代码---

    --Intputxbar 设置---

    EALLOW;
    GpioCtrlRegs.GPBGMUX1.bit.GPIO34 = 0;
    GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
    GpioCtrlRegs.GPBPUD.bit.GPIO34=0;
    GpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 3;
    GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0;

    EDIS;

    EALLOW;
    InputXbarRegs.INPUT5SELECT = 34;
    EDIS;

    --ePWM 中断设置--

    中断 void epwm1_timer_ISR (void)

    ePWM_ISR_FLAG = 1;

    EPwm1Regs.TBCTL.bit.SWFSYNC = 0;//主器件同步
    EPwm1Regs.ETCLR.bit.INT = 1;
    PieCtrlRegs.PIEACX.ALL |= PIEACK_Group3;

    --ePWM 设置(TBPHS)--  

    EPwm1Regs.TBPRD =(无符号整型) 5000.0;
    EPwm1Regs.TBPHS.bit.TBPHS =(无符号整型) 2500.0;
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
    EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;
    EPwm1Regs.TBCTL.bit.PHSDIR = TB_DOWN;
    EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

    (ePWM 1 ~ ePWM 4设置相同。)

    EPwm5Regs.TBPRD =(无符号整型) 5000.0;
    EPwm5Regs.TBPHS.bit.TBPHS =(无符号整型) 0.0;
    EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
    EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE;
    EPwm5Regs.TBCTL.bit.PHSDIR = TB_DOWN;
    EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

    (ePWM 5 ~ ePWM 6设置相同。)

    期待您的回答。

    非常感谢。

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

    您好!

    [引用 user="dongkwan Yoing"]

    是否有可能由于噪声而忽略 SYNC 信号? [/报价]  

    噪声实际上可能会在输入端产生一些意外的同步脉冲。

    您还可以打开 GPIO 鉴定来过滤噪声。 在器件 TRM 文档中查找 GPIO 鉴定逻辑。

    [引用 user="dongkwan Yoe"]同步信号是周期性的,因此,我很难理解比较值由于同步而突然变化。

    同步脉冲是周期性的、但由于振荡器/晶振时钟的微小变化、两个不同器件的频率和 PWM 随时间的推移而发生不同的漂移。

    [引用 user="dongkwan Yoe"]如何检查同步信号是否丢失?

    如有可能、通过监控同步信号和 PWM 输出并根据脉冲持续时间触发示波器。

    [引用用户="dongkwan Yoe">与主器件相比、从模块从 ePWM 1A/1B 延迟到 ePWM 4A/4B 延迟90度、从 ePWM 5A5B 延迟到6A6B 延迟0度。  它是否也可能相关?

    我认为这不是问题。

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

    感谢您的快速、友好的回复。

    我已经尝试了两种条件、其中 QSEL 寄存器为3和2、但结果相同。

    现在、QSEL 设置为"3"

    2.正如您所建议的、我将同时检查 PWM 和 SYNC 信号。

    我认为振荡器的变化不是问题。 因为当功率转换电路未被驱动时、根本没有问题。

    期待您的回答。

    非常感谢。

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

    感谢您的关注。

    我同时检查了同步信号和 PWM。

    我附图。

    绿色信号为 SYNC、蓝色信号为 PWM。

    我认为同步信号看起来不错。

    如果问题是 CMPA (SPI 接收的占空比基准)、我认为这是不需要的 PWM。

    但如图所示、PWM (A 通道)设置为低电平。 B 通道设置为高电平。 (看起来像占空比基准或 TBPRD 设置为零)。

    我怀疑在同步过程中 TBPRD 被置为零。

    是否有任何方法可以检查 PWM 更新错误或同步错误?

    期待您的回答。

    非常感谢。

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

    您好!

    同步不会改变 TBPRD 的值、但是它会改变 TBCNT 的值- TBCNT 被载入相位(TBPHS)。
    正如我之前提到的、它可以是您在占空比和出现的同步脉冲中更新的值的组合。
    如果 TBCNT 跳过用于占空比控制的 CMPA/B 值、则可能会丢失比较边沿。  
    此外、根据您的波形、同步脉冲和 PWM 的上升沿看起来非常接近。 如果上升沿的生成因 SYNC 而受到影响(正如我之前解释的那样、丢失事件)- PWM 可能在整个周期内保持低电平。

    [引用 user="dongkwan Yoe"]是否有任何方法可以检查 PWM 更新错误或同步错误?
    嗯、这些并不是真正的错误、除了查看示波器输出之外、没有直接的监控方法。
    如果禁用同步并检查是否存在问题-则它会明确指出缺少事件的问题。

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

    您好!

    此问题是否已解决? 您还有其他问题吗?

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

    我真的很抱歉,我的回答很晚。

    我通过您的帮助和下面的链接解决了问题。 但我仍然不完全理解目前的问题,所以我现在正试图理解它。

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/438960?28335-PWM-misfiring-for-one-cycle-in-phase-shift-step-from-zero-to-any-phase-

    非常感谢你的帮助。

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

    您好!

    好的。 让我们结束这个主题。 如有任何疑问、请告知我们。