请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28069 你好。 我正在尝试使用比较器的斜坡发生器来实现斜坡补偿。 我已设置 Comp1Regs.RAMPMAXREF_Shdw = 0xFFFF 且 Comp1Regs.RAMPDECVAL_Shdw = 100。 当在调试中运行程序时、我观察寄存器 RAMPSTS 并看到它从0不变。 这很奇怪、因为我将"rampmaxref"设置为 max 这可能是由于缺少 PWMSYNC 而导致的
信号? 我设置 DACCTL.bit.RAMPSOURCE = 0、这应该使我 的 EPWM1成为斜坡源。 并且我设置 EPwm1Regs.HRPCTL.bit.PWMSYNCSEL = 1、因此当 CTR = 0时应生成 PWMSYNC。 我还缺少什么?
下面是斜坡和 PWM1的初始化代码:
InitEPwm (); EALLOW; EPwm1Regs.TBPRD = 900;//(100KHz @ 60MHz 时钟) EPwm1Regs.TBCTL.bit.PRDLD = 1; //立即加载 EPwm1Regs.TBPHS.Half.TBPHS = 0;//将相位寄存器设置为零 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//非对称模式 EPwm1Regs.TBCTL.bit.PHSEN = TB_DIV1;//相位加载 比率 TBIT.TBIT.TBIT.1TBIT.TBIT.TBIT.TBIT.1RCTL = TBIT.TBIT.TBIT.TBIT.TBIT.TBIT.TBIT.1TBIT.TBIT.TBIT.TBIT.1TBIT.TBIT.TBIT.TBIT.TBIT.TBIT.1TBIT.TBIT.TBIT.1 EPwm1Regs.TBPHS.ALL = 0; //时基相位寄存器 EPwm1Regs.TBCTR = 0; //时基计数器寄存器 EPwm1Regs.TBCTL.bit.FREE_SOFT = 2; //仿真挂起 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADDow; EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//将 PWM1A 设置为零 //根据 //比较器1输出 EPwm1Regs.DCASTL.DCMP= DCOEVT2; //根据 DCASTL.DCOL = DCASTL.DCASTL.DCOL = DCMP1REGER.TCOL = DCASTL.DCOL = DCASTL.TCOL = DCASTON.TCAST_TCOL;TCORM1REGER.TCOL = DCAST_TCOL = TCORM1REGER.TCO // DCAEVT2 = DCAH 高电平(将变为有效 //比较器输出变为高电平) EPwm1Regs.DCACTL.bit.EVT2SRCEL = DC_EVT2;// DCAEVT2 = DCAEVT2 (未滤波) EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT1RDSL.EPT.EEPwCMS1RP.EPT1 = EPWCL.EPT.EPT1RESL.T1R= EPwT1RP.EPT.EPT.EPT.EPT.EPT1RESL.T1RP.T1R= EPWCMS/ EPWCL.T1RP.T1RP.T1RP.TESL.N = EPWCMP= EPWCMS1RP.T1RP.T1RP.T1RP.TESL.T1RP.T1RP.EP. //PWMSYNC 为 CTR = 0; EPwm1Regs.ETSEL.bit.SOCAEN = 1; //在组上启用 SOC EPwm1Regs.ETSEL.bit.SOCASEL = 1; //从零匹配中选择 SOC EPwm1Regs.ETPS.bit.SOCAPRD = 1; //在发生第一个事件时生成脉冲 EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0; //启用影子模式 EPwm1Regs.CMPCTL.bit.LOADAMODE = 2; //在 CTR =零 EDIS 上重新加载; SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK = 1; //使能比较器的时钟1块 Comp1Regs.COMPCTL.bit.COMPDACEN = 1;//比较器加电 Comp1Regs.COMPCTL.bit.SYNCSEL = 0x1;//同步版本 Comp1Regs.COMPCTL.bit.QUALSEL = 0x2;// 3个时钟 Comp1Regs.COMPCTL.bit.CMPINV = 0x0;//通过 Comp1Regs.COMPCTL.bit.COMPSOURCE = 0x0;//反相输入是内部 DAC Comp1Regs.CompCTL.bit.DACSOURCE = 1;//内部 DAC1.RACMP0 = 1;//内部 DAC.COMPRATE = 1REGP.ADCC.COMPLE.COMPLE.COMPLE.T= 1;// //EPWM1是斜坡源 COMP1Regs.RAMPDECVAL_Shdw = 100;//初始斜率 COMP1Regs.RAMPMAXREF_Shdw = 0xFFFF;