工具/软件:Starterware
大家好、
我在尝试使用 BeagleBone White 的 eQEP 模块时遇到了一些问题。 我的目标是打印编码器旋转了多少。
下面是我的代码中成功构建的一部分、但当加载到连接到正交编码器的电路板上时、它不能按预期工作。
//
#define eQEP_QPOSCNT(0x0)
#define eQEP_QPOSINIT(0x4)
#define eQEP_QPOSMAX(0x8)
#define eQEP_QPOSCNT(0x28)
#define eQEP_QPOSPCTL(0x2A)
#define eQEP_QEP_QEP_QEP_REG+Q000+ QEP_QEP_QEP_TRF_Q0001
(0xQEP_QEP_QEP_TRF_QEP_QEP_QEP_QEP_TRF_Q0001)#define (0xQEP_QEP_QEP_QEP_QEP_TRF_QEP_QEP_TRF_QEP_QEP_QEP_QEP_QEP_QEP_QEP_QEP_TRF_QEP_TRF_QEP_QEP_TRF_Q0001)#define #define (0xQEP_QEP_QEP_QEP_QEP_QEP_QEP_
HWREG (SOC_eQEP_1_regs+eQEP_QDECCTL)=(HWREG (SOC_eQEP_1_regs+eQEP_QEP_QRECTL)&(~
~eQEP_QEP_QEP_QREGH
)= 0xQEP_QEP_QEP_1eQEP_eQEP_TRL (eQEP_QEP_QEP_QREGH)= 0xQEP_QEP_QEP_QEP_QEP_QREGH)|(eQEP_QEP_QEP_QEP_QEP_QEP_QEP_QEP_TRL (eQEP_QREGH)+ QEP_QEP_QEP_QEP_QEP_QEP_QEP_TRL = 0xQEP_QEP_QEP_QEP_QEP_QEP_TRL (eQEP_QEP_QEP_QREGH)+ 1)(eQEP_QEP_QEP_QEP_QEP_QEP_QEP_Q
CURRENT_pos = HWREG (SOC_eQEP_1_regs+eQEP_QPOSCNT);
UARTprintf ("计数=%d \n"、CURRENT_pos);
}
尽管我打印的消息是 Count=0或者我给 eQEP_QPOSINIT 寄存器的任何值、不管编码器旋转了多少...
假设我已经启用了所有必要的模块(例如 UART、电源域、时钟、GPIO 模块等)并且 我已经完成了正确的引脚复用、那么上述情况是否有问题?
我的意思是、根据这个代码、 我不应该打印位置计数器的递增(这是我的目标)?
有人有什么建议或可以指出任何错误吗?
此外、我是否有任何方法来检查 eQEP 模块是否已被实际正确启用?
请,我迫切希望得到一些帮助。
提前感谢。