TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280025 EPWM Global Load 不能正常发波

我在使用280025 EPMW Global Load 碰到的问题

EPWM_setTimeBasePeriod(base, period); // period = 200   .// 频率100KHz

EPWM_setTimeBaseCounterMode(base, EPWM_COUNTER_MODE_UP); //  向上计数

EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_A,EPWM_AQ_OUTPUT_HIGH,EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_A,EPWM_AQ_OUTPUT_LOW,EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);

EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_HIGH,EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_LOW,EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);

// EPWM Global Load  相关配置

// 同时加载 CPMA CMPB

EPWM_enableGlobalLoadRegisters(base,EPWM_GL_REGISTER_CMPA_CMPAHR | EPWM_GL_REGISTER_CMPB_CMPBHR);

// CTR = ZERO  或者 CTR = PERIOD 是,触发加载

EPWM_setGlobalLoadTrigger(base,EPWM_GL_LOAD_PULSE_CNTR_ZERO_PERIOD);

//使能 Global Load

EPWM_enableGlobalLoad(base);

在一个 25KHz 中断中,

uint16_t cmp = 0;

__attribute__((ramfunc))__interrupt void v25KHz_ISR(void)

{

if(cmp < 150)

{

 cmp++;

EPwm4Regs.CMPA.bit.CMPA = cmp;
EPwm4Regs.CMPB.bit.CMPB =  cmp;

}else

{

cmp = 50; 

}

}

这样的写法,是不是,可以实现EPMW4的CMPA CMPB 同时更新。

实测结果。

1、EPWM1A 一直为高电平 ,EPMW1B一直低电平。

2、如果禁止 EPWM_disableGlobalLoad(base);,则 EPWM1A  EPMW1B 正常发波

是什么原因?

Green Deng:

user1601657 说:是不是,可以实现EPMW4的CMPA CMPB 同时更新。

这样的写法应该是把CMPA和CMPB更新为同一个值?

关于EPWM Global Load的问题可以跟帖以下链接:e2e.ti.com/…/tms320f280025-problem-of-using-epwm-global-load

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280025 EPWM Global Load 不能正常发波
分享到: 更多 (0)