|
你们好,我刚学习TMS320F28335,很多不懂,在此请教各位,谢谢。 在0和1之间变化,应该没对,但没找到问题出在哪里,请各位多多帮忙,谢谢, 也按照以下说明连接了这3个相应管脚, GPIO20/EQEP1A <- GPIO0/EPWM1A (simulates EQEP Phase A signal) |
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
|
你们好,我刚学习TMS320F28335,很多不懂,在此请教各位,谢谢。 在0和1之间变化,应该没对,但没找到问题出在哪里,请各位多多帮忙,谢谢, 也按照以下说明连接了这3个相应管脚, GPIO20/EQEP1A <- GPIO0/EPWM1A (simulates EQEP Phase A signal) |
如果保证了你的输入信号是没有问题的 那就是设置问题 如果只是0和1肯定是有问题的
你送入eqep的A B相信号 是否正确 连续
Z相有没有同时送入 Z相会使计数清零的
下面代码请参考
void PosSpeed_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捕捉功能
}