CCSTUDIO: 280049C

Part Number: CCSTUDIO


你好,请问一下如果我想用dsp来处理电感电流过0的话,当电感电流正过0的时候,dsp的epwm会重置计数器值,重新开始计数,这种情况怎么处理啊?adc采样的话太慢了

  • 您好,收到了您的案例,调查需要些时间,感您的耐心等待。

  • 您好,

    复位需要发生的是否有一个恒定值? 我不太理解流经零的电流是什么意思。 您是指正过零吗? 我假设您有直流失调电压、因此您可以利用 CMPSS、这比 ADC 快得多。 CMPSS 的输出可配置为用作 ePWM 模块的同步信号、该模块将复位 ePWM 计数器。

    例如下面的代码

        // TB
        EPWM_enablePhaseShiftLoad(base);
        // DC
        EPWM_selectDigitalCompareTripInput(base, EPWM_DC_TRIP_TRIPIN4, EPWM_DC_TYPE_DCAH);
        EPWM_setTripZoneDigitalCompareEventCondition(base, EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
        EPWM_enableDigitalCompareSyncEvent(base, EPWM_DC_MODULE_A);
        EPWM_setDigitalCompareEventSyncMode(base, EPWM_DC_MODULE_A, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);

  • 我的意思是硬件上面,我已经进行电感电流正过0处理了,就是利用CMPSS来进行处理这个正过0信号,然后进过epwm x-bar到epwm dc部分,再产生sync事件,当电感电流正过0的时候,刷新epwm的计数器值,重置epwm的计数器值,从0开始重新计数。

  • 但是我按照这个思路配置的话,一直是epwm dc产生的sync事件是syncout,而不是syncin进入epwm来重置epwm的计数器值

  • 哈哈哈,我刚又想了一下,知道怎么做了,看我给你的图,我给框出来了,因为是或门,EPWMxSYNCI事件功能和DCAEVT1.sync功能一样,只要我把TBCTL寄存器使能,再把THPHS写为0,就可以通过epwm dc产生DCAEVT1.sync事件,实现当EPWMxSYNCI来临以后,TBPRD装载TBPHS值,因为我把TBPHS提前写为0,所以就是重置epwm的计数器值了

  • 您好,

    我提供的代码使用 DCAEVT1.sync 信号路径、而不是 EPWMxSYNCI。 但思路是正确的、这是根据当前输入重置计数器值的正确方法。 代码片段假定用户已通过 PWMXBAR 路由 CTRIP 信号、然后代码将配置直流事件并启用 PHSEN。 我认为不需要为 TBPHS 分配一个值、因为它已经复位、但您可以根据需要写入寄存器

  • 好的好的,谢谢您了

  • 如果这解决了您的问题,请点击“问题已解决”按钮,谢谢