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

急求28335EPWM与外部脉冲同步的设置方法

各位老师好!

我想利用外部的脉冲通过GPIO6口输入,实现Epwm与外部信号同步的功能,并且想将Epwm2与Epwm3之间的同步信号断开,使Epwm3之后的同步信号仅与Epwm3关联。苦于对Epwm及GPIO设置不熟练,一直无法实现,且没有找到相关例程,想求助一下各位老师,希望获得一个详细的设置步骤,万分感谢!

mingkai yang:

回复 onebyte:

onebyte老师您好,感谢您的回复。

现在可以同步了,由于GPIO6口和GPIO32口都被占用了,因此是通过ECap将外部同步信号输入,再在ECap1的中断中加入语句:EALLOW;EPwm1Regs.TBCTL.bit.SWFSYNC = 1;EDIS;

通过软件置位的方式将预设相位值EPwm1Regs.TBPHS.half.TBPHS载入。但目前实现的现象是外部同步信号和片内PWM1信号基本同步,两个方波基本相对静止,但有90度左右的相位差,且这个相位差还有10多度左右的不稳定偏移。

不知道这种软件置位的方法是否比直接EPWMxSynci引脚输入的效果差?产生同步相位差的原因是否是主程序中其他中断造成的延时引起?烦请老师指点一下,谢谢!!

各位老师好!

我想利用外部的脉冲通过GPIO6口输入,实现Epwm与外部信号同步的功能,并且想将Epwm2与Epwm3之间的同步信号断开,使Epwm3之后的同步信号仅与Epwm3关联。苦于对Epwm及GPIO设置不熟练,一直无法实现,且没有找到相关例程,想求助一下各位老师,希望获得一个详细的设置步骤,万分感谢!

mingkai yang:

回复 mingkai yang:

我尝试了不用EPwm1Regs.TBCTL.bit.SWFSYNC = 1; 语句触发相位重置,而改通过GPIO32输入同步信号,结果同步PWM波形中的不稳定偏移消失了,分析其原因可能是高频信号杂波干扰了输入的同步信号,造成ECAP1的误触发(原来同步信号是通过ECAP1输入的,软件重置PWM1相位的语句写在ECAP1的中断中)。

但是,外部同步脉冲和产生的PWM1波形之间仍然有90度的相位差。请教各位老师是何原因?

各位老师好!

我想利用外部的脉冲通过GPIO6口输入,实现Epwm与外部信号同步的功能,并且想将Epwm2与Epwm3之间的同步信号断开,使Epwm3之后的同步信号仅与Epwm3关联。苦于对Epwm及GPIO设置不熟练,一直无法实现,且没有找到相关例程,想求助一下各位老师,希望获得一个详细的设置步骤,万分感谢!

mingkai yang:

回复 mingkai yang:

问题解决了,是PWM1初相设置的问题,自己马虎大意了。谢谢各位老师。

各位老师好!

我想利用外部的脉冲通过GPIO6口输入,实现Epwm与外部信号同步的功能,并且想将Epwm2与Epwm3之间的同步信号断开,使Epwm3之后的同步信号仅与Epwm3关联。苦于对Epwm及GPIO设置不熟练,一直无法实现,且没有找到相关例程,想求助一下各位老师,希望获得一个详细的设置步骤,万分感谢!

user5827328:

回复 mingkai yang:

你有QQ吗,我也需要EPWM外部同步,能留个QQ交流下不
(*ePWM[n]).TBCTL.bit.PRDLD = 1;// set Immediate load(*ePWM[n]).TBPRD = period;(*ePWM[n]).CMPA.half.CMPA = period/2;// Fix duty at 50%(*ePWM[n]).TBPHS.half.TBPHS = 0;(*ePWM[n]).TBCTR = 0;
(*ePWM[n]).TBCTL.bit.PHSEN = 1;(*ePWM[n]).TBCTL.bit.SYNCOSEL =TB_SYNC_IN;(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UP;//used to sync EPWM(n+1) "down-stream"(*ePWM[n]).TBCTL.bit.HSPCLKDIV = TB_DIV1;(*ePWM[n]).TBCTL.bit.CLKDIV = TB_DIV1;(*ePWM[n]).AQCTLA.bit.PRD = AQ_SET;(*ePWM[n]).AQCTLA.bit.CAU = AQ_CLEAR;(*ePWM[n]).DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;(*ePWM[n]).DBCTL.bit.POLSEL = DB_ACTV_LOC;// Active Hi Complimentary(*ePWM[n]).DBRED = 200;// dummy value for now(*ePWM[n]).DBFED = 200;// dummy value for now
N=1,我从片的设置,用的GPIO32输入的,不知道为什么还是同步不了

各位老师好!

我想利用外部的脉冲通过GPIO6口输入,实现Epwm与外部信号同步的功能,并且想将Epwm2与Epwm3之间的同步信号断开,使Epwm3之后的同步信号仅与Epwm3关联。苦于对Epwm及GPIO设置不熟练,一直无法实现,且没有找到相关例程,想求助一下各位老师,希望获得一个详细的设置步骤,万分感谢!

user5827328:

回复 onebyte:

我现在EPwm1Regs.TBSTS.bit.SYNCI=1状态检测有同步信号输入,示波器测同步波形也正常
(*ePWM[n]).TBCTL.bit.PRDLD = 1; // set Immediate load
(*ePWM[n]).TBPRD = period;
(*ePWM[n]).CMPA.half.CMPA = period/2; // Fix duty at 50%
(*ePWM[n]).TBPHS.half.TBPHS = 0;
(*ePWM[n]).TBCTR = 0;

(*ePWM[n]).TBCTL.bit.PHSEN = 1;
(*ePWM[n]).TBCTL.bit.SYNCOSEL =TB_SYNC_IN;
(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UP;
//used to sync EPWM(n+1) "down-stream"
(*ePWM[n]).TBCTL.bit.HSPCLKDIV = TB_DIV1;
(*ePWM[n]).TBCTL.bit.CLKDIV = TB_DIV1;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_CLEAR;
(*ePWM[n]).DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
(*ePWM[n]).DBCTL.bit.POLSEL = DB_ACTV_LOC; // Active Hi Complimentary
(*ePWM[n]).DBRED = 200; // dummy value for now
(*ePWM[n]).DBFED = 200; // dummy value for now
这是我的配置,表笔也共地了,两块DSP的EPWM1还是无法同步,是配置错了还是少了个什么必要条件,能帮忙解答下吗

赞(0)
未经允许不得转载:TI中文支持网 » 急求28335EPWM与外部脉冲同步的设置方法
分享到: 更多 (0)