Board logo

标题: 求助:F28335的QEP计算外部增量式编码器脉冲数出错的问题! [打印本页]

作者: reporter    时间: 2014-1-13 11:30     标题: 求助:F28335的QEP计算外部增量式编码器脉冲数出错的问题!

本帖最后由 zlf0146 于 2014-1-12 13:14 编辑

当采用新买的增量式编码器(1000线)输出的A、B、I作为输入的信号时,手动转动编码器的转轴一圈时,发现EQep1Regs.QPOSCNT的值只有200多,正常应该有1000x4=4000,如果轴转得慢一点的话,EQep1Regs.QPOSCNT的值也会大一点,但远远没有达到4000。多转几圈的话,EQep1Regs.QPOSCNT的 值也并没有达到4000,基本是一圈200多递增,回转的时候也不递减,还是递增。
  用其他的芯片检测该增量式编码器信号时,则一切正确,证明该增量式编码器本身是工作正常的。
以下是QEP寄存器的设置:
void &nbsposSpeed_Init(void)
{

    #if (CPU_FRQ_150MHZ)
          EQep1Regs.QUPRD=1500000;        / Unit Timer for 100Hz at 150 MHz SYSCLKOUT =10ms
#endif        /在150MHz系统时钟下产生100Hz的单位时间值,即让qep10ms产生一次timeout中断         
  #if (CPU_FRQ_100MHZ)
          EQep1Regs.QUPRD=1000000;                        // Unit Timer for 100Hz at 100 MHz SYSCLKOUT
#endif        

        EQep1Regs.QPOSCNT = 0;               
        
        EQep1Regs.QDECCTL.bit.QSRC=00;// QEP quadrature count mode 求积计数模式:产生方向和4倍频的时钟
        EQep1Regs.QDECCTL.bit.XCR=0;        // 2x resolution (cnt falling and rising edges)
        EQep1Regs.QDECCTL.bit.SWAP=0;  
        EQep1Regs.QDECCTL.bit.IGATE=1;        //该位置1后,连索引脉冲都过滤了
        EQep1Regs.QDECCTL.bit.QAP=0;
        EQep1Regs.QDECCTL.bit.QBP=0;  
        EQep1Regs.QDECCTL.bit.QIP=0;  
        EQep1Regs.QDECCTL.bit.QSP=0;  
               
        EQep1Regs.QEPCTL.bit.FREE_SOFT=2;   //自然地动作
        EQep1Regs.QEPCTL.bit.PCRM=00;        // 每次索引事件产生时QPOSCNT复位
//        EQep1Regs.QEPCTL.bit.PCRM=01;        // 最大计数位置时QPOSCNT复位
        EQep1Regs.QEPCTL.bit.UTE=1;                 // Unit Timeout Enable 使能单位定时器
        EQep1Regs.QEPCTL.bit.QCLM=1; // Latch on unit time out使能单位时间输出时其他重要寄存器的锁存功能
//        EQep1Regs.QPOSMAX=0xffffffff;                //位置的最大计算值
        EQep1Regs.QPOSMAX=7999;                //位置的最大计算值
        EQep1Regs.QEPCTL.bit.QPEN=1;         // QEP enable 使能QEP
               
        EQep1Regs.QCAPCTL.bit.UPPS=5;           // 1/32 for unit position即每32个QCLK产生一个单位位置时件
        EQep1Regs.QCAPCTL.bit.CCPS=7;        // 1/128 for CAP clock 即捕捉定时器的时钟频率为SYSCLKOUT/128
        EQep1Regs.QCAPCTL.bit.CEN=1;         // QEP Capture Enable 使能QEP捕捉功能        
}
请各位大侠帮帮忙!谢谢!
作者: 残火太刀    时间: 2014-1-15 11:34

如本人留言违反国家有关法律,请网络管理员及时删除本人跟贴。本回贴不暗示、鼓励、
   支持或映射读者作出生活方式、工作态度、婚姻交友、子女教育的积极或消极判断。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0