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.

[参考译文] TMS320F28379D:在峰值电流控制模式中缺失的 CMPSS 事件

Guru**** 2611385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035390/tms320f28379d-missed-cmpss-events-in-peak-current-control-mode

器件型号:TMS320F28379D

我已经使用 CMPSS 和 ePWM DC+TZ 功能实现了斜坡补偿峰值电流控制器。

如上面的示波器捕获中所示、CBC 限制主要起作用、但偶尔会错过模拟比较事件、并且 ePWM 输出保持有效 (或立即恢复有效)、直到达到最大占空比(90%)。

事实证明、除非我将 DigitalCompareEventSyncMode 设置为"ePWM_DC_EVENT_INPUT_SYNCODED"、否则这种干扰的发生会很高。

启用同步后、干扰变得相当罕见、但仍然会发生。  

下面是相关的初始化代码、希望提供一些有关可能发生的情况的线索。

感谢你的帮助。
心搏

{
    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_CMPSS2);
    CMPSS_enableModule(CMPSS2_BASE);
    CMPSS_configHighComparator(CMPSS2_BASE, CMPSS_INSRC_DAC);
    // configuring ramp to 701599.121094 A/s (desired: 692307.692308 A/s)
    CMPSS_configRamp(CMPSS2_BASE, 0, 11, 0, 5, true);
    CMPSS_configDAC(CMPSS2_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK |
                      CMPSS_DACSRC_RAMP);
    XBAR_setEPWMMuxConfig(XBAR_TRIP8, XBAR_EPWM_MUX02_CMPSS2_CTRIPH);
    XBAR_enableEPWMMux(XBAR_TRIP8, XBAR_MUX02);
}
{
    HRPWM_setSyncPulseSource(EPWM5_BASE, HRPWM_PWMSYNC_SOURCE_ZERO);
    EPWM_setTripZoneDigitalCompareEventCondition(EPWM5_BASE,
                                                   EPWM_TZ_DC_OUTPUT_B2,
                                                   EPWM_TZ_EVENT_DCXH_HIGH);
    EPWM_enableDigitalCompareTripCombinationInput(EPWM5_BASE,
                                                    EPWM_DC_COMBINATIONAL_TRIPIN8,
                                                    EPWM_DC_TYPE_DCBH);
    EPWM_setDigitalCompareFilterInput(EPWM5_BASE,
                                        EPWM_DC_WINDOW_SOURCE_DCBEVT2);
    EPWM_setDigitalCompareBlankingEvent(EPWM5_BASE,
                                          EPWM_DC_WINDOW_START_TBCTR_ZERO);
    EPWM_setDigitalCompareWindowOffset(EPWM5_BASE, 0);
    EPWM_setDigitalCompareWindowLength(EPWM5_BASE, 0);
    EPWM_enableDigitalCompareBlankingWindow(EPWM5_BASE);
    EPWM_setDigitalCompareEventSource(EPWM5_BASE,
                                        EPWM_DC_MODULE_B,
                                        EPWM_DC_EVENT_2,
                                        EPWM_DC_EVENT_SOURCE_FILT_SIGNAL);
    EPWM_setDigitalCompareEventSyncMode(EPWM5_BASE,
                                          EPWM_DC_MODULE_B,
                                          EPWM_DC_EVENT_2,
                                          EPWM_DC_EVENT_INPUT_SYNCED);
    EPWM_enableTripZoneSignals(EPWM5_BASE, EPWM_TZ_SIGNAL_DCBEVT2);
}

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

    心搏、

    这很可能是由一个短 CMPSS 跳闸信号引起的、该信号的置位时间不够长、无法使 ePWM TZ 逻辑锁存。 来自 TRM

    我建议使用 CMPSS 锁存路径来避免此类问题:

    但是、为了避免 勘误表中的 COMPxLATCH 建议、必须限制最大占空比

    Tommy

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

    Tommy、您好!

    感谢您的快速回复。

    您的解释是合理的、但我无法成功使用锁存路径。

    使用下面的代码、锁存跳闸似乎一直有效(PWM 输出保持无源)。

    {
        SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_CMPSS2);
        CMPSS_enableModule(CMPSS2_BASE);
        CMPSS_configHighComparator(CMPSS2_BASE, CMPSS_INSRC_DAC);
        // configuring ramp to 701599.121094 A/s (desired: 692307.692308 A/s)
        CMPSS_configRamp(CMPSS2_BASE, 0, 11, 0, 5, true);
        CMPSS_configDAC(CMPSS2_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK |
                          CMPSS_DACSRC_RAMP);
        // begin new
        CMPSS_configFilterHigh(CMPSS2_BASE, 0, 1, 1);
        CMPSS_initFilterHigh(CMPSS2_BASE);
        CMPSS_enableLatchResetOnPWMSYNCHigh(CMPSS2_BASE);
        CMPSS_clearFilterLatchHigh(CMPSS2_BASE);
        CMPSS_configOutputsHigh(CMPSS2_BASE, CMPSS_TRIP_LATCH);
        // end new
        XBAR_setEPWMMuxConfig(XBAR_TRIP8, XBAR_EPWM_MUX02_CMPSS2_CTRIPH);
        XBAR_enableEPWMMux(XBAR_TRIP8, XBAR_MUX02);
    }

    但是、如果我使用 CMPSS_TRIP_FILTER 而不是 CMPSS_TRIP_LATCH、则一切都像以前一样工作。

    因此、我认为数字滤波器配置正确、由于 DAC 斜坡 正在复位、因此 PWMSYNC 信号也应正确生成、并大概会复位锁存器。

    看起来 我必须犯一些更根本的错误。 使用  CMPSS_TRIP_LATCH 时、即使 使用直流消隐来强制执行 最小 占空比、也不会产生 PWM 脉冲。  

    感谢您提供进一步的建议。

    心搏

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

    心搏、

    您是否能够将 CTRIPOUT 信号输出到 GPIO 引脚以进行调试观察? 请直接查看异步与滤波器路径与锁存路径之间的差异、这将有助于了解情况。

    可能存在一些寄生跳闸波动、这些波动足够短、无法通过 EPWM 认证、但能够使锁存器跳闸。

    您是否启用了迟滞?

    Tommy

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

    嗨、Tommy -我想我知道可能会发生什么情况。 目前 、PWMSYNC 在 ePWM 零上生成。 这是因为我希望斜坡 在该时间开始递减。  但是、这可能太晚、无法清除行程锁存器。 因此、我将尝试使用 CMPC 或 CMPD 在  ePWM 周期到期之前生成 PWMSYNC。

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

    心搏、

    如果它变得太卷积而无法使锁存路径正常工作、那么只要滤波器至少需要3 * TBCLK 周期才能使跳闸无效、就可以使用滤波器路径。

    Tommy

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

    Tommy -我可以确认在 ePWM 零点之前设置 PWMSYNC 可以解决该问题。 但它确实是卷积的。

    我喜欢您简单使用滤波 器路径的想法。 其缺点是、比较事件延迟总是  为3 * TBCLK。 使用锁存路径、我可以获得更快的响应。

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

    大家好、Tommy 今天不在办公室、但预计明天会回来。  您似乎已经很好地掌握了自己的选择以及每种选择的利弊权衡。  如果您需要进一步的帮助、请告知我们。

    此致、

    Joe

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

    Joe 您好-感谢您的跟进。 我现在已准备好了。 感谢您的大力支持。