主题中讨论的其他器件:TIDM-02013、TIDM-02002 、 C2000WARE
我想在2个 EPWM 通道之间实现相移、例如下面的波形(从简单时基 EPWM 通道获得):[ syscfg. TI 示例库下载的示例]

我下载了另一个 HRPWM 示例(syscfg)并成功运行、但无法在两个 HRPWM 通道(epwm1A 和 epwm2A)之间建立相移。
我已经从 TI 示例库(示例名称:epwm_ex3_synchronization)中学到了相移设置、并将其相移设置扩展为 HRPWM 配置、但失败了。

我不了解 HRPWM 通道和简单 ePWM 通道之间的基本相移逻辑。
在 TI 示例库中、我没有找到 HRPWM 同步示例、我可以在那里了解它。
您能否检查由 syscfg 工具生成的 HRPWM 相移代码。
请帮助我解决这个 HRPWM 相移问题。 谢谢你。
void ePWM_init (){
HRPWM_setClockPrescaler (myEPWM1_base、ePWM_CLOCK_DIVIDER_1、ePWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod (myEPWM1_base、370);
HRPWM_setTimeBaseCounter (myEPWM1_base、0);
HRPWM_setTimeBaseCounterMode (myEPWM1_base、EPWM_COUNTER_MODE_UP);
//相移函数
HRPWM_disablePhaseShiftLoad (myEPWM1_BASE);
HRPWM_setPhaseShift (myEPWM1_BASE、0);
HRPWM_setSyncOutPulseMode (myEPWM1_BASE、EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
EPWM_setCounterCompareValue (myEPWM1_base、EPWM_COUNTER_COMPARE_A、130);
HRPWM_setCounterCompareShadowLoadMode (myEPWM1_base、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO _PERIOD);
EPWM_setCounterCompareValue (myEPWM1_base、EPWM_COUNTER_COMPARE_B、130);
HRPWM_setCounterCompareShadowLoadMode (myEPWM1_base、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO _PERIOD);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setDeadBandDelayPolarity (myEPWM1_BASE、EPWM_DB_FED、EPWM_DB_POLICY_ACTIVE_LOW);
HRPWM_setDeadBandDelayMode (myEPWM1_base、ePWM_DB_RED、TRUE);
HRPWM_setRisingEdgeDelayCount (myEPWM1_base、12);
HRPWM_setDeadBandDelayMode (myEPWM1_base、ePWM_DB_FED、true);
HRPWM_setFallingEdgeDelayCount (myEPWM1_base、12);
HRPWM_setDeadBandCounterClock (myEPWM1_BASE、EPWM_DB_COUNTER_CLOCK_HALF_CYCLE);
HRPWM_enableAutoConversion (myEPWM1_base);
HRPWM_setMEPEdgeSelect (myEPWM1_base、HRPWM_CHANNEL_A、HRPWM_MEP_CTRL_FALLING_EDGE);
HRPWM_setHiResCounterCompareValueOnly (myEPWM1_base、HRPWM_COUNTER_COMPARE_A、50);
HRPWM_setCounterCompareShadowLoadEvent (myEPWM1_base、HRPWM_CHANNEL_A、HRPWM_LOAD_ON_CNTR_PERIOD);
HRPWM_setMEPEdgeSelect (myEPWM1_base、HRPWM_CHANNEL_B、HRPWM_MEP_CTRL_FALLING_EDGE);
HRPWM_setHiResCounterCompareValueOnly (myEPWM1_base、HRPWM_COUNTER_COMPARE_B、50);
HRPWM_setCounterCompareShadowLoadEvent (myEPWM1_base、HRPWM_CHANNEL_B、HRPWM_LOAD_ON_CNTR_ZERO _PERIOD);
HRPWM_setHiResTimeBasePeriodOnly (myEPWM1_base、185);
HRPWM_setDeadbandMEPEdgeSelect (myEPWM1_BASE、HRPWM_DB_MEP_CTRL_RED_FED);
HRPWM_setClockPrescaler (myEPWM2_base、ePWM_CLOCK_DIVIDER_1、ePWM_HSCLOCK_DIVIDER_1);
ePWM_setTimeBasePeriod (myEPWM2_base、370);
HRPWM_setTimeBaseCounter (myEPWM2_base、0);
HRPWM_setTimeBaseCounterMode (myEPWM2_base、EPWM_COUNTER_MODE_UP);
//相移函数
HRPWM_enablePhaseShiftLoad (myEPWM2_base);
HRPWM_setPhaseShift (myEPWM2_base、40);
HRPWM_setSyncOutPulseMode (myEPWM2_base、EPWM_SYNC_OUT_PULSE_ON_EPWMxSYNCIN);
EPWM_setCounterCompareValue (myEPWM2_base、EPWM_COUNTER_COMPARE_A、130);
HRPWM_setCounterCompareShadowLoadMode (myEPWM2_base、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (myEPWM2_base、EPWM_COUNTER_COMPARE_B、130);
HRPWM_setCounterCompareShadowLoadMode (myEPWM2_base、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction (myEPWM2_base、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setDeadBandDelayPolarity (myEPWM2_BASE、EPWM_DB_FED、EPWM_DB_POLICY_ACTIVE_LOW);
HRPWM_setDeadBandDelayMode (myEPWM2_base、ePWM_DB_RED、TRUE);
HRPWM_setRisingEdgeDelayCount (myEPWM2_base、12);
HRPWM_setDeadBandDelayMode (myEPWM2_base、ePWM_DB_FED、true);
HRPWM_setFallingEdgeDelayCount (myEPWM2_base、12);
HRPWM_setDeadBandCounterClock (myEPWM2_BASE、EPWM_DB_COUNTER_CLOCK_HALF_CYCLE);
HRPWM_enableAutoConversion (myEPWM2_base);
HRPWM_setMEPEdgeSelect (myEPWM2_base、HRPWM_CHANNEL_A、HRPWM_MEP_CTRL_RISING_AND_FALLING_EDGE);
HRPWM_setHiResCounterCompareValueOnly (myEPWM2_base、HRPWM_COUNTER_COMPARE_A、70);
HRPWM_setCounterCompareShadowLoadEvent (myEPWM2_base、HRPWM_CHANNEL_A、HRPWM_LOAD_ON_CNTR_ZERO _PERIOD);
HRPWM_setMEPEdgeSelect (myEPWM2_base、HRPWM_CHANNEL_B、HRPWM_MEP_CTRL_RISING_AND_FALLING_EDGE);
HRPWM_setHiResCounterCompareValueOnly (myEPWM2_base、HRPWM_COUNTER_COMPARE_B、70);
HRPWM_setCounterCompareShadowLoadEvent (myEPWM2_base、HRPWM_CHANNEL_B、HRPWM_LOAD_ON_CNTR_ZERO _PERIOD);
HRPWM_setHiResTimeBasePeriodOnly (myEPWM2_base、185);
HRPWM_setDeadbandMEPEdgeSelect (myEPWM2_BASE、HRPWM_DB_MEP_CTRL_RED_FED);
}
