Part Number:TMS320F28335
在引脚上通过信号源输入ECAP检测的方波,发现ECAP检测到的值是方波的毛刺所在的地方,而不是程序设置的方波下降沿。如果方波波形没有毛刺的话,ECAP就会检测不到数据。具体的配置如下:
ECap4Regs.ECCTL1.bit.CAP1POL = 1;// 0;//0 => Rising Edge; 1 => Falling Edge;ECap4Regs.ECCTL1.bit.CTRRST1 = 0;//0 => Do not reset counterECap4Regs.ECCTL1.bit.CAPLDEN = 1;//1 => Enable cap loadECap4Regs.ECCTL1.bit.PRESCALE = 0;//0 => Bypass the prescalerECap4Regs.ECCTL2.bit.CAP_APWM = 0;//0 => Capture mode; 1 => APWM modeECap4Regs.ECCTL2.bit.CONT_ONESHT = 1;//1 => One shoot modeECap4Regs.ECCTL2.bit.SYNCO_SEL = 3;//3 => Disable synchronous signal outECap4Regs.ECCTL2.bit.SYNCI_EN = 1;//1 => Enable synchronousECap4Regs.ECCTL2.bit.STOP_WRAP = 0;//n => Stop capture sequence after event n + 1ECap4Regs.ECCTL2.bit.TSCTRSTOP = 1;//1 => Allow TSCTR to runECap4Regs.CTRPHS = 0;//Synchronous PhaseECap4Regs.ECEINT.bit.CEVT1 = 0;//1 => Enable interrupt for event 1
Yale Li:
有抓波形吗?能不能结合波形具体描述下?
,
Liwen Jia:
程序想要实现的功能是利用ECAP捕捉输入信号的下降沿时间(如黄色波形),然后控制EPWM生成与ECAP下降沿时刻同步关断的驱动信号(如蓝色波形),开通时间由关断时间计算得到。示波器采集到的信号可以发现,在黄色波形没有毛刺的时候,蓝色波形没有输出。没有输出的原因经过寄存器观察发现,是ECAP检测到的数值太小,导致输出关断时间计算得到的开通时间为负数被舍掉了。按道理说,他应该检测到的是黄色波形的下降沿,不应该这么小。而有毛刺时,蓝色波形有输出,但是具体跟哪一个毛刺同步也很难确定。
,
Liwen Jia:
已经把相关波形放在下面了,非常感谢
,
Yale Li:
请看一下zhcs889q_TMS320F2833x、TMS320F2823x 实时微控制器 datasheet (Rev. Q)第34页7.4 建议运行条件:
高电平输入电压是3.3V左右,根据上传的波形来看,黄色波形的峰-峰值似乎都不到2.5V。这可能是eCAP捕获触发失败的原因。有了毛刺以后,峰-峰值符合触发条件,所以产生了随机触发、随机捕获的效果。
,
Liwen Jia:
很有道理,非常感谢,我去试一下
,
Yale Li:
好的