在使用RDK-BLDC(LM3S8971)评估板做功能测试过程中,尝试添加位置闭环控制,因此使用到QEI模块的库函数。
发现问题:QEIPositionGet(QEI0_BASE)函数读回来的编码器位置始终为0,也就是说QEI位置积分器器(QEIPOS寄存器)的值没有增加。
QEI相关配置如下:
GPIOPinTypeQEI(PIN_ENCA_PORT, PIN_ENCA_PIN);
GPIOPinTypeQEI(PIN_ENCB_PORT, PIN_ENCB_PIN);
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_DIR_MODE_HW); //自己添加的,目的是启用IO复用功能
GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_HW); //自己添加的,目的是启用IO复用功能
GPIOIntTypeSet(PIN_ENCA_PORT, PIN_ENCA_PIN, GPIO_RISING_EDGE);
IntEnable(INT_GPIOC);
QEIConfigure(QEI0_BASE, (QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET | QEI_CONFIG_QUADRATURE | QEI_CONFIG_NO_SWAP), 99999);
QEIVelocityConfigure(QEI0_BASE, QEI_VELDIV_2, SYSTEM_CLOCK / QEI_INT_RATE);
QEIEnable(QEI0_BASE);
QEIVelocityEnable(QEI0_BASE);
QEIIntEnable(QEI0_BASE, QEI_INTTIMER);
IntEnable(INT_QEI0);
QEIPositionSet(QEI0_BASE,0);
//end
请问各位工程师有没有遇到过这种情况?可以怎么解决编码器位置的读取问题呢?
在此先谢谢啦!