TI中文支持网
TI专业的中文技术问题咨询交流网站

TMS320F280041: PWM模块间同步问题

Part Number:TMS320F280041

Hi,all

我想实现EPWM7相对于EPWM4的同步移相,但根据F28004X的数据手册,EPWM4SYNCIN不能接收EPWM7SYNCOUT的同步脉冲。

现在我的想法是将EPWM7SYNCOUT输出到GPIO39上,或者将EPWM7发出的同步脉冲配置为EXTSYNCOUT再输出到GPIO39。GPIO39作为EXTSYNCIN1外部同步脉冲输入到

EPWM4SYNCIN,实现同步移相操作。

现在我遇到的问题如下:

1.如何实现EPWM7SYNCOUT到GPIO39的输出配置?是否需要使用OUTPUT X-BAR功能?

2.如何实现GPIO39到EXTSYNCIN1的输入配置?是否需要使用INTPUT X-BAR功能?

Yale Li:

是需要用到output xbar和input xbar的,看一下我之前的回复:

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/496430/tms320f280049-f280049-epwm3-epwm4-epwm1-epwm2

,

?? ?:

你好,

你之前的回复和我的想法是一样的,但我现在编的程序无法实现想要的效果。我理解是没有做到EPWM7SYNCOUT到EXTSYNCOUT,EXTSYNCOUT到GPIO5,和GPIO5到EXTSYNCIN1的传输,但是我在数据手册中没有找到可以进行这种转换的寄存器设置。可以的话请帮我检查一下我的程序缺少了哪些设置。

//GPIO5,EXTSYNCOUT InputXbarRegs.INPUT3SELECT = 5; GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; //配置为输入 GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0; //配置为上拉 GpioCtrlRegs.GPAQSEL2.bit.GPIO26 = 3; //GPIO配置为非同步模式

//EPWM7作为输出源,EPWM7SYNCOUT

EPwm7Regs.TBCTL.bit.SYNCOSEL = 1; //Sync Output Select,01: CTR = zero: Time-base counter equal to zero (TBCTR = 0x00) SyncSocRegs.SYNCSELECT.bit.SYNCOUT = 2;//10: EPWM7SYNCOUT selected OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0 = 1; //01 : Select .1 input for Mux0 OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1; //1: Respective output of Mux0 is enabled to drive the OUTPUT1 of GpioCtrlRegs.GPAGMUX2.bit.GPIO5 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO5 = 1;EPwm7Regs.TBCTL.bit.PHSEN = 0; // 0: do not load the TBCTR from the TBPHS,禁用移相 EPwm7Regs.TBPHS.bit.TBPHS = 0;//phase shift angle

//EPWM4配置EPWM4SYNCIN为EXTSYNCIN1

EPwm4Regs.TBCTL.bit.SYNCOSEL = 0; SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 5;//101: EXTSYNCIN1 selected EPwm4Regs.TBCTL.bit.PHSEN = 1; // 0: do not load the TBCTR from the TBPHS EPwm4Regs.TBPHS.bit.TBPHS = 0;

寄存器配置中我没有找到可以设置EPWM7输出同步脉冲到EXTSYNCOUT的配置位

,

?? ?:

另外,请问您提到的“将EPWM3的输出直接作为EXTSYNCIN1或EXTSYNCIN2的输入信号”的想法如何实现,我认为我的功能也可以这么做,将EPWM7的输出作为EXTSYNCIN1的输入信号。

,

Yale Li:

好的,我看一下

,

?? ?:

昨天写的比较粗糙,GPIO口写错了。我重新发一下给您。

//GPIO5引脚作为同步脉冲寄存。 InputXbarRegs.INPUT3SELECT = 5; GpioCtrlRegs.GPADIR.bit.GPIO5 = 1; //配置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0; //GPIO口输出 GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; //配置为上拉 GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3; //GPIO配置为非同步模式

EPwm7Regs.TBCTL.bit.SYNCOSEL = 1; //Sync Output Select,01: CTR = zero: Time-base counter equal to zero (TBCTR = 0x00) SyncSocRegs.SYNCSELECT.bit.SYNCOUT = 2;//10: EPWM7SYNCOUT selected OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0 = 1; //01 : Select .1 input for Mux0 OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1; //1: Respective output of Mux0 is enabled to drive the OUTPUT1 of GpioCtrlRegs.GPAGMUX1.bit.GPIO5 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1;

EPwm7Regs.TBCTL.bit.PHSEN = 0; // 0: do not load the TBCTR from the TBPHS,禁用移相 EPwm7Regs.TBPHS.bit.TBPHS = 0;//phase shift angle

EPwm4Regs.TBCTL.bit.SYNCOSEL = 1; SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 5;//101: EXTSYNCIN1 selected EPwm4Regs.TBCTL.bit.PHSEN = 1; // 0: do not load the TBCTR from the TBPHS EPwm4Regs.TBPHS.bit.TBPHS = 100; EPwm4Regs.TBCTR = 0x0000; // initial value of counter EPwm4Regs.TBPRD = 454;//1000; // time-base counter

,

Yale Li:

sprui33f_TMS320F28004x Real-Time Microcontrollers Technical Reference Manual (Rev. F)

?? ? 说:OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX0 = 1; //01 : Select .1 input for Mux0 OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1; //1: Respective output of Mux0 is enabled to drive the OUTPUT1 of

首先你的output xbar选错了,只有MUX14的第3个信号是EXTSYNCOUT。8个OUTPUT可以任选一个,但是必须使用MUX14选择第3个信号;

(第995页)

?? ? 说:GpioCtrlRegs.GPADIR.bit.GPIO5 = 1; //配置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0; //GPIO口输出 GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; //配置为上拉 GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3; //GPIO配置为非同步模式

?? ? 说:GpioCtrlRegs.GPAGMUX1.bit.GPIO5 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1;

再来说GPIO,你选择的是OTPUT1,那就应该选择GPIO2:

(第892页)

再通过MUX和GMUX寄存器选择GPIO的功能为5。

?? ? 说:SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 5;//101: EXTSYNCIN1 selected

?? ? 说:InputXbarRegs.INPUT3SELECT = 5;

鉴于你为EPWM4选择的同步输入信号是EXTSYNCIN1,输入INPUTXBAR应该选择INPUTXBAR5:

(第989页)

这是我发现的有关同步信号输出输入的一些问题。

?? ? 说:EPwm4Regs.TBCTL.bit.SYNCOSEL = 1;

另外,EPWM4后边如果还有同步信号链上的模块需要同步的,建议直接将EPWM4的同步输入信号直通到后面,即

EPwm4Regs.TBCTL.bit.SYNCOSEL = 0;

,

?? ?:

Hi,Yale

问题已经解决,谢谢你的帮助!

,

Yale Li:

不客气

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280041: PWM模块间同步问题
分享到: 更多 (0)