This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP28034使用ECAP和EQEP模块测速问题

本人想改善原本的MT法测速问题,原程序中是对AB正交脉冲进行计数,每4个脉冲进行一次计时,比如 1 2 3 4脉冲测速一次, 5  6 7 8脉冲测速一次,通过这个进行测速,但是低速时效果不好。采用ecap模块可以实现最新的四个脉冲测速,形成流水线的形式,每次更新一个。比如 1 2 3 4脉冲测速, 2 3 4 5测速,3 4 5 6测速。每到来一个脉冲可以利用前一刻的,实现延迟最小。但是本人在写程序的时候发现一个问题,程序中如何实现最新的四个脉冲时间计数,因为ecap不采用中断访问的话,absolute time-stamp的时间是存在CAP1-CAP4中,比如前4个的时间 CAP3-CAP1,CAP4-CAP2,CAP1-CAP3,CAP2-CAP4不断循环,可是这个是不断变化的?程序中怎么实现最新的四个脉冲时间保存?(说的有点乱,见谅)

  • n你好,你用MT测速改良的咋样,我遇到测速波动大,有时间求指导

  • 楼主说了半天   没看懂  呵呵

    波动大是指计算出来的速度波动很大吗    是不是没有考虑计数器溢出等处理吧

    再就是看看你送入的波形有没有做整形处理    

  • 可以加你扣扣微信不,求指导

  • 建议设置ECAP模块为time difference (delta) mode下:

    ECap1Regs.ECCTL1.bit.CTRRST1 = EC_DELTA_MODE;

    ECap1Regs.ECCTL1.bit.CTRRST2 = EC_DELTA_MODE;

    ECap1Regs.ECCTL1.bit.CTRRST3 = EC_DELTA_MODE;

    ECap1Regs.ECCTL1.bit.CTRRST4 = EC_DELTA_MODE;

     EC_DELTA_MODE=1

    如此设置后,4个捕获后重置计数器TSCTR,可以通过直接调用CAP1-CAP4的值,获取最新的四个时间脉冲值。

    时序原理如图:

    参考文档:sprufz8a

    希望我的回答对你有所帮助。