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.

[参考译文] TMS320F280039C:有关 epwm_ex3_synchronization 例程的问题。

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1498214/tms320f280039c-questions-about-the-epwm_ex3_synchronization-routine

器件型号:TMS320F280039C

工具/软件:

TI 工程师、您好。

  在测试 EPWM_ex3_synchronizaion 例程时、我使用示波器测量以下初始波形。 从该波形可以看出、当 CH1中出现完整的波形时、ch2没有任何波形(ch2在例程中表示 EPWM4)、但当第二个波形出现在 ch2中时、ch2没有波形。 没有波形。 另一张图是我绘制的图、当 EPWM1的 TBCTR 从0开始计数时、EPWM4的 TBCTR 从900开始计数、这是例程中的影响、两个 ePWM 之间的相位差也约为73.3333us、这与示波器显示一致。 但是当 EPWM1的第一个波形出现时、为什么 EPWM4没有波形? 我的图有什么问题吗?

   

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

    尊敬的 Zhen:

    感谢您的提问。 我认为、由于 TBCTR=0时发生的负载条件、EPWM4的 TBCTR=0时会错过 AQ 事件的第一个实例。

    当 TBCTR=0时、TBPRD 和 CMPA/CMPB 均设置为从影子寄存器加载到活动寄存器、同时当 TBCTR=0时、ePWM 输出会发生 AQ 事件、变为高电平。  

    您能否在.syscfg 文件中进行以下更改、告诉我输出是否仍然相同?

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    感谢您的回复、因为我没有使用 syscfg 工具、我在代码中添加了此条件、该条件应该是您的图片中的配置。 但仍会得到相同的波形。

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

    尊敬的 Zhen:

    您是否还可以将 CMPA 的影子到活动选项更改为活动选项、尝试 PRD?

    此外、如果可能、您是否可以在示波器捕获中包含与 EPWM1相比的其他 ePWM 输出? 我想看看它们是否遵循相同的模式。

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    您说的是这样吗?

        if(base!=EPWM1_BASE)
            EPWM_selectPeriodLoadEvent(base,EPWM_SHADOW_LOAD_MODE_SYNC);
        EPWM_setCounterCompareShadowLoadMode(base,
                                             EPWM_COUNTER_COMPARE_A,
                                             EPWM_COMP_LOAD_ON_SYNC_ONLY);

    获取以下波形、其中 CH1-CH4分别为 EPWM1A-EPWM4A。

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

    尊敬的 Zhen:

    是的、类似您拥有的或下面的内容。 它会改变输出吗?

    EPWM_setCounterCompareShadowLoadMode(myEPWM0_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD);
    

    在您连接的示波器捕获中、为什么 EPWM1A 始终处于低电平?  

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    EPWM1A 的问题可能是我没有正确连接线路、我可以看到 ePWM_selectPeriodDevent (myEPWM2_base/myEPWM3_base/myEPWM4_base、ePWM_shadow_load_mode_sync)已包含在例程中。
    然后是原始例程通用 EPWM_setCounterCompareShadowLoadMode (base、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);针对 EPWM_setCounterCompareShadowLoadMode (base、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD)进行了调整;但由波形判断、这似乎没有原因。

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

    尊敬的 Zhen:

    感谢您分享更正后的屏幕截图。 看起来同步事件仅在 TBCTR=0信号的上升沿发出。  

    您能否在初始化期间以略低于 TBPRD 的值启动 TBCTR?这样、当您启动 ePWM CLK 时、计数器就有机会传递0并发出同步事件?

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    在启用 TBCLK=1之前、我将 EMWM1的 TBCTR 设置为1900、并获得以下波形。 我不确定这是否是您所说的?

    此外、我还做了几项测试。 首先、我在 EPWM1-ISR 中将 GPIO 的电平设置为1、并获得以下波形。 不过、从波形可以看出、第一个 TBCTR=0没有进入 ISR、但第二个 TBCTR=0。该波形与实际测试结果一致、当 TBCTR = 0时、会产生中断和同步。 但是、为什么仅在 TBCTR 第二次为0时才生成中断和 SYNCOUT?

    此外、我在程序的空闲循环中进行了一些设置、当 EPWM2-TBCTR>0时、将 GPIO 设置为1、然后读取 EWMP2-TBCTR 为376、EWPM2-TBPRD 为2000、EPWM2-CMPA 为1000。 从这里可以看到、ePWM-TBCTR 似乎开始计数、当等于 CMPA 时没有产生相应的操作。

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

    尊敬的 Zhen:

    感谢您进行其他测试并分享结果。 您是否根据示例中显示的内容修改了相移值?

    但为什么仅在 TBCTR 第二次为0时才生成中断和 SYNCOUT?

    让我在设置中重现此问题。 正如我之前建议的、ePWM 可能会寻找 TBCTR=0时的转换边沿、以便执行相应的操作。 如果是这样、我需要与一些同事讨论、以及这里正在发生什么。 我会尽快回复您。  

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    这是在 TBPHS 设为0且 TBCTR 设为0后获得的波形。 可以看出、在第一个脉冲中、EPWM2A 在为零时满足高电平的条件、但在 CMPA 时不会产生低电平。 与上一项测试同样一致、对于 EPWM2、TBCTR 在第二个脉冲开始时从0变为 TBPRD。

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

    尊敬的 Zhen:

    感谢您的分享。 您以前为 EPWM2设置的 TBPHS 值是多少?

    此致、

    Marlyn

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

    您好 Marlyn、ć

    TBPHS 是例程中设置的值。 对于 EPWM2、它是300。

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

    尊敬的 Zhen:

    谢谢、在我这边复制这个问题时、我想确保您没有出于调试目的修改此内容 我将复制此内容、并尽快回复您。

    此致、

    Marlyn

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

    尊敬的 Zhen:

    我已经在我这边复制了同样的行为、并努力查看是否有针对此问题的解决方法。 我会随时更新我的调查结果。

    此致、

    Marlyn

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

    尊敬的 Zhen:

    对于不能完全清楚表示歉意、在前面我建议将 TBCTR 更改为略低于 TBPRD 的值时、我表示所有 EPWM 实例而不仅仅是 EPWM1。 如果进行此更改(例如、初始化期间的 TBCTR=1900)、您将看到当 EPWM1等于零时、EPWM 实例的第一个脉冲对齐。 第一个脉冲将具有较小的占空比、因为它将从定义的 TBPHS 值开始、但之后、后续脉冲应该具有所需的占空比。  

    此致、

    Marlyn