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.

[参考译文] TMS320F28334:HVACI 无传感器2833x (控制套件)中的 IQ 库示例:

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example

器件型号:TMS320F28334
主题中讨论的其他器件:C2000WARE

大家好、

  IQ 数学库中的以下2个函数之间有何区别?

1)   _IQ (2.0);


2)   _IQ2toIq (2.0);

此外、请详细说明何时使用函数1和函数2以及具体示例。

此外、请告诉我、"Q24"表示 Q24格式的24整数位或分数分辨率?

谢谢、此致、

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

    您好!

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example "]  IQ 数学库中的以下2个函数之间有何差异。[quote userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example 还请详细说明何时使用函数1和函数2以及单个示例。

    这两个函 数之间的区别在于、第一个函数使用 global_Q 格式(无论您选择哪种格式)将浮点数转换为 IQ 值、第二个函数则将数字从 IQ2格式转换为 global_Q 格式。 GLOBAL_Q 格式基本上是您在程序中使用的默认 IQ 值格式、默认为24。 下面是一个示例、说明如何使用每个示例:

    // How to use _IQ(float F) function
    float floatVal = 2.0;
    _iq fixedValGlobal = _IQ(floatVal);
    
    // How to use _IQNtoIQ(_iqN A) function
    floatVal = 3.0;
    _iq2 fixedValAlt = _IQ2(floatVal);
    fixedValGlobal = _IQ2toIQ(fixedValAlt);

    在帖子中包含函数的方式不是正确的语法;有关详细信息、请参阅 IQmath 用户指南(文件资源管理器中的 C2000Ware_4_XX_XX_XX\libraries\math\IQmath\c28\docs)。

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example ]此外、请告诉我"Q24"表示 Q24格式的24整数位或小数分辨率?

    在用户指南中、您可以查看确切的详细信息、但"24"基本上指的是定点数据类型的精度。 所有 IQ 数据类型 都很长、这意味着它们的大小为32位。

    此致、

    Omer Amir

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

    您好 OMEN Amir、

    Q24的范围是-128到127.999,只有7位整数,1位用于符号,24位将是小数,对吧?  

    Q24表示基数点小数后的24个固定整数还是24位分解器?  图像来自... C28x IQ Math 库 第3.2节。

    您能否举一个德州 C283x 中 Q 格式表示的示例?

    此外、还可以执行一个 Q 格式的数学运算、任何加法、乘法、采用 Q16或 Q8格式。

    谢谢、此致、  

    认识 Pandya

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

    您好!

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example/4492620 #4492620">此处 Q24的范围是-128至127.999,只有7位整数,1位表示符号,24位表示小数对吗??  [/报价]

    是的、没错。

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example/4492620 #4492620"]Q24是指基数点小数后的24个固定整数还是24位分解器?  图像来自... C28x IQ Math 库 第3.2节。[/quot]

    Q24表示24位用于表示   存储的数字的小数部分。

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example/4492620 #4492620"]您还能提供德州 C283x 中 Q 格式表示的示例吗?

    Q 格式是 C2000Ware 中的库、仅基于软件而不是器件类型。 要使用 Q24格式、它基本上应该如下所示进行分解:

    [引用 userid="519017" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1192054/tms320f28334-iq-library-in-hvaci-sensor-less-2833x-control-suite-example/4492620 #4492620"]还对我进行了一个 Q 格式的数学运算任何加法、乘法采用 Q16或 Q8格式。

    遗憾的是、我找不到实际实现函数的确切汇编文件。 如果您想了解如何完成这些操作、可以运行 IQmath 示例之一并使用"汇编步骤进入"操作来查看使用的汇编代码。 此代码准确显示操作的完成方式。

    此致、

    Omer Amir

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

    您好 Omer Amir、

    我正在检查控制套件中的 HVACI_Sensorless_2833x 示例。 在这个项目中,我有一些疑问,我想问,上一个问题也是问的。

    具体如下:

    1) 1)我已经阅读了控制套件中的 IQ 数学指南以及互联网上有关 Q 表示法的信息、但我无法理解项目中的 IQ 数学方法。 我知道 Q 表示法是定点值。 我还在控制套件中阅读了它的文档。 您能不能用示例简单地告诉我这方面的信息。

    2) 2) IQ 数学头 #define  _iQ24 (a)   (long)(((a)* 16777216.0L)中有宏 、我不明白该宏的具体作用。 我知道它会将 值转换为 Q24值、但我无法理解它的确切用途是什么(为什么它会与2^n 相乘 (N= Q 格式分辨率、Q24则与2^24相乘、对于 Q20、则与2^20相乘)。 使用此乘法,它将转换为 Q24格式,对吗? 如果是, 此宏是否 不会超过 Q24 范围。 t


    因为 Q24具有-128至127的整数范围。  那么、这是如何进行 Q24转换

    3) 3)我有 MCU F28334。 它具有 FPU。 对于 F28334、我应该进行哪些更改才能使用此代码? 我知道头文件中有"浮点数学"选项。 我应该只打开该宏、还是需要进行任何其他更改?

    4) 4)为什么使用_IQmpy? 为什么我们不能使用普通 FPU 乘法、它们之间是否存在任何结果差异 ? 请说明。  



    请尽快帮助我完成此 IQ 数学循环。 提前感谢。 正在等待您的回复。

    谢谢、此致、
    认识 Pandya  

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

    您好!

    1. 您能否澄清您的要求? 库目录(C2000Ware_4_XX_XX_XX\libraries\math\IQmath\c28\examples)中存在 IQmath 示例、我已经为您提供了格式工作原理的示例、因此我不确定您需要哪种示例。
    2. 您所查看的宏本质上是将数字的整数部分向左移动、以便低24位(24位=十六进制0xFF FFFF)可用于定点表示的精度或分数部分。 请再次查看用户指南;iQ24数据类型允许8位整数、24位小数部分(使用二进制补码、从技术上讲、1位用于符号)。 整数的8位从-127变为128、您可以使用二进制补码进行验证。 当您询问宏是否不会超过 Q24范围时、我不确定您的意思;如果某个值 超出-127到128的整数范围、则位会在移位时被丢弃。
    3. 如果您的器件具有 FPU、并且您使用的是 IQmath、则无需进行任何更改、因为这两个器件不会相互交互、但请注意、除非代码出于传统原因需要使用定点表示法 (例如、您有一个使用 IQmath 的大型程序、因此更换所有数据类型是不合理的)、最好只使用浮点值、因为它们更准确、FPU 将用于加快浮点运算。 FPU 是加速浮点运算的硬件、而 IQmath 是用于 在浮点运算速度太慢(通常在器件上没有 FPU 时使用)时执行定点运算的软件。
    4. 使用_IQmpy 是因为您无法对定点数执行普通乘法;请记住、该数的一部分是整数、另一部分是小数、IQmath 库允许该数的这两个部分具有不同的大小。 因此、乘法需要考虑两个 IQ24数据类型是在乘法还是两个 IQ5数据类型。 FPU 乘法用于浮点数;  您可以查找浮点数的确切格式(IEEE-754标准)、但定点数和浮点数本质上具有与其数据类型不同的结构、因此它们不能以相同的方式进行乘法(如果您查看编译器的汇编输出、这应该更清楚)。

    我建议在线查看有关如何使用定点和浮点数字的示例、因为 TI 数学库遵循大多数其他地方使用的通用格式。

    此致、

    Omer Amir