晚上好。
我想使用该 PWM 数字比较器的 DCCAP 寄存器测量由模拟比较器生成的 Ton 周期、该比较器由 PWM 的 CRT=0事件复位。
问题是对捕获控制逻辑的描述不清楚、并且尝试配置所有路径非常困难。 实际上我尝试过、但我没有成功。
在下面、有我使用的代码:
//比较器配置
EALLOW;
CpuSysRegs.PCLKCR14.ALL |= 1.
Cmpss2Regs.COMPCTL.bit.COMPHSOURCE = 0;
Cmpss2Regs.COMPCTL.bit.COMPHINV = 0;
Cmpss2Regs.COMPCTL.bit.CTRIPHSEL = 3;
Cmpss2Regs.COMPCTL.bit.CTRIPOUTHSEL = 3;
Cmpss2Regs.COMPCTL.bit.ASYNCHEN = 0;
Cmpss2Regs.COMPCTL.bit.COMPLSOURCE = 0;
Cmpss2Regs.COMPCTL.bit.COMPLINV = 0;
Cmpss2Regs.COMPCTL.bit.CTRIPLSEL = 0;
Cmpss2Regs.COMPCTL.bit.CTRIPOUTLSEL = 0;
Cmpss2Regs.COMPCTL.bit.ASYNCLEN = 0;
Cmpss2Regs.COMPHYSCTL.bit.COMPHYS = 2;
Cmpss2Regs.COMPSTSCLR.bit.HSYNCCLREN = 1;
Cmpss2Regs.COMPDACCTL.bit.DACSOURCE = 1;
Cmpss2Regs.COMPDACCTL.bit.RAMPSOURCE = 1;
Cmpss2Regs.COMPDACCTL.bit.SELREF = 1;
Cmpss2Regs.COMPDACCTL.bit.RAMPLOADSEL = 0;
Cmpss2Regs.COMPDACCTL.bit.SWLOADSEL = 1;
Cmpss2Regs.COMPDACCTL.bit.FREESOFT = 0;
cmps2Regs.RAMPMAXREFS = 0;
cmps2Regs.RAMPDECVALS = 0;
cmps2Regs.RAMPDLYS.bit.delay = 0;
Cmpss2Regs.CTRIPLFILCTL.bit.SAMPWIN = 0;
cmps2Regs.CTRIPLFILCTL.bit.THRESH = 1;
Cmpss2Regs.CTRIPLFILCTL.bit.FILINIT = 0;
Cmpss2Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 0;
Cmpss2Regs.CTRIPHFILCTL.bit.SAMPWIN = 31;
cmps2Regs.CTRIPHFILCTL.bit.THRESH = 19;
cmps2Regs.CTRIPHFILCTL.bit.FILINIT = 0;
Cmpss2Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0;
Cmpss2Regs.COMPLOCK.bit.COMPCTL = 0;
Cmpss2Regs.COMPLOCK.bit.COMPHYSCTL = 0;
Cmpss2Regs.COMPLOCK.bit.DACCTL = 0;
Cmpss2Regs.COMPLOCK.bit.CTRIP = 0;
Cmpss2Regs.COMPCTL.bit.COMPDACE = 1;
EDIS;
/* CMPSS 模块 PWM Xbar 激活:CMPSS 全部配置*/
EALLOW;
EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX2 = 0;//选择 CMPSS2.CTRIPH 传递到 TRIP 5 *
EPwmXbarRegs.TRIP5MUXENABLE.BIT.MUX2 = 1;//启用 MUX2使 CMPSS2.CTRIPH 跳闸5 *
EDIS;
//ePWM
EALLOW;
EPwm2Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;/* DCAEVT1 = DCAH 高电平、禁用 DCAL *
EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = e_DC_TRIPIN5;// DCAH = TRIPIN5 *
EPwm2Regs.DCFCTL.bit.SRCSEL = 0;/*滤波器块信号源为 DCAEVT1信号*
EPwm2Regs.DCFCTL.bit.Blanke = 1;//启用消隐窗口
EPwm2Regs.DCFCTL.bit.BLANKINV = 0;/*消隐窗口未反转*
EPwm2Regs.DCFCTL.bit.PULSESEL = 1;//针对消隐和捕捉对齐的脉冲选择 TBCTR = 0x00 *
EPwm2Regs.DCCAPCTL.bit.Cape = 1;/* TBCTR 计数器捕获禁用*
EPwm2Regs.DCCAPCTL.BIT.SHDWMODE = 1;//禁用影子模式
EPwm2Regs.DCCAPCTL.bit.CAPMODE = 0;/*无锁存器*
EPwm2Regs.DCFOFFSET = 0;//消隐窗口偏移量*
EPwm2Regs.DCFWINDOW=0;/*消隐窗口宽度*/
EPwm2Regs.DCAHTRIPSEL.ALL = 0;//未选择跳闸输入作为组合或输入*/
EPwm2Regs.DCALTRIPSEL.ALL = 0;/*未选择 TRIP 输入作为组合或输入*/
EPwm2Regs.DCBHTRIPSEL.ALL = 0;//未选择跳闸输入作为组合或输入*/
EPwm2Regs.DCBLTRIPSEL.ALL = 0;//未选择任何跳闸输入作为组合或输入*/
EPwm2Regs.HRPCTL.bit.PWMSYNCSEL = 1;/* PWMSYNC 源选择位:PWMSYNC = CNT_ZERO 信号脉冲。 此同步由 COMP*/使用
EDIS;
寄存 器 EPwm2Regs.DCCAP 似乎始终采样1、即使比较器正在切换(从低到高)@ Ton 更大。
请告诉我错误在哪里?
如果消隐被禁用(实际上我不需要消隐来测量 Ton)、图中"与"门的输入始终为1还是始终为0?
提前感谢您。


