我使用syscfg配置了一个互补的HRPWM1,使用示波器发现这个互补的波形高电平时间并不一样,一个是476ns左右,另一个是454ns左右。请问原因是什么?
以下是利用syscfg配置的DebugCode:
HRPWM_enableGlobalLoad(LLC_A_BASE);
HRPWM_enableGlobalLoadOneShotMode(LLC_A_BASE);
HRPWM_setGlobalLoadOneShotLatch(LLC_A_BASE);
HRPWM_setEmulationMode(LLC_A_BASE, EPWM_EMULATION_FREE_RUN);
HRPWM_setClockPrescaler(LLC_A_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod(LLC_A_BASE, 75);
HRPWM_setTimeBaseCounter(LLC_A_BASE, 0);
HRPWM_setTimeBaseCounterMode(LLC_A_BASE, EPWM_COUNTER_MODE_UP_DOWN);
EPWM_disablePhaseShiftLoad(LLC_A_BASE);
HRPWM_disablePhaseShiftLoad(LLC_A_BASE);
HRPWM_setPhaseShift(LLC_A_BASE, 0);
EPWM_setSyncInPulseSource(LLC_A_BASE, EPWM_SYNC_IN_PULSE_SRC_DISABLE);
EPWM_enableSyncOutPulseSource(LLC_A_BASE, EPWM_SYNC_OUT_PULSE_ON_CNTR_ZERO);
EPWM_setCounterCompareValue(LLC_A_BASE, EPWM_COUNTER_COMPARE_A, 37);
HRPWM_enableGlobalLoadRegisters(LLC_A_BASE, EPWM_GL_REGISTER_CMPA_CMPAHR);
HRPWM_setCounterCompareShadowLoadMode(LLC_A_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD);
EPWM_setCounterCompareValue(LLC_A_BASE, EPWM_COUNTER_COMPARE_B, 37);
HRPWM_enableGlobalLoadRegisters(LLC_A_BASE, EPWM_GL_REGISTER_CMPB_CMPBHR);
HRPWM_setCounterCompareShadowLoadMode(LLC_A_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO_PERIOD);
HRPWM_enableGlobalLoadRegisters(LLC_A_BASE, EPWM_GL_REGISTER_AQCTLA_AQCTLA2);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
HRPWM_setActionQualifierAction(LLC_A_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
HRPWM_setDeadBandDelayPolarity(LLC_A_BASE, EPWM_DB_FED, EPWM_DB_POLARITY_ACTIVE_LOW);
HRPWM_setDeadBandDelayMode(LLC_A_BASE, EPWM_DB_RED, true);
HRPWM_setRisingEdgeDelayCountShadowLoadMode(LLC_A_BASE, EPWM_RED_LOAD_ON_CNTR_ZERO);
HRPWM_setRisingEdgeDelayCount(LLC_A_BASE, 10);
HRPWM_setDeadBandDelayMode(LLC_A_BASE, EPWM_DB_FED, true);
HRPWM_setFallingEdgeDeadBandDelayInput(LLC_A_BASE, EPWM_FED_LOAD_ON_CNTR_ZERO);
HRPWM_setFallingEdgeDelayCount(LLC_A_BASE, 10);
HRPWM_setDeadBandCounterClock(LLC_A_BASE, EPWM_DB_COUNTER_CLOCK_HALF_CYCLE);
HRPWM_enableAutoConversion(LLC_A_BASE);
HRPWM_setMEPEdgeSelect(LLC_A_BASE, HRPWM_CHANNEL_A, HRPWM_MEP_CTRL_RISING_AND_FALLING_EDGE);
HRPWM_setCounterCompareShadowLoadEvent(LLC_A_BASE, HRPWM_CHANNEL_A, HRPWM_LOAD_ON_CNTR_ZERO_PERIOD);
HRPWM_setMEPEdgeSelect(LLC_A_BASE, HRPWM_CHANNEL_B, HRPWM_MEP_CTRL_RISING_AND_FALLING_EDGE);
HRPWM_setCounterCompareShadowLoadEvent(LLC_A_BASE, HRPWM_CHANNEL_B, HRPWM_LOAD_ON_CNTR_ZERO_PERIOD);
HRPWM_enablePeriodControl(LLC_A_BASE);
HRPWM_setHiResTimeBasePeriodOnly(LLC_A_BASE, 127);
HRPWM_setDeadbandMEPEdgeSelect(LLC_A_BASE, HRPWM_DB_MEP_CTRL_RED_FED);