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.

[参考译文] TMS320F280049:"ePWM_setTimeBaseCounter (myEPWM2_base、300);"写在 ePWM_ex3_synchronization.c 中?

Guru**** 2539130 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1264415/tms320f280049-what-s-the-purpose-of-epwm_settimebasecounter-myepwm2_base-300-written-in-epwm_ex3_synchronization-c

器件型号:TMS320F280049
主题中讨论的其他器件:C2000WARESysConfig

专家、您好!

在 C2000Ware_3_04_00_00的代码示例"epwm_ex3_synchronization.c"中、

其中的相移代码如下所示:

    //
    // Initialize PWM2 with phase shift of 300 TBCLKs
    //
    initEPWM(myEPWM2_BASE);
    EPWM_selectPeriodLoadEvent(myEPWM2_BASE, EPWM_SHADOW_LOAD_MODE_SYNC);
    EPWM_setPhaseShift(myEPWM2_BASE, 300);
    EPWM_setTimeBaseCounter(myEPWM2_BASE, 300);

但我发现,无论是评论或 umcomment 这个代码:

EPWM_setTimeBaseCounter(myEPWM2_BASE, 300);

测试结果相同、两者都可以实现相移功能、

那么、 这里写入"EPWM_setTimeBaseCounter (myEPWM2_base、300);"的目的是什么?

非常感谢您的回复。

B/R

扬克尔

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

    尊敬的 Jankel:

    C2000ware 版本为3.04.00.00是否有具体原因? 请始终将其更新为最新版本:5.00.00.00。

    EPWM_setTimeBaseCounter ()-目的是设置16位计数器值。 如果您在 EPWM2A 上启用此功能、则会从300值开始计数。 如此处所示 、TBPHS 也使用了相同的值。 理想情况下、不应该影响您观察到的波形。

    请尝试另一种情况、其中您的 SET_COUNTER_VALUE < TBPHS。 您可以在此处观察到差异。

    谢谢。此致、

    乌坦姆

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

     Uttam 您好、

    感谢您的答复。

    我记得、即使我更改了我的 SET_COUNTER_VALUE < TBPHS、它也没有任何影响、我今天再次进行了测试。

    我测试的3种不同代码如下所示:

    1、

        initEPWM(myEPWM2_BASE);
        EPWM_selectPeriodLoadEvent(myEPWM2_BASE, EPWM_SHADOW_LOAD_MODE_SYNC);
        EPWM_setPhaseShift(myEPWM2_BASE, 300);
        EPWM_setTimeBaseCounter(myEPWM2_BASE, 300);

    2、

        initEPWM(myEPWM2_BASE);
        EPWM_selectPeriodLoadEvent(myEPWM2_BASE, EPWM_SHADOW_LOAD_MODE_SYNC);
        EPWM_setPhaseShift(myEPWM2_BASE, 300);
        EPWM_setTimeBaseCounter(myEPWM2_BASE, 100);

    3、

        initEPWM(myEPWM2_BASE);
        EPWM_selectPeriodLoadEvent(myEPWM2_BASE, EPWM_SHADOW_LOAD_MODE_SYNC);
        EPWM_setPhaseShift(myEPWM2_BASE, 300);
        EPWM_setTimeBaseCounter(myEPWM2_BASE, 500);

    我比较了这3个测试结果、没有任何差异。 我甚至比较了它们的启动波形、没有任何区别。

    因此、"EPWM_setTimeBaseCounter (myEPWM2_base、300)"对相 移功能没有任何影响、相移功能仅依赖于"EPWM_setPhaseShift (myEPWM2_base、300);"。

    B/R

    扬克尔

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

    尊敬的 Jankel:

    我运行上述情况、并找到与您的输出类似的输出。 请允许我与另一位专家联系、以便尽快与您联系。  

    谢谢。此致、

    乌坦姆

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

     Uttam 您好、

    感谢您的反馈。

    B/R

    扬克尔

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

    尊敬的 Jankel:

    我正在等待专家的回复。 请在明天之前收到答复。  

    谢谢。此致、

    乌坦姆

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

    尊敬的 Jankel:  

    下面是答案:  一旦时基时钟开启、就会生成来自 EPWM1的 SYNCOUT 信号、该信号将作为其他时基时钟的相移信号。 理想情况下、无论您的计数器位置在哪里、只要 SYNCIN 信号出现、计数器就会达到300。

    现在、如果您不配置初始值或在任何地方进行配置、例如100,300,500、您都不会看到预期的输出波形有任何变化。 唯一合乎逻辑的原因是要避免计数器值从0到300/100/500的初始跳转、不管您设置了什么。

    仅供参考、 在我们基于 SysConfig 的最新示例5.00中、我们已删除初始计数器值配置函数。

    谢谢。此致、

    乌坦姆