晚上好。
我想使用该 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?
提前感谢您。
 
				 
		 
					
 
				
