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

TMS320F280025C: ECAP怎么和EPWM同步

Part Number:TMS320F280025COther Parts Discussed in Thread:C2000WARE

这个是ePWM的配置

这个是ECAP2的APWM的配置

这个是ePWM7A的波形和eCAP2的APWM的波形

是哪个配置没配么  一直都对不上

Yale Li:

Hi,

您的代码是在哪个demo的基础上修改的?

,

1 1:

D:\CCS\CSSc2000\C2000Ware_4_02_00_00\device_support\f28002x\examples\hrpwm

这个文件夹里面两个程序都有借鉴

,

1 1:

以下是我的初始化程序

void ePWM_Config(Uint16 ePWMx,float period,float dutyfactor_A){       float count;       if(ePWMx==1)            ePWM=&EPwm1Regs;        //是初始化ePWM1       else if(ePWMx==2)       ePWM=&EPwm2Regs;        //是初始化ePWM2       else if(ePWMx==3)       ePWM=&EPwm3Regs;        //是初始化ePWM3       else if(ePWMx==4)       ePWM=&EPwm4Regs;        //是初始化ePWM4       else if(ePWMx==5)       ePWM=&EPwm5Regs;        //是初始化ePWM5       else if(ePWMx==6)       ePWM=&EPwm6Regs;        //是初始化ePWM6       else if(ePWMx==7)       ePWM=&EPwm7Regs;        //是初始化ePWM7       dutyfactor_A = 1-dutyfactor_A / 100.0;                    EALLOW;       CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;         EDIS;       count=50000000.0/period;                        //获取计数次数(是带小数的)       (*ePWM).TBPRD = (Uint16)(count);                  //PWM频率=1/(2*TBPRD)           (*ePWM).CMPA.bit.CMPA    = (Uint16)(count * dutyfactor_A);   // 初始设定占空比       (*ePWM).TBPHS.all = 0;                   //忽略同步事件         (*ePWM).TBCTR = 0;                            (*ePWM).TBCTL.bit.PRDLD = TB_SHADOW;            (*ePWM).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;                //选择上下计数模式                (*ePWM).TBCTL.bit.HSPCLKDIV = TB_DIV1;                         (*ePWM).TBCTL.bit.CLKDIV = TB_DIV1;                           (*ePWM).TBCTL.bit.FREE_SOFT = 11;                           //仿真模式位       (*ePWM).TBCTL.bit.SWFSYNC = 1;                // Synchronize high resolution phase to start HR period             (*ePWM).TBCTL.bit.PHSEN = TB_DISABLE;                // 不使用移相方式       if(ePWMx % 2 == 0)     //如果是ePWM2、4、6就配置同步源输输入为上一个ePWM 禁止同步输出       {           (*ePWM).EPWMSYNCINSEL.bit.SEL = ePWMx -1;                                   (*ePWM).EPWMSYNCOUTEN.all= SYNC_OUT_SRC_DISABLE_ALL;             }       else        //如果是ePWM1、3、5、7就配置同步源输出 禁止同步输入       {           (*ePWM).EPWMSYNCINSEL.all = SYNC_IN_SRC_DISABLE_ALL;                    (*ePWM).EPWMSYNCOUTEN.bit.ZEROEN= 1;                            }       (*ePWM).CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;                  //A模块比较使能              (*ePWM).CMPCTL.bit.SHDWAMODE = CC_SHADOW;                    //A模块比较模式       //AQCTLx为输出A比较方式控制寄存器       if(ePWMx % 2 == 0)   //如果是ePWM2、4、6就先低后高       {           (*ePWM).AQCTLA.bit.CAU = AQ_CLEAR;                             //PWM开关高/低              (*ePWM).AQCTLA.bit.CAD = AQ_SET;       }       else       {           (*ePWM).AQCTLA.bit.CAU = AQ_SET;                             //PWM开关高/低              (*ePWM).AQCTLA.bit.CAD = AQ_CLEAR;       }       EALLOW;       // 开启ePWMx中断进入服务函数       (*ePWM).ETSEL.bit.INTSEL= ET_CTR_PRD; // Select INT on PRD event         (*ePWM).ETSEL.bit.INTEN = 1;// Enable INT       (*ePWM).ETPS.bit.INTPRD = ET_1ST;// Generate INT on 1ST event            EDIS;}

,

Yale Li:

Hi,

方便指一下哪个波形分别代表哪个信号吗?两个的周期值分别是多少?设定的移相值是多少?实际的测量结果又是如何?

谢谢

,

1 1:

黄色是ePWM7    绿色是eCAP2的APWM

频率都是100KHz

移相值没设

相位偏差逐渐增大  我用光标标了  相差时间在示波器左边

,

1 1:

前两张应该是初始化前后顺序问题所以会这样?

,

Yale Li:

初始化的时候要关闭同步时钟,在配置完成后再打开。

,

1 1:

不好意思哈   昨个有点事  

这个么  这个我是在配置好后打开的

,

Yale Li:

两个波形之间的相位差有规律吗?

,

1 1:

没发现有规律

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280025C: ECAP怎么和EPWM同步
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1