Part Number:TMS320F28377D
因为项目要求,28377需要以外部CPLD产生的信号作为PWM1的同步信号输入源
所以配置GPIO85为X-Bar作为EXTSYNCIN1
但是实际我用信号源产生脉冲给GPIO85,PWM1并未能够与之同步
下面是我的一些配置
EALLOW;//配置GPIO85为X-BAR的EXTSYNCIN1
GpiCtrlRegs.GPCPUD.bit.GPIO85 = 1; // Enable pullup
GpioCtrlRegs.GPCQSEL2.bit.GPIO85 = 3; //
GpioCtrlRegs.GPCCSEL3.bit.GPIO85 = 0;
GpioCtrlRegs.GPCGMUX2.bit.GPIO85 = 0; // Set Group Mux
GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 0; // GPIO
InputXbarRegs.INPUT5SELECT = 85; // To
EDIS;
EALLOW;//配置SYNCSELECT寄存器(实际应该是没作用的)
SyncSocRegs.SYNCSELECT.bit.EPWM4SYNCIN = 5; // EPWM1SYNCOUT selected
SyncSocRegs.SYNCSELECT.bit.EPWM7SYNCIN = 5; // EPWM1SYNCOUT selected
SyncSocRegs.SYNCSELECT.bit.EPWM10SYNCIN = 5; // EPWM1SYNCOUT selected
SyncSocRegs.SYNCSELECT.bit.SYNCOUT = 0;
EDIS;
EALLOW;//关TBCLK
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
//配置PWM1的TB模块
EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; // Set timer period 801 TBCLKs
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; // Phase is 0
EPwm1Regs.TBCTR = 0x0000;
EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;
EPwm1Regs.TBCTL.bit.PHSDIR = 1;
EPwm1Regs.TBCTL.bit.PHSEN = 1;
EPwm1Regs.TBCTL.bit.SYNCOSEL = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up and down
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EALLOW;//开TBCLK
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
下图红色为PWM1A,蓝色为同步信号,可见PWM1未能与EXTSYNCIN同步
疑惑:1.外部同步信号输入是否有脉宽或者频率的要求?用信号源产生的信号是不是不符合要求?
2.28377的SYNCSELECT寄存器只有PMW4/7/10的输入可以配置为EXTSYNCIN1,而没有PWM1,这样有什么影响么;而280049等芯片是可以将SYNCSELECT寄存器PWM1配置为EXTSYNCIN1的
3.X-Bar和PWM1的TB模块是否配置正常?
Yale Li:
请先看一下这几个帖子:
TMS320F280041: PWM模块间同步问题 – C2000︎ 微控制器论坛 – C2000 微控制器 – E2E 设计支持
TMS320F280025C: ECAP怎么和EPWM同步 – C2000︎ 微控制器论坛 – C2000 微控制器 – E2E 设计支持
TMS320F280025C: 选择EXTSYNCIN1作为外部同步源延时问题 – C2000︎ 微控制器论坛 – C2000 微控制器 – E2E 设计支持