工具/软件:TI C/C++编译器
您好!
我正在使用 TMS320F28075微控制器。 我 通过 ADC A2进行直流电压检测。 也使用了 PWM1A、1B。 当直流电压 ADC 计数超过3500时、我想使两个 PWM 跳闸(低电平)。 为此,我使用了比较模块。 我已针对同一个进行了以下编码。
// CMPSS 初始化
Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 0;//高比较器同步跳变
Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 3;//对高比较器使用滤波和锁存跳闸
Cmpss1Regs.COMPCTL.bit.COMPHINV = 0;//高比较器的值大于 DAC 时跳闸
Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;//比较高比较器的 DAC 值
Cmpss1Regs.COMPHYSCTL.bit.COMPHYS = 1;//比较器的典型迟滞
Cmpss1Regs.COMPSTSCLR.bit.HSYNCCLREN = 0;// PWMSYNC 不会复位高电平比较器的锁存
Cmpss1Regs.COMPSTSCLR.bit.HLATCHCLR = 1;//立即清除高电平比较器的锁存
Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL = 0;//在 SYSCLK 上更新 DAC 值
Cmpss1Regs.COMPDACCTL.bit.SELREF = 0;// VDDA 用作 DAC 基准
Cmpss1Regs.COMPDACCTL.bit.DACSOURCE = 0;//未使用斜坡发生器
Cmpss1Regs.DACHVALS.bit.DACVAL = 4000;
// Cmpss1Regs.CTRIPLFILCTL.bit.FILINIT = 1;//将过滤器中的所有数据初始化为输入值
// Cmpss1Regs.CTRIPLFILCTL.bit.THRESH = PAGE_MAJ;//跳闸窗口中的高采样数
// Cmpss1Regs.CTRIPLFILCTL.bit.SAMPWIN = POST_WIN;//投票窗口中的样本数= SAMPWIN+1
// Cmpss1Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 0;//未使用 SYSCLK 的预分频
cmps1Regs.CTRIPHFILCTL.bit.FILINIT = 1;//将过滤器中的所有数据初始化为输入值
cmps1Regs.CTRIPHFILCTL.bit.THRESH = PALIT_MAJ;//跳闸窗口中的高采样数
cmps1Regs.CTRIPHFILCTL.bit.SAMPWIN = POST_WIN;//投票窗口中的样本数= SAMPWIN+1
Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0;//未使用 SYSCLK 的预分频
Cmpss1Regs.COMPLOCK.bit.CTRIP = 1;//锁定跳闸寄存器
Cmpss1Regs.COMPLOCK.bit.DACCTL = 1;//锁定 DACCTL 寄存器
Cmpss1Regs.COMPLOCK.bit.COMPHYSCTL = 1;//锁定 COMPHYSCTL 寄存器
Cmpss1Regs.COMPLOCK.bit.COMPCTL = 1;//锁定 COMPCTL 寄存器
// PWM 初始化
EPwm1Regs.TZSEL.bit.DCBEVT2 = TZ_ENABLE;// DCBEVT1上的单次触发
EPwm1Regs.TZSEL.bit.DCAEVT2 = TZ_ENABLE;// DCAEVT1上的单次触发
EPwm1Regs.TZCTL.bit.DCBEVT2 = TZ_FORCE_LO;//在 DCBEVT1上强制为低电平
EPwm1Regs.TZCTL.bit.DCAEVT2 = TZ_FORCE_LO;//在 DCAEVT1上强制为低电平
EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT2;// DCB 的 EVT1源
EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;// DCA 的 EVT1源
EPwm1Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//事件的异步使用
EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_异 步;//事件的异步使用
EPwm1Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBH_HI;// DCBH->高电平上的事件
EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;// DCAH->高电平上的事件
EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0;//跳闸组合上的 DCBH
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 0;// DCAH on TRIP 组合
EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;
EPwm1Regs.DCAHTRIPSEL.bit.TRIPINPUT4 = 1;//使用跳闸4 (相位过流)
通过此设置、即使直流电压较低、我始终将 PWM 设为低电平。PWM 和 CMPSS 的初始化是否正确
此致、
Sagar
