例如将EPWM1_A和EPWM1_B设置为两路相差为90度的PWM波,用来模拟编码器的信号。
如果用EPWM1_A和EPWM2_A来做,很容易实现,设置EPWM1和EPMW2的相差即可,但是这样要求将EPWM1模块和EPWM2的频率设置为一样,这样一个需求就占用了EPWM1_A,EPWM1_B,EPWM2_A,EPWM2_B四个端口。
因此如果能用一个EPWM1能搞定最好。
我用的芯片是TMS320F28035
CHENG LIANG:
同一组PWM用的是相同的TBCTR,不能移相。
例如将EPWM1_A和EPWM1_B设置为两路相差为90度的PWM波,用来模拟编码器的信号。
如果用EPWM1_A和EPWM2_A来做,很容易实现,设置EPWM1和EPMW2的相差即可,但是这样要求将EPWM1模块和EPWM2的频率设置为一样,这样一个需求就占用了EPWM1_A,EPWM1_B,EPWM2_A,EPWM2_B四个端口。
因此如果能用一个EPWM1能搞定最好。
我用的芯片是TMS320F28035
mangui zhang:
别人的分享
我想将ePWM3和ePWM4作为同频率的PWM波输出,但之前错开一个角度。寄存器配置应该没有问题,但是两个相位还是相同。在网上查找说,因为ePWM3和ePWM4不在同一个同步链。请问各位大虾,是这样的么。我在28335的资料里看到,ePWM同步链方案有三种,其中有两种这两个pwm是在同一同步链的。请问如何配置同步链方式呢寄存器配置如下:让EPWM3和EPWM4以相同的频率输出,只是前后相位不同,EPWM3主要设置如下(频率为100Hz) EPwm3Regs.TBPRD = 18750; EPwm3Regs.TBPHS.half.TBPHS = 0; EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm3Regs.TBCTL.bit.SYNCOSEL =TB_CTR_ZERO; EPwm3Regs.TBCTL.bit.HSPCLKDIV = 2; EPwm3Regs.TBCTL.bit.CLKDIV = 2; EPwm3Regs.CMPA.half.CMPA = 12500; EPwm3Regs.CMPB = 6250;EPWM4的主要设置如下: EPwm4Regs.TBPRD = 18750; EPwm4Regs.TBPHS.half.TBPHS = 12500; EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; //使能PHASE寄存器 EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; EPwm4Regs.CMPA.half.CMPA = 12500; EPwm4Regs.CMPB = 6250;
问题已经解决了,自问自答吧。刚才做试验验证了一下,确实ePWM3和ePWM4不是同一个同步链,像我这样的配置是不会产生相位差的。当我换成ePWM4和ePWM5时,按照上面那样配置,输出就正确了。那么,如何让ePWM3和ePWM4输出同频不同相位的PWM波呢,可以这样,将ePWM1设置成同步信号源,ePWM3和ePWM4设置成接受同步信号,并加载相位寄存器。将ePWM3和ePWM4相位寄存器设置的不同,就可以使得ePWM3和ePWM4输出同频不同相位的PWM波了
例如将EPWM1_A和EPWM1_B设置为两路相差为90度的PWM波,用来模拟编码器的信号。
如果用EPWM1_A和EPWM2_A来做,很容易实现,设置EPWM1和EPMW2的相差即可,但是这样要求将EPWM1模块和EPWM2的频率设置为一样,这样一个需求就占用了EPWM1_A,EPWM1_B,EPWM2_A,EPWM2_B四个端口。
因此如果能用一个EPWM1能搞定最好。
我用的芯片是TMS320F28035
robert liu:
回复 mangui zhang:
是的
例如将EPWM1_A和EPWM1_B设置为两路相差为90度的PWM波,用来模拟编码器的信号。
如果用EPWM1_A和EPWM2_A来做,很容易实现,设置EPWM1和EPMW2的相差即可,但是这样要求将EPWM1模块和EPWM2的频率设置为一样,这样一个需求就占用了EPWM1_A,EPWM1_B,EPWM2_A,EPWM2_B四个端口。
因此如果能用一个EPWM1能搞定最好。
我用的芯片是TMS320F28035
robert liu:
回复 robert liu:
自己回答一下,可以通过Up down计数的方式来实现
TI的例程eqep_pos_speed 就是通过ePWM1A和ePWM1B来模拟产生正交编码信号,从而给eEQP模块来检测的。