TI中文支持网
TI专业的中文技术问题搜集分享网站

关于28335捕捉口捕捉多路上升和下降沿

在做一个项目,有两路方波输入,两路捕捉口能正常捕捉。但是想计算出来当ECAP1出现上升沿的时候记录一个时间T1,然后当ECAP2出现上升沿的时候记录时间T2,然后通过计算这两个上升沿的时间差。

想知道怎么才能实现这么功能?捕捉口有没有公共的计数器或者芯片内部共用的计数器是哪个我能直接拿来计数的?

Green Deng:

每个ecap可以在每个脉冲的上升沿时记下counter(TSCTR)的值,所以原则上只要把两个ecap所记下的值相减就可以算出时间差了。

,

陈三少:

不是同一个ECAP捕捉到的时间,我想要的是ECAP1对应一个脉冲电压U1上升沿不会捕捉到一个时间也就是Ecap1Regs.CAP1,我把这个值记录了下来.然后捕捉口Ecap2对应的一个脉冲电压U2的上升Ecap2Regs.CAP1,这里记录下,我想得到的U1的上升沿之后多少时间U2的上升会来,也就是U1的上升沿和U2的上升沿之间的时间。

,

Green Deng:

如果我没理解错的话应该就是我说的。可能我说的不太清楚,你可以用ecap1的TSCTR记录U1上升沿,ecap2的TSCTR记录U2上升沿。这样两个寄存器的值就是两个电压的时间差了。

,

陈三少:

在尝试用TSCTR来计算,测试发现捕捉的这个TSCTR计数好像会被EPWM的周期给清掉。实际测试发现我用ECAP2在捕捉EPWM1B的上升沿和下降沿的时候,EPWM采用递增递减模式来,TBPRD的值设置成5000,CMPB的值设置成800,捕捉这边设置成CAP1POL=1;CAP2POL=0;CAP3POL=1;CAP4POL=0;我然后捕捉中断采用CEVT4。捕捉到的数据是800,9200,800,9200;ECAP里面TSCTR这个值好像最大就是计数到EPWM这里TDPRD*2也就是10000就被复位了,这里是哪里设置出错了呢?如何才能设置出来让TSCTR的值不被EPWM复位?ECPA1的TSCTR和ECAP2的TSCTR也不是同步的怎么才能做成同步呢?

,

Green Deng:

有没有设置eCAP的寄存器ECCTL2 使能SYNCI_EN?在eCAP的寄存器ECCTL2 使能SYNCI_EN, 同时将CTRPHS寄存器清0的话,当PWM在计数器等于0的时候产生一个同步信号给到eCAP模块,ecap模块将CTRPHS的值加载到TSCTR中。
同时ecap有个同步信号输入,这个同步信号可以由PWM产生,你可以按这个思路去测试一下eCAP模块同步。

,

陈三少:

测试了一下ECCTL2的寄存器SYNCI_EN清0能做到ECAP的寄存器TSCTR不被EPWM清零。
我想要的数据是ECap1里面捕捉到的第一个上升沿和ECap2里面捕捉到的第一个上升沿直接的时间差。ECCTL1.bit.CTRRST4设置成了1其他三个CTRRST都设置成了0,实际测量就是当EPCAP第四个捕捉信号到来就把TSCTR给清0了,还是没法实现当ECAP1捕捉到的点的时间和ECAP2捕捉到的时间之间关联计数器。我的目的很简单就是不同的ECAP口捕捉到的时间能关联起来计算两个不同ECAP口捕捉到的信号时间。

赞(0)
未经允许不得转载:TI中文支持网 » 关于28335捕捉口捕捉多路上升和下降沿
分享到: 更多 (0)