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

请教关于IQ格式的表示

请教一个表达式  W=Td*(Rec*3/4095)/(3*T)

其中

0<Td<500

0<Rec<4095

7000<T<8000

请问以下用Q格式表示是否正确:

_iq24  W, dta_u, dta_l;

dta_u = _IQ24mpy(_IQ16toIQ(Tdt),(_IQ24div(_IQ24mpy(_IQ16toIQ(RectfierVoltage ), _IQ16toIQ(3)), _IQ16toIQ(4095)) ));
dta_l = _IQ24mpy(_IQ24mpy(_IQ16toIQ(2),_IQ16toIQ(EvbRegs.T3PR)),_IQ24(3));

W= _IQ24div(dta_u, dta_l);

谢谢 !

Eric Ma:

dony,

q24的表达范围只是 – 128 ~ 127.999999999,不能使用上述表达范围,

你应该是用Q18及以下格式。

ERIC

请教一个表达式  W=Td*(Rec*3/4095)/(3*T)

其中

0<Td<500

0<Rec<4095

7000<T<8000

请问以下用Q格式表示是否正确:

_iq24  W, dta_u, dta_l;

dta_u = _IQ24mpy(_IQ16toIQ(Tdt),(_IQ24div(_IQ24mpy(_IQ16toIQ(RectfierVoltage ), _IQ16toIQ(3)), _IQ16toIQ(4095)) ));
dta_l = _IQ24mpy(_IQ24mpy(_IQ16toIQ(2),_IQ16toIQ(EvbRegs.T3PR)),_IQ24(3));

W= _IQ24div(dta_u, dta_l);

谢谢 !

dony chen:

回复 Eric Ma:

Eric:

但是最终结果W需要与其他IQ24的数据进行运算,该怎么处理?

dta_u = _IQ18toIQ24(_IQ18mpy(_IQ18(Tdt),(_IQ18div(_IQ18mpy(_IQ18(Rec), _IQ18(3)), _IQ18(4095)) )));dta_l = _IQ18toIQ24(_IQ18mpy(_IQ18mpy(_IQ18(2),_IQ18(T)),_IQ18(3)));

W=_IQ24mpy(dta_u, dta_l);

谢谢!

请教一个表达式  W=Td*(Rec*3/4095)/(3*T)

其中

0<Td<500

0<Rec<4095

7000<T<8000

请问以下用Q格式表示是否正确:

_iq24  W, dta_u, dta_l;

dta_u = _IQ24mpy(_IQ16toIQ(Tdt),(_IQ24div(_IQ24mpy(_IQ16toIQ(RectfierVoltage ), _IQ16toIQ(3)), _IQ16toIQ(4095)) ));
dta_l = _IQ24mpy(_IQ24mpy(_IQ16toIQ(2),_IQ16toIQ(EvbRegs.T3PR)),_IQ24(3));

W= _IQ24div(dta_u, dta_l);

谢谢 !

Eric Ma:

回复 dony chen:

dony,

我看你这些变量都是整数,为什么要使用IQ操作呢?

如果W是可以由IQ24表达的话,那就可以。 就把W从IQ18转换成IQ24就可以。

建议参照C:\ti\controlSUITE\libs\math\IQmath\v160\doc 文档说明。

Eric

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