Hi All,
我在配置EPWM模块的全局加载与一次性加载的时候,遇到了一次性加载不生效的问题?我希望的配置是通过配置一次性加载,仅在我更新 EPWM_setGlobalLoadOneShotLatch(myEPWM1_BASE);一次加载寄存器后,才会从下一加载时刻将影子寄存器更新值到活动寄存器;目前配置完成后,我在中断中更新EPWM影子寄存器的值,但我并未使能一次加载,但实际epwm的输出产生了变化,这让我相信我的一次加载的配置没有生效,文章末尾会给出相关代码,相关配置说明参考下图:
关于全局加载与一次加载的配置代码如下:其余epwm配置再另一函数中完成,包括CMPA\CMPB\TBPRD\DEADB的配置,如果需要我可以在后续给出;请帮我确认一下我的哪里配置有问题导致我的一次加载没生效?
//全局加载配置--软件手动触发
void SetupPWM_GlobalLoad(void)
{
// 1. 使能 TBPRD, CMPA, CMPB 参与全局加载//GLDCFG
EPWM_enableGlobalLoad(EPWM1_BASE);//使能全局加载
EPWM_enableGlobalLoadOneShotMode(EPWM1_BASE);// 启用 One-Shot 模式(每次触发只加载一次)
EPWM_setGlobalLoadOneShotLatch(EPWM1_BASE);//设置One shot global shadow
//2、启用全局加载寄存器
EPWM_enableGlobalLoadRegisters(EPWM1_BASE,EPWM_GL_REGISTER_TBPRD_TBPRDHR);
EPWM_enableGlobalLoadRegisters(EPWM1_BASE,EPWM_GL_REGISTER_CMPA_CMPAHR);
EPWM_enableGlobalLoadRegisters(EPWM1_BASE,EPWM_GL_REGISTER_CMPB_CMPBHR);
//EPWM2
// 1. 使能 TBPRD, CMPA, CMPB 参与全局加载//GLDCFG
EPWM_enableGlobalLoad(EPWM2_BASE);//使能全局加载
EPWM_enableGlobalLoadOneShotMode(EPWM2_BASE);// 启用 One-Shot 模式(每次触发只加载一次)
EPWM_setGlobalLoadOneShotLatch(EPWM2_BASE);//设置One shot global shadow
//2、启用全局加载寄存器
EPWM_enableGlobalLoadRegisters(EPWM2_BASE,EPWM_GL_REGISTER_TBPRD_TBPRDHR);
EPWM_enableGlobalLoadRegisters(EPWM2_BASE,EPWM_GL_REGISTER_CMPA_CMPAHR);
EPWM_enableGlobalLoadRegisters(EPWM2_BASE,EPWM_GL_REGISTER_CMPB_CMPBHR);
//3、配置与EPWM1的GLDCTL2链接
EPWM_setupEPWMLinks(EPWM2_BASE, EPWM_LINK_WITH_EPWM_1, EPWM_LINK_GLDCTL2);
//EPWM3
// 1. 使能 TBPRD, CMPA, CMPB 参与全局加载//GLDCFG
EPWM_enableGlobalLoad(EPWM3_BASE);//使能全局加载
EPWM_enableGlobalLoadOneShotMode(EPWM3_BASE);// 启用 One-Shot 模式(每次触发只加载一次)
EPWM_setGlobalLoadOneShotLatch(EPWM3_BASE);//设置One shot global shadow
//2、启用全局加载寄存器
EPWM_enableGlobalLoadRegisters(EPWM3_BASE,EPWM_GL_REGISTER_TBPRD_TBPRDHR);
EPWM_enableGlobalLoadRegisters(EPWM3_BASE,EPWM_GL_REGISTER_CMPA_CMPAHR);
EPWM_enableGlobalLoadRegisters(EPWM3_BASE,EPWM_GL_REGISTER_CMPB_CMPBHR);
//3、配置与EPWM1的GLDCTL2链接
EPWM_setupEPWMLinks(EPWM3_BASE, EPWM_LINK_WITH_EPWM_1, EPWM_LINK_GLDCTL2);
//5、软件触发加载
//EPWM_setGlobalLoadOneShotLatch(base);//设置一次性加载脉冲
//EPWM_forceGlobalLoadOneShotEvent(base);//强制软件触发一次加载
}