LM3S9B92 等 QEI 计数模式 配置问题



TI  LM3S 系列芯片部分含有编码器(QEI) 模块,使用时配置芯片 如 LM3S9B92  时,代码库里没有说如何在计数模式如何配置模块A ,B 正交 计数模式。

 QEIConfigure()的参数已经设置了 A B 通道计数模式,手册没有说明这种配置时,计数器是否是 A B 两个通道的脉冲上下边缘都计数 (即 4 分频)。

 QEIVelcityConfigure()有关于4分频的内容,但这个是

速度捕获部分的配置操作。

  使用了QEIPositionGet() 得到的返回指总是为 0   值。

  示例代码和其他的例程代码也都没有这方面的说明,只有关于速度捕获的简单示例代码, 在此发帖请教大家如何正确配置这个 A B 两通道 上下边缘都计数的正交编码器位置计数模式。希望大家能提供帮助。

  • wenli wang :

      建议使用EIConfigure()函数加QEI_CONFIG_CAPTURE_A_B参数,配置A,B两通道,上下边缘都计数方式

  • 感谢楼上的,其实 QEIConfigure()我已选择了QEI_CONFIG_CAPTURE_A_B,又仔细看了手册,确实是上下边缘都计数的方式,我顶上的问题是 我已经按要求配置了QEI   ,而且用QEIPositionSet() 设置的数,用QEIPositionGet() 能正确的再读出来,可就是用QEIPositionGet() 得不到编码器旋转时的位置数,似乎QEI 硬件还是没有启动对脉冲计数。 所以请教有过实践的,提示下详细配置QEI 的步骤 和示例代码以参考。

  • wenli wang :  

      看看这个能不能帮到你

    QEI编程笔记.rar
  • 自己折腾了几天,终于搞通了,现在看看配置不算复杂。

     配置步骤如下:

    ...............

    //QEI0

    SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI0);

    GPIOPinTypeQEI(GPIO_PORT?_BASE, GPIO_PIN_? | GPIO_PIN_?);

    GPIODirModeSet(GPIO_PORT?_BASE, GPIO_PIN_?, GPIO_DIR_MODE_HW);

    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_?, GPIO_DIR_MODE_HW);

    GPIOPinConfigure(GPIO_P?_PHA0);  //  开始漏了这句,卡了好久

    GPIOPinConfigure(GPIO_P?_PHB0);// 开始漏了这句,卡了好久

    QEIConfigure(QEI0_BASE,

                 (QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET |

                  QEI_CONFIG_QUADRATURE | QEI_CONFIG_NO_SWAP ),  xxxxxxx);                  

    QEIEnable(QEI0_BASE);

    SysCtlDelay(200);

    ....................