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:交错 CrM 图腾柱 PFC EPWM 配置

Guru**** 2771055 points

Other Parts Discussed in Thread: TIDM-02013

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1417081/tms320f280039c-interleaved-crm-totem-pfc-epwm-configuration

器件型号:TMS320F280039C
主题中讨论的其他器件:TIDM-02013

工具与软件:

尊敬的 Champ:

我要求我的客户实施交错 CRM PFC。

有两个 ePWM 集、epwm1作为主集、epwm2作为交错集。

epwm2在 epwm1下具有 T/2延迟、电感器电流波形如下图所示。  

红色波形为 epwm1、蓝色波形为 epwm2。

  (图电感电流)

进行修改。 注意(SPRACX0)单相 CRM PFC 实施、epwm1时基是同步。 当 使用直流子模块(DCAEVT1.sync)发生 CMPSS1事件 时、从逻辑上讲、并且 epwm2时基也应进行同步。 当直流子模块(DCAEVT2.SYNC)发生 CMPSS2事件时。  

要在 epwm2 (epwm1的 T/2延迟)上增加 T/2延迟要求、 此处应使用 EPWMxSYNCI 来同步时基计数器与 epwm1模块的计数器、对吗? 交错式设置 epwm2应该这样配置为 交错 CRM PFC 吗? 实际上不确定拓扑是否会如此激活。

我们是否有实施 交错 CRM PFC EPWM 配置的经验?

谢谢。此致、

Johnny

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

    尊敬的 Johnny:

    您可以使用 EPWM 相移执行此操作。 您能否请参阅 TIDM-02013代码库。 请参阅 ttplpfc_hal.c 文件中的以下代码行。

    void TTPLPFC_HAL_setupPWM (uint16_t PWM_PERIOD_TICKs、
    uint16_t pwm_db_ticks_red、uint16_t pwm_db_ticks_fed)

    TTPLPFC_HAL_setupPWM_UpDownCountWithDeadband (TTPLPFC_LOW_FREQ_PWM_BASE、PWM_PERIOD_TICK、PWM_db_ticks_red、PWM_db_ticks_fed);
    TTPLPFC_HAL_setupPWM_UpDownCountWithDeadband (TTPLPFC_HIGH_FREQ_PWM1_BASE、PWM_PERIOD_TICK、PWM_db_ticks_red、PWM_db_ticks_fed);
    TTPLPFC_HAL_setupPWM_UpDownCountWithDeadband (TTPLPFC_HIGH_FREQ_PWM2_BASE、PWM_PERIOD_TICK、PWM_db_ticks_red、PWM_db_ticks_fed);

    HWREGH (TTPLPFC_LOW_FREQ_PWM_BASE + EPWM_O_AQCTLA)= 0;
    EPWM_setDeadBandDelayMode (TTPLPFC_LOW_FREQ_PWM_BASE、EPWM_DB_RED、FALSE);
    EPWM_setDeadBandDelayMode (TTPLPFC_LOW_FREQ_PWM_BASE、EPWM_DB_FED、FALSE);

    //
    //设置相位同步
    //
    //


    EPWM_disablePhaseShiftLoad (TTPLPFC_LOW_FREQ_PWM_BASE);
    ePWM_enableSyncOutPulseSource (TTPLPFC_LOW_FREQ_PWM_BASE、
    EPWM_SYNC_OUT_PULSE_ON_CNTR_ZERO);

    EPWM_enablePhaseShiftLoad (TTPLPFC_HIGH_FREQ_PWM1_BASE);
    EPWM_setSyncInPulseSource (TTPLPFC_HIGH_FREQ_PWM1_BASE、TTPLPFC_PWM_SYNC_SOURCE);
    EPWM_setPhaseShift (TTPLPFC_HIGH_FREQ_PWM1_BASE、2);
    ePWM_setCountModeAfterSync (TTPLPFC_HIGH_FREQ_PWM1_BASE、EPWM_COUNT_MODE_UP_AFTER_SYNC);

    #if TTPLPFC_TOTAL_NO_PHASES =2
    EPWM_enablePhaseShiftLoad (TTPLPFC_HIGH_FREQ_PWM2_BASE);
    EPWM_setSyncInPulseSource (TTPLPFC_HIGH_FREQ_PWM2_BASE、TTPLPFC_PWM_SYNC_SOURCE);
    //
    //针对两相交错实现180度相移
    //
    EPWM_setPhaseShift (TTPLPFC_HIGH_FREQ_PWM2_BASE、
    ((uint16_t)((float32_t) TTPLPFC_PWM_PERIOD/(float32_t)(2.0))-2);
    ePWM_setCountModeAfterSync (TTPLPFC_HIGH_FREQ_PWM2_BASE、
    EPWM_COUNT_MODE_DOWN_AFTER_SYNC);

    #elif TTPLPFC_TOTAL_NO_PHASES =3
    EPWM_enablePhaseShiftLoad (TTPLPFC_HIGH_FREQ_PWM2_BASE);
    EPWM_setSyncInPulseSource (TTPLPFC_HIGH_FREQ_PWM2_BASE、TTPLPFC_PWM_SYNC_SOURCE);

    EPWM_enablePhaseShiftLoad (TTPLPFC_HIGH_FREQ_PWM3_BASE);
    EPWM_setSyncInPulseSource (TTPLPFC_HIGH_FREQ_PWM3_BASE、TTPLPFC_PWM_SYNC_SOURCE);

    EPWM_setPhaseShift (TTPLPFC_HIGH_FREQ_PWM2_BASE、
    (2 +(uint16_t)((float32_t) PWM_PERIOD_TICKs /
    (float32_t)(3.0)));
    ePWM_setCountModeAfterSync (TTPLPFC_HIGH_FREQ_PWM2_BASE、EPWM_COUNT_MODE_UP_AFTER_SYNC);

    EPWM_setSyncOutPulseMode (TTPLPFC_HIGH_FREQ_PWM3_BASE、EPWM_SYNC_OUT_PULSE_ON_SOFTWARE);
    EPWM_setPhaseShift (TTPLPFC_HIGH_FREQ_PWM3_BASE、
    (2 +(uint16_t)((float32_t) PWM_PERIOD_TICKs /
    (float32_t)(3.0)));
    ePWM_setCountModeAfterSync (TTPLPFC_HIGH_FREQ_PWM3_BASE、EPWM_COUNT_MODE_DOWN_AFTER_SYNC);

    #endif

    谢谢

    Srikanth