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.

[参考译文] MSP430FR5994:如何将IQ31转换为FLOAT或ASCII?

Guru**** 2589280 points
Other Parts Discussed in Thread: MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/633141/msp430fr5994-how-to-convert-iq31-to-float-or-ascii

部件号:MSP430FR5994

我在IQmathlib中看到对其他目标的支持,但MSP430FR5994没有支持。   MSP430RegisteredIQmathLib用户指南显示了对IQN的支持,N= 1至30。

我的最终目标是以某种可读形式“打印”IQ31值。  因此,转换为float或ASCII是很好的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否尝试过使用_IQNtofor _IQtoF函数?

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我会更具体一点。 以下是MSP430RegisteredIQmathLib用户指南版本的剪切/粘贴
    01.10 .00.05 :

    4.2 6 _IQNtof
    将IQ数字转换为单精度浮点数字。
    原型:
    浮动
    _IQNtof(_IQN A)
    对于特定IQ格式(1 <= N <= 30)

    因此,正如您所看到的,我观察到的N=31不受支持是直接从用户指南中获得的。 另外,我特别查看了430的IQmathlib头文件,没有定义_IQ31toF宏/函数。

    我很接近只写自己的内容,但不支持N=31似乎很奇怪(它在其他TI目标上受支持!)。

    谢谢,Dale
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dale,

    您可以将IQ31转换为IQ30,并使用 _IQ30toF和_IQ30toa函数,如下所示:

    浮点结果=_IQ30toF (iq31Input >> 1);
    _IQ30toa (buffer,"%4.8f",iq31Input >> 1);
    

    通常,IQ数学函数最多只支持IQ29或IQ30,因为许多函数的输入或结果超出IQ31的范围。 例如,TRIG功能最多只支持IQ29,因为输入或结果在+/- PI范围内,不适合IQ30或IQ31格式。 当使用大型IQ格式时,精度的差异很小,一些较复杂的函数只计算27或28位的结果。

    对于参考单精度浮点,仅包含23位精度,在许多情况下,使用IQ23格式的浮点精度与单精度浮点一样高,而较大类型(如IQ29和IQ30)的精度将显著提高。 一个很好的例子是比较cosf (0.5)和_IQ29cos (_IQ29 (0.5))的结果与您从PC计算器获得的结果,IQ结果将更加准确。

    希望这有助于回答您的问题,并为某些IQ类型不受支持提供一些理由:)

    此致,

    Brent Peterson

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,Brent。 我得到了合理的解释,但期望与TI对其它目标的实施保持一致,这些目标确实支持IQ31。 而且,它看起来像是一个自然的IQmathlib扩展,因为LEA在这部分是可用的。

    顺便说一句,我了解有关精度与定点刻度和浮点格式的问题...在20世纪80年代,我在海军计划的定点数学库中工作过。 ;)

    不管怎样,我们都将其称为已解决!

    此致,
    戴尔