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

TMS320F28027: EPWM4的PWM输出禁用了死区功能,PWM4A和PWM4B两个的占空比设置为不同的值时,发现占空比按CPMA设置的来与CPMB无关

Part Number:TMS320F28027

EPWM4的PWM输出禁用了死区功能,PWM4A和PWM4B两个的占空比设置为不同的值时,发现占空比按CPMA设置的来与CPMB无关 ,能否把两路PWM输出按不同的占空比输出?

还有个问题当使用死区功能后并且采用CPMA做源,PWM4B是PWM4A输出的取反,发现当CPMA的值小于两个死区设置值即DBFED和DBRED时PWM4A几乎没输出,而PWM4B有输出,PWM4A在一个周期内存在量个毛刺

这是为什么?

谢谢!

Green Deng:

1、我不太了解你的PWM模块工作方式是怎么样的,我的想法是虽然禁用死区了,是不是你的工程里面还是配置了两个波形互补输出?

2、这里没有太理解你的意思,方便的话可以画个草图什么的说明一下吗?

,

jun liu:

我的设置如下

for(i=4;i<5;i++)//ePWM4 { EALLOW;

PWMDef[i]->TBPRD = 3061-1; //频率19.6k PWMDef[i]->CMPA.half.CMPA = 0; //占空比 PWMDef[i]->TBPHS.half.TBPHS = 0x0000; // Phase is 0 PWMDef[i]->TBCTR = 0x0000; // Clear counter PWMDef[i]->CMPB= 0x0000; //对其模式PWM频率计算 T_PWM =2 x TBPRD x T_TBCLK PWMDef[i]->TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up down 中央对其模式 PWMDef[i]->TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading PWMDef[i]->TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; PWMDef[i]->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT; PWMDef[i]->TBCTL.bit.CLKDIV = TB_DIV1; PWMDef[i]->CMPCTL.bit.SHDWAMODE = CC_SHADOW; PWMDef[i]->CMPCTL.bit.SHDWBMODE = CC_SHADOW; PWMDef[i]->CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; PWMDef[i]->CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

//见P54 —–>Figure 31. Configuration Options for the Dead-Band Submodule //这里采用CPMA做源,PWMxB的输出是PWMxA的取反 PWMDef[i]->DBCTL.bit.IN_MODE = DBA_ALL; //S5 = 0; S4 = 0 PWMDef[i]->DBCTL.bit.OUT_MODE =DB_DISABLE;//DB_FULL_ENABLE;// DB_DISABLE;//DB_FULL_ENABLE; //S1 = 1; S0 = 1 PWMDef[i]->DBCTL.bit.POLSEL = DB_ACTV_HI;//DB_ACTV_HIC; //S3 = 1; S2 = 0

//设置PWM输出极性,当TB计数到达CMPA时,PWM输出的高低电平确定 PWMDef[i]->AQCTLA.bit.CAU = AQ_CLEAR;//AQ_SET; 当计数值达到CMPA时PWM模块的动作 PWMDef[i]->AQCTLA.bit.CAD = AQ_NO_ACTION;//AQ_CLEAR; 本程序只有CAU并无CAD除非是中央对齐模式 PWMDef[i]->AQCTLA.bit.ZRO = AQ_SET;//AQ_TOGGLE;//AQ_CLEAR; 自己添加 PWMDef[i]->AQCTLB.bit.CAU =AQ_SET;// AQ_CLEAR;//AQ_SET; 当计数值达到CMPA时PWM模块的动作 PWMDef[i]->AQCTLB.bit.CAD = AQ_NO_ACTION;//AQ_CLEAR; 本程序只有CAU并无CAD除非是中央对齐模式 PWMDef[i]->AQCTLB.bit.ZRO = AQ_CLEAR;//AQ_SET;//AQ_TOGGLE;//AQ_CLEAR; 自己添加

//P57 设置死区, 互补模式下,需要设置死区 PWMDef[i]->DBFED = 60; // 死区设置 TBCLKs PWMDef[i]->DBRED = 60; //

EDIS; }

EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =1; EDIS;

其中极性我是设置PWMDef[i]->DBCTL.bit.POLSEL = DB_ACTV_HI;这种应该不是互补输出吧  

PWMxB的占空比我在定时中断中设置

EPwm4Regs.CMPB =0x6F;

我发现不管CMPB设置为多少,波形和CMPA是互补的 CMPB设置没有起到作用

我想两路输出的频率一样只是占空比不一样就可以 谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28027: EPWM4的PWM输出禁用了死区功能,PWM4A和PWM4B两个的占空比设置为不同的值时,发现占空比按CPMA设置的来与CPMB无关
分享到: 更多 (0)