您好,
我正在为eQEP (正交编码器)使用tms320f2.8555万 DSP微控制器。
在此示例中,_2833xEqep_pos_speed.c我的quseare
tmp =(长)((长) pos16bval*(长) p->mech_scaler);// q0*q26 = q26
Tmp &= 0x03FFF000;
tmp =(int)(tmp>>11);// q26 -> q15
问题1.为什么mech_scalar被视为2^26/4000 (1/4000)。
问题2.为什么温度为并带有0x03FFF000;
问题3.为什么温度为>>>(右位移)与11;
问题4.为什么温度为0x7FFF并带有0x7FFF;
问题5. newp=_IQ15toIQ (tmp);在什么是_IQ15toIQ (tmp)? 如果它等于tmp/2^9,那么为什么要将tmp分成2^9?
如果(p->DirectionQep=0)// POSCNT正在倒计时
{
IF (newp>oldp)
Tmp1 =-(_IQ (1)- newp + oldp);// x2-x1应为负
否则
Tmp1 = newp -oldp;
}
问题7.为什么从_IQ(1)=>Tmp1 =-(_IQ(1)- newp + oldp)中减去newp - oldp? 为什么在该语句中使用_IQ (1)?
请尽早指导我们解决上述问题