This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

咨询一下,能否将DSP的EPMWi_A,EPWMi_B输出设置为相差为90度的PWM波?

Other Parts Discussed in Thread: TMS320F28035

例如将EPWM1_A和EPWM1_B设置为两路相差为90度的PWM波,用来模拟编码器的信号。

如果用EPWM1_A和EPWM2_A来做,很容易实现,设置EPWM1和EPMW2的相差即可,但是这样要求将EPWM1模块和EPWM2的频率设置为一样,这样一个需求就占用了EPWM1_A,EPWM1_B,EPWM2_A,EPWM2_B四个端口。

因此如果能用一个EPWM1能搞定最好。

我用的芯片是TMS320F28035

  • 同一组PWM用的是相同的TBCTR,不能移相。

  • 别人的分享

    我想将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波了

  • 自己回答一下,可以通过Up down计数的方式来实现

    TI的例程eqep_pos_speed 就是通过ePWM1A和ePWM1B来模拟产生正交编码信号,从而给eEQP模块来检测的。