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.

[参考译文] 编译器/TMS320F2812:简单的IQ转换

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/580709/compiler-tms320f2812-simple-iq-conversion

部件号:TMS320F2812

工具/软件:TI C/C++编译器

我有一个32位带符号整数。 示例-

Int32 POSIT_iQ24; 

我打算使用IQ_24转换将其转换为浮点。 目前我的基本错误理解是这样做的。  

result_PositionValue =_IQ24toF ((_iQ24) Position_iQ24); 

这当然会产生不正确的结果。 请帮助我更好地理解这一IQ转换。 我确实尝试阅读了手册,但没有清楚地掌握内容(我的坏了)。  

谢谢  



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

    Raghu

    它似乎工作正常。  以下是我的测试案例:

    Int32 a=0x180万;   //a=iQ24中的1.5
    浮动32 x;
    X =_IQ24toF (A);

    我得到1.5 :

    请注意,您不需要将参数类型指定为_iQ24。  所有的工作都是要排长队。  不执行任何操作。  但是,包含类型并不会改变结果。  它仍然有效。

    此致,

    David

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

    一个问题。 它是否也适用于负数?? 只是好奇!

    此致,
    Raghu
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另外,在再次阅读文档时,我脑海中弹出了另一个问题。
    上述代码行位于TMS320F2812中。 因为它是定点DSP,所以我不能在DSP上进行此转换吗? 这没有完全意义(如果硬件根本无法转换,为什么TI会提供库函数进行转换),但我仍然要求100 % 确定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Raghu

    [引用用户="Raghu Rajappa]有趣:)  
     一个问题。 它是否也适用于负数?? 只是好奇![/QUOT]

    它使用负数,我想这取决于你对作品的定义。  我在iQ24中创建了a=0xFE80万,即- 1.5。  我在1.4999.9988万 “CCS表达式”窗口中得到x=-CCS。  如果我更改为十六进制视图,我会看到x=0xBFBFFFFFFF。

    "确切"答案是- 1.5 = 0xBFC0万。  因此,当该数字从iQ24转换为float32时,在最后一个二进制位置存在一些数字舍入错误。  理论上讲, 正数也会发生同样的情况。  这是浮点的典型情况。  结果并不总是准确的。

    此舍入错误是否是您认为该功能不工作的原因?

    此致,

    David

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

    另外,在再次阅读文档时,我脑海中弹出了另一个问题。
    上述代码行位于 TMS320F2812中。 因为它是定点DSP,所以我不能在DSP上进行此转换吗? 这没有完全意义(如果硬件根本无法转换,为什么TI会提供库函数进行转换),但我仍然要求100 % 确定。

    [/引述]
    这与作为定点CPU无关。  即使是浮点CPU也不知道分数。  浮点CPU (如F2.8335万)可以将硬件中的int或long转换为float32,但如果int或long表示分数值(或IQ值) ,则CPU不知道有关二进制点的任何信息。  您仍需要使用IQmath库 来应用正确的缩放比例。
    David