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 应扩展至 HRPWM

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011506/tms320f28377s-synchronised-epwm-should-extend-to-hrpwm

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

您好!

我已经为 PMSM 使用了3个 ePWM 驱动器、如下所述:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/815681/tms320f28377s-up-down-pwm-with-phase-control---result-is-oposite-to-expetations

我使用 driverlib 函数来配置和控制3个同步 ePWM。

使用200MHz 时钟和40kHz PWM 时、PWM 产生的分辨率约为10位。 这不足以在低占空比下进行精确驱动。

如何使用 HRPWM 轻松扩展现有代码。 C2000Ware 3.04示例"HRPWM_Duty_SFO_V8"似乎不足以对其进行解释。

我应该多久调用一次 SFO ()函数? 它是否会中断正在进行的 PWM? 哪些寄存器从 SFO ()更新?

此致

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

    您可以在最低优先级后台任务中调用 SFO 函数。 除非温度发生急剧的快速变化、否则无需经常调用它。

    它不会在运行 PWM 时中断。

    SFO 更新 HRMSTEP。 以及一些其他不应在应用代码中使用的内部寄存器、如果在 driverlib 中进行编码、则很可能不会使用这些寄存器。

    NIMA

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

    我的 SFO ()似乎只能部分工作。

    输出的返回 SFO ()值 (例如0x40)与 EPWM1Regs (调试器)的 HRMSTEP 匹配、但其他 EPWM2和 EPWM3注册表不会被写入。 他们的 HRMSTEP 保持为0。

    我的*。cpp 代码:

    #include "SFO_V8.h"

    //sSFO:

    extern "C"

    extern uint32_t MEP_ScaleFactor = 0;// SFO 库使用的全局变量

    #define myEPWM1_BASE EPWM1_BASE

    #define myEPWM2_base EPWM2_base

    #define myEPWM3_base EPWM3_base

    //#define myEPWM4_base EPWM4_base

    extern volatile uint32_t ePWM[16+1]={0、myEPWM1_base、myEPWM2_base、myEPWM3_base};

    //extern "C"

     

    …μ A 稍后调用:

    SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_EPWM1);

    SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_EPWM2);

    SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_EPWM3);

    SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_HRPWM);// ePWM1时钟源获取

    uint16_t status = SFO_INCOMPLETE;

    while (status=SFO_INCOMPLETE)//完成前调用

    状态= SFO ();

    如果(status =SFO_ERROR)

    ESTOP0;//如果发生错误,SFO 函数返回2,MEP 步进数/粗步进数返回2

    }//超出最大值255。

     debugprintf ("MEP_ScaleFactor %lu\r\n"、MEP_ScaleFactor);

     

    ----

    此外、

    来自 EPWM1的 HRMSTEP 可由调试器覆盖、但来自较高 ePWM 的 HRMSTEP 无法覆盖。

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

    您观察到的是正确的。 SFO 只写入 EPWM1。 校准值仅在 EPWM1寄存器中。 所有其他 ePWM 都使用 EPWM1。

    您应该很高兴继续前进。

    NIMA