C2000的epwm相移的时候,只有在pwm设置为向上向下计数模式么?能不能在设置向上计数模式的情况下使用?
Susan Yang:
可以使用向上模式的,我们也提供的相关的例程,以2837X为例,您可以参考
\C2000Ware_3_01_00_00\driverlib\f2837xd\examples\cpu1\epwm
的 epwm_ex3_synchronization
user6392471:
回复 Susan Yang:
你们有没有epwm关于同步或者相移的资料?
Susan Yang:
回复 user6392471:
基本都包含在了用户指南中,如第1861页:Chapter 15Enhanced Pulse Width Modulator (ePWM)
www.ti.com.cn/…/spruhm8i.pdf
user6392471:
回复 Susan Yang:
void PwmInit(void){ InitEPwm1Gpio(); InitEPwm2Gpio();
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EPwm1Regs.TBPRD = 4000-1; //频率15Khz EPwm1Regs.CMPA.half.CMPA = 2000-1; // set duty 50%
EPwm1Regs.TBPHS.all = 0; EPwm1Regs.TBCTL.all=0; EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //向上计数 EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x11;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.TBSTS.all=0; EPwm1Regs.TBPHS.half.TBPHS=0;//移相0度 EPwm1Regs.TBCTR=0;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.TBPRD = 4000-1; //频率15Khz EPwm2Regs.TBPRDHR=1<<8; EPwm2Regs.CMPA.half.CMPA = 2000-1; // set duty 50% initially
EPwm2Regs.TBPHS.all = 0; EPwm2Regs.TBCTL.all=0; EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //向上计数 EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm2Regs.TBCTL.bit.FREE_SOFT = 0x11;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.TBSTS.all=0; EPwm2Regs.TBPHS.half.TBPHS=500;//相移45度 EPwm2Regs.TBPHS.half.TBPHSHR=0; EPwm2Regs.TBCTR=0;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS;}
为什么这个程序的结果是pwm1A的相位比pwm2A的相位滞后45度,按照资料上说,应该是pwm2A比pwm1A滞后45度才对,看图片
上图第二张是datasheet的资料,从资料上看,pwm1A在周期处,也就是计算器为0的时候,产生一个同步信号,当产生同步信号后,pwm2在这个时间点上,相移45度pwm2A开始产生高电平,我的理解是这样,不知道是否理解对,如果理解对的话,为什么实际产生的波形却不是pwm2A滞后pqm1A 45度的相位角呢?那个pwm1A的同步信号在哪里产生的呢?
user6392471:
回复 user6392471:
有答案么?
Susan Yang:
回复 user6392471:
很抱歉,之前漏掉了这个帖子。
请问您使用的是哪款芯片?我们来测试一下您的程序,谢谢
user6392471:
回复 Susan Yang:
TMS320F28035PAGT