主题中讨论的其他器件: SysConfig、 C2000WARE
您好!
在使用两个 CPU 的 LAUNCHXL-F28P65X 板上、我面临一个测试项目问题、其中我设置了一个 EPWM 通道(在单个 CPU 项目上运行)、但在 EPWM 通道5 (GPIO 8和9)的引脚上没有输出。
我使用 SysConfig 工具设置项目。 我的一般配置为:
- CCS 版本:12.6
- 编译器版本:22.6.1
- SysConfig 版本:1.20.0
- 评估板:LAUNCHXL F28P65X
ePWM 功能完全独立于我添加到两个 CPU 的其他功能。 ePWM 的定义在 board.c/.h 中生成以下源代码。 默认情况下、ePWM5被 CPU1保留。 在 device.c 中启用 ePWM 外设。
有任何想法为什么我在 GPIO 8和9上没有为我的 ePWM5获得输出信号?
board.h:
//
// EPWM5 -> myEPWM0引脚多路复用
//
//
// EPWM5_A - GPIO 设置
//
#define GPIO_PIN_EPWM5_A 8
#define myEPWM0_EPWMA_GPIO 8
#define myEPWM0_EPWMA_PIN_CONFIG GPIO_8_EPWM5_A
//
// EPWM5_B - GPIO 设置
//
#define GPIO_PIN_EPWM5_B 9
#define myEPWM0_EPWMB_GPIO 9
#define myEPWM0_EPWMB_PIN_CONFIG GPIO_9_EPWM5_B
//*****
//
// ePWM 配置
//
//*****
#define myEPWM0_BASE EPWM5_BASE
#define myEPWM0_TBPRD 500
#define myEPWM0_COUNTER_MODE EPWM_COUNTER_MODE_UP_DOWN
#define myEPWM0_TBPHS 250
#define myEPWM0_CMPA 275
#define myEPWM0_CMPB 200
#define myEPWM0_CMPC 0
#define myEPWM0_CMPD 0
#define myEPWM0_DBRED 0
#define myEPWM0_DBFED 0
#define myEPWM0_TZA_ACTION EPWM_TZ_ACTION_HIGH_Z
#define myEPWM0_TZB_ACTION ePWM_TZ_ACTION_HIGH_Z
#define myEPWM0_INTERRUPT_SOURCE EPWM_INT_TBCTR_DISABLED
board.c:
//*****
//
// ePWM 配置
//
//*****
void ePWM_init (){
ePWM_setClockPrescaler (myEPWM0_BASE、ePWM_CLOCK_DIVIDER _1、ePWM_HSCLOCK_DIVIDER_4);
EPWM_setTimeBasePeriod (myEPWM0_BASE、500);
EPWM_setTimeBaseCounter (myEPWM0_BASE、0);
EPWM_setTimeBaseCounterMode (myEPWM0_BASE、EPWM_COUNTER_MODE_UP_DOWN);
EPWM_enablePhaseShiftLoad (myEPWM0_BASE);
EPWM_setPhaseShift (myEPWM0_BASE、250);
EPWM_setSyncInPulseSource (myEPWM0_BASE、EPWM_SYNC_IN_PULSE_SRC_DISABLE);
EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_A、275);
EPWM_setCounterCompareShadowLoadMode (myEPWM0_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_B、200);
EPWM_setCounterCompareShadowLoadMode (myEPWM0_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setActionQualifierT2TriggerSource (myEPWM0_BASE、EPWM_AQ_TRIGG_EVENT_TRIG_DCA_2);
EPWM_enableGlobalLoadRegisters (myEPWM0_BASE、EPWM_GL_REGISTER_AQCTLA_AQCTLA2);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_enableGlobalLoadRegisters (myEPWM0_BASE、EPWM_GL_REGISTER_AQCTLB_AQCTLB2);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
ePWM_setRisingEdgeDelayCountShadowLoadMode (myEPWM0_BASE、ePWM_RED_LOAD_ON_CNTR_ZERO);
ePWM_disableRisingEdgeDelayCountShadowLoadMode (myEPWM0_BASE);
EPWM_setFallingEdgeDelayCountShadowLoadMode (myEPWM0_BASE、EPWM_FED_LOAD_ON_CNTR_ZERO);
ePWM_disableFallingEdgeDelayCountShadowLoadMode (myEPWM0_BASE);
}
此致
帕特里克