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.
我正在使用ePWM 2转至2个不同的SCR,并且想要EPWM2 A之外的PWM与我想要的EPWM2B之外的PWM不同。 我该怎么做? 这里的演示并不清楚如何使用A与B
这是我为初始化所做的操作-
#define T_PWM_BASE EPWM2_BASE // PWM A
#define U_PWM_BASE EPWM2_BASE // PWM B
//设置时基控制寄存器(TBCTL)
ePWM_setTimeBaseCounterMode (T_PWM_BASE,ePWM_counter_mode_ue_down);
ePWM_DisablePhaseShiftLoad(T_PWM_base);
ePWM_setPeriodLoadMode (T_PWM_BASE,ePWM_Period_Direct_load);
ePWM_enableSyncOutPulseSource(T_PWM_base, ePWM_SYNC_Out_Pulse_on_software);
ePWM_setClockPrescaler (T_PWM_BASE,ePWM_Clock_diver_1,ePWM_HSCLOCK分配器_1);
ePWM_setCountModeAfterSync (T_PWM_BASE,ePWM_COUNT_MODE_UP_After_sync);
ePWM_setEmulation Mode(T_PWM_base, ePWM_emulation_free _run);
ePWM_setPhaseShift (T_PWM_BASE,0);
//设置时基计数器寄存器(TBCTR )
ePWM_setTimeBaseCounter(T_PWM_BASE, 0);
//设置时基期间寄存器(TBPRD)
//初始设置为零
ePWM_setTimeBasePeriod (T_PWM_BASE,0);
//设置计数器比较控制寄存器(CMPCTL)
ePWM_setCounterCompareShadowLoadMode (T_PWM_BASE,ePWM_counter_compare_A,ePWM_COMP_load_on_CNTR_ZERO);
ePWM_setCounterCompareShadowLoadMode (U_PWM_BASE,ePWM_counter_compare_B,ePWM_COMP_load_on_CNTR_ZERO);
//设置Action-Qualifier输出A寄存器(AQCTLA)
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT高,ePWM_AQ_OUTPT_ON_TIMEBASE _UP_CMPA);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPT_A,ePWM_AQ_OUTPT_HIGH,ePWM_AQ_OUTPT_ON_TIMEBASE期间);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE向下_CMPA);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE _ZERO);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_counter_compare_B,ePWM_AQ_output_high,ePWM_AQ_output_on_timebase _up _CMBB);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_counter_compare_B,ePWM_AQ_output_high,ePWM_AQ_output_on_timebase);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_counter_compare_B,ePWM_AQ_output_low,ePWM_AQ_output_on_timebbase_down _CMBB);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_counter_compare_B,ePWM_AQ_output_low,ePWM_AQ_output_on_timebase _zero);
//设置死带发生器控制寄存器(DBCTL)
ePWM_setDeadBandDelayMode(T_PWM_base, ePWM_DB_red, true);
ePWM_setDeadBandDelayMode(T_PWM_base, ePWM_DB_FED,true);
//选择EPWMA作为死区发生器的输入
ePWM_setRisingEdgeDeadBandDelayInput (T_PWM_BASE,ePWM_DB_INT_EPWMA);
ePWM_setRisingEdgeDeadBandDelayInput (U_PWM_BASE,ePWM_DB_INPUT_EPWMB);
//为有源高互补配置配置正确的极性。
ePWM_setDeadBandDelayPolarity (T_PWM_BASE,ePWM_DB_RED,ePWM_DB_POLICAL_ACTIVE_HIGH);
ePWM_setDeadBandDelayPolarity (T_PWM_BASE,ePWM_DB_FED,ePWM_DB_POLICAL_ACTIVE_LOW);
//设置死区上升边缘延迟寄存器(DBRD)
ePWM_setRisingEdgeDelayCount (T_PWM_BASE,SCR_DEADTIME);
//设置死区下降边缘延迟寄存器(DBFED)
ePWM_setFallingEdgeDelayCount (T_PWM_BASE,SCR_DEADTIME);
//设置PWM斩波器控制寄存器(PCCTL)
ePWM_DisableChopper (T_PWM_BASE);
//设置跳闸区域选择寄存器(TZSEL)
ePWM_DisableTripZoneSignals (T_PWM_BASE,TZSEL_SIGNAL_ALL);
//由于PWM被配置为上/下计数器,因此期间寄存器为
//设置为所需PWM周期的一半
ePWM_setTimeBasePeriod (T_PWM_BASE,SCR_PWM_FREQ);
然后对于A与B,我尝试设置 ePWM_counter_compare_A与 ePWM_counter_compare_B
//更新T PWM占空比
void UpdateTPWM (内部双循环)
{
fDutyCycle =双周期/ 100.0 ;
浮点周期=(浮点)(ePWM_getTimeBasePeriod (T_PWM_BASE));
float cmpVal = fDutyCycle * Period;
ePWM_setCounterCompareValue (T_PWM_BASE,ePWM_counter_compare_A,cmpVal);
}
//更新UCAP耦合器PWM占空比
void UpdateUCAPCoplingPWM (内部双循环)
{
fDutyCycle =双周期/ 100.0 ;
浮点周期=(浮点)(ePWM_getTimeBasePeriod (U_PWM_BASE));
float cmpVal = fDutyCycle * Period;
ePWM_setCounterCompareValue (U_PWM_BASE,ePWM_counter_compare_B,cmpVal);
}
这是否能在EPWM2 A和EPWM2 B上输出不同的占空比? 我是否错过了某些内容?
所有这些都基于 ePWM_AQ_OUTPT_A/ePWM_AQ_OUTPUT B,您可以为A和B设置不同的操作。 如果 您希望它们完全独立,则它们可以完全独立。
然后对于A与B,我要尝试设置 ePWM_counter_wm_compare [_bwm]
计数器比较A/B与输出A和输出B没有关系
您是否看过此视频系列?
training.ti.com/c2000-enhanced-pulse-width-modulator-epwm-overview
如果我这样做的话
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT高,ePWM_AQ_OUTPT_ON_TIMEBASE _UP_CMPA);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPT_A,ePWM_AQ_OUTPT_HIGH,ePWM_AQ_OUTPT_ON_TIMEBASE期间);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE向下_CMPA);
ePWM_setActionQualifierAction (T_PWM_BASE,ePWM_AQ_OUTPUT A,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE _ZERO);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_AQ_OUTPUT B,ePWM_AQ_OUTPUT _HIGH,ePWM_AQ_OUTPT_ON_TIMEBASE _UP _CMBB);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_AQ_OUTPUT B,ePWM_AQ_OUTPUT _HIGH,ePWM_AQ_OUTPT_ON_TIMEBASE期间);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_AQ_OUTPUT B,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE向下_CMBB);
ePWM_setActionQualifierAction (U_PWM_BASE,ePWM_AQ_OUTPUT B,ePWM_AQ_OUTPUT低,ePWM_AQ_OUTPT_ON_TIMEBASE _ZERO);
这意味着EPWM2 A将在计数器比较A上输出,EPWM2将在计数器比较B上输出?
然后如果我设置了计数器比较B,那么将设置EPWM2 B占空比,然后如果我设置了计数器比较A,将设置EPWM2占空比。
我回顾了培训系列,但它没有显示如何单独控制EPWM2 A/B。 它只是说这是可能的。 我没有看到它在哪里展示了如何独立控制A/B?
109.7284万 -of-ePWM/4064317#4064317]这28.0039万这意味406.4317万意味着406.4317万着EPWM2上的输出A和A将进行对比? [/引述]正确!
但没有具体提到独立控制。 它描述了ePWM的工作方式。
NIMA
谢谢Nima! 如果我还有其他问题,我会通知您!