用例程Example_2806xEqep_pos_speed实验,编码器的ABZ信号中的Z信号来之后,QPOSILAT里会锁存QPOSCNT的值,这是正确的。后测试自己写的程序,QEP配置完全与例程Example_2806xEqep_pos_speed一样,QPOSCNT都能正常计数,但QPOSILAT无法锁存QPOSCNT的值,QEP始终无法检测到Z信号,硬件上完全可以确定ABZ信号都是正确的。有没有哪个寄存器能影响到QEP的INDEX信号,AB都可以,就Z信号没有,这问题搞了几天了,烦呀。
Joey Mao:
你用例程测试的时候自己做了修改的吧,如例程的注释:
The example requires the following hardware connections from EPWM1 and GPIO pins (simulating QEP sensor) to QEP peripheral. – GPIO20/eQEP1A <- GPIO0/ePWM1A (simulates eQEP Phase A signal) – GPIO21/eQEP1B <- GPIO1/ePWM1B (simulates eQEP Phase B signal) – GPIO23/eQEP1I <- GPIO4 (simulates eQEP Index Signal)
例程是用两个PWM信号模拟AB信号,用GPIO4通过中断模拟Z信号,测试的时候你使用的是编码器的真实信号吧,电路上也是连接的真实信号吧
用例程Example_2806xEqep_pos_speed实验,编码器的ABZ信号中的Z信号来之后,QPOSILAT里会锁存QPOSCNT的值,这是正确的。后测试自己写的程序,QEP配置完全与例程Example_2806xEqep_pos_speed一样,QPOSCNT都能正常计数,但QPOSILAT无法锁存QPOSCNT的值,QEP始终无法检测到Z信号,硬件上完全可以确定ABZ信号都是正确的。有没有哪个寄存器能影响到QEP的INDEX信号,AB都可以,就Z信号没有,这问题搞了几天了,烦呀。
kuntay:
回复 Joey Mao:
对的。但是我只要把例程的QEP配置好了,硬件上ABZ信号都正常,我观察QEP的寄存器是没有任何问题的吧。
用例程Example_2806xEqep_pos_speed实验,编码器的ABZ信号中的Z信号来之后,QPOSILAT里会锁存QPOSCNT的值,这是正确的。后测试自己写的程序,QEP配置完全与例程Example_2806xEqep_pos_speed一样,QPOSCNT都能正常计数,但QPOSILAT无法锁存QPOSCNT的值,QEP始终无法检测到Z信号,硬件上完全可以确定ABZ信号都是正确的。有没有哪个寄存器能影响到QEP的INDEX信号,AB都可以,就Z信号没有,这问题搞了几天了,烦呀。
Joey Mao:
回复 kuntay:
观察QEP的寄存器是没有问题的.
用例程Example_2806xEqep_pos_speed实验,编码器的ABZ信号中的Z信号来之后,QPOSILAT里会锁存QPOSCNT的值,这是正确的。后测试自己写的程序,QEP配置完全与例程Example_2806xEqep_pos_speed一样,QPOSCNT都能正常计数,但QPOSILAT无法锁存QPOSCNT的值,QEP始终无法检测到Z信号,硬件上完全可以确定ABZ信号都是正确的。有没有哪个寄存器能影响到QEP的INDEX信号,AB都可以,就Z信号没有,这问题搞了几天了,烦呀。
kuntay:
回复 Joey Mao:
问题找到了。有2个引脚都配置成了QEP的INDEX功能,导致INDEX无效。