TI中文支持网
TI专业的中文技术问题搜集分享网站

关于IQ格式转换的问题

   在Example_2833xEqep_pos_speed实例中,转速计算中使用到一个IQ格式转换的运算,不是很清楚,请教各位大神。

   在void POSSPEED_Calc(POSSPEED *p)函数中,有一段:

    

tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); // Q0*Q26 = Q26
tmp &= 0x03FFF000;                                                                                                     ————————这是要做什么事情?
p->theta_mech = (int)(tmp>>11); // Q26 -> Q15
p->theta_mech &= 0x7FFF;                                                                                          ————————这又是要干什么?

mangui zhang:

这些应该是与程序功能有关的屏蔽某些位而已   与IQ格式转换没关系吧 

具体example没有看过

   在Example_2833xEqep_pos_speed实例中,转速计算中使用到一个IQ格式转换的运算,不是很清楚,请教各位大神。

   在void POSSPEED_Calc(POSSPEED *p)函数中,有一段:

    

tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); // Q0*Q26 = Q26
tmp &= 0x03FFF000;                                                                                                     ————————这是要做什么事情?
p->theta_mech = (int)(tmp>>11); // Q26 -> Q15
p->theta_mech &= 0x7FFF;                                                                                          ————————这又是要干什么?

user1503552:

回复 Eric Ma:

Eric,

你好,我借楼问一下,为什么F28335有浮点运算的能力,在TI出的编码器例程中,计算速度和位置时还要用IQ格式啊?

   在Example_2833xEqep_pos_speed实例中,转速计算中使用到一个IQ格式转换的运算,不是很清楚,请教各位大神。

   在void POSSPEED_Calc(POSSPEED *p)函数中,有一段:

    

tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); // Q0*Q26 = Q26
tmp &= 0x03FFF000;                                                                                                     ————————这是要做什么事情?
p->theta_mech = (int)(tmp>>11); // Q26 -> Q15
p->theta_mech &= 0x7FFF;                                                                                          ————————这又是要干什么?

user5956715:

回复 Eric Ma:

你好,能不能帮忙解答一下tmp&= 0x03FFF000;     这句话的意思吗

   在Example_2833xEqep_pos_speed实例中,转速计算中使用到一个IQ格式转换的运算,不是很清楚,请教各位大神。

   在void POSSPEED_Calc(POSSPEED *p)函数中,有一段:

    

tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); // Q0*Q26 = Q26
tmp &= 0x03FFF000;                                                                                                     ————————这是要做什么事情?
p->theta_mech = (int)(tmp>>11); // Q26 -> Q15
p->theta_mech &= 0x7FFF;                                                                                          ————————这又是要干什么?

user5956715:

回复 user5956715:

也没什么意思只不过就是把右移的11位清零,这里移动了12位,但是对于IQ15格式来说是最低一位,影响不大。

赞(0)
未经允许不得转载:TI中文支持网 » 关于IQ格式转换的问题
分享到: 更多 (0)