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:
没发现有规律