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:PWM1和 PWM2之间的 HWPWM 相位偏移正在变化。

Guru**** 2531950 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/719692/tms320f280049-hwpwm-phase-offset-between-pwm1-and-pwm2-is-changing

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

各位专家、您好!

我正在测试以下示例代码。

C:\ti\c2000Ware_1_00_05_00\device_support\f2837xd\examples\cpu1\HRPWM_duland_SFO_v8\cpu01\HRPWM_duland_SFO_v8.c

由于这是 F2837x 的代码、我修改了 F280049的以下函数。  

InitEPwm1Gpio();
InitEPwm2Gpio();

下面是 PWM1A 和 PWM2A 的图片。 结合周期扫描、PWM1和 PWM2之间的相位发生变化。

源代码集的更新阶段似乎始终是新周期的一半、但看起来不是这样。 如果将  InputPeriodInc 参数设置为零、则相位是固定的。 我希望即使在周期发生变化时也将相位固定在120度。

是否需要此行为? 或者、我是否错过了什么?

此致、

Uchikoshi

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

    您好!
    您可以将相位设置为120度。 示例仅用于显示使用  InputPeriodInc 参数同时更改周期和频率的情况。
    在将相位设置为120度时、您是否观察到任何不同的情况-如示例所示、它不必是50%。

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

    你好

    我在最初支持以下示例代码的 F28075上进行了测试。

    C:\ti\c2000Ware_1_00_05_00\device_support\f2807x\examples\cpu1\HRPWM_dul带 SFO_v8\cpu01\HRPWM_dul带 SFO_v8.c

    PWM1和 PWM2之间的相位是固定的、尽管存在小抖动、但看起来很好。

    在我的情况下、我 将 HRPWM_DEADBAD_SFO_V8.c 移植到 F28004x 中、如附件所示。 在这种情况下,PWM1和 PWM2之间的相位不是固定的。 您能否确认您是否可以看到与我所见相同的行为?

    e2e.ti.com/.../hrpwm_5F00_deadband_5F00_sfo_5F00_v12.c

    此致

    Uchikoshi

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

    您是否执行了延迟线校准? 在这两种情况下、HRMSTEP 值是多少?
    此外、您能否使用固定相位/频率检查行为而不改变频率/相位-行为是否符合预期?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当 PHASE/FREQ 固定时、预期会出现这种行为、即两个 PWM 之间的相位固定不变。
    当周期/频率发生变化时、预期行为是、周期和死区在 HR 模式下发生变化。

    在初始化期间、示例代码会立即调用以下代码。 我不认为这很重要、因为 HR 模式工作正常。
    while (status =SFO_Incomplete)

    状态= SFO ();
    如果(status =SFO_ERROR)

    ERROR();// SFO 函数在发生错误时返回2,MEP 的编号为
    } //步进/粗步进超出最大255。


    此致、
    Uchikoshi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    添加以下代码后、效果良好。

    (* ePWM1]).TBCTL.bit.SYNCOSEL = 1;

    现在、我关闭这个线程。
    此致、
    Uchikoshi