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.

[参考译文] CCS/TMS320F28379S:C2000位置管理器 SinCos 库

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS320F28379S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/607760/ccs-tms320f28379s-c2000-position-manager-sincos-library

器件型号:TMS320F28379S

工具/软件:Code Composer Studio

您好!

我´m 在具有浮点数学选项的 TMS320F28379S 上使用位置管理器 SINCOS 库。 当我从 PM SinCos 库(mySinCos)中观察定义的 SinCos 数据结构时、我会在结构中获得一些值为 NaN "非数字"的变量? 其他一些标记有(DEN)。

您有什么想法、这个问题可能来自哪里? 当我旋转电机轴时、QEP 结构也在计数、而 ftheta 也在计数。

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

    Sincos 库使用 IQ 数学运算定点数据。 您必须在 IQ_Math 模式下使用 IQ 数学库来构建它。 上面显示为去标准化或 NaN 的变量都是_IQ15变量。 它们需要使用该格式、而不是浮点格式。 "itheta"结果也会错误。

    您能否在将 MATH_TYPE 设置为 IQ_MATH 的情况下重新构建项目?

    此致、

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

    我们使用的是浮点、如示例 IDDK_PM_Servo_F2837x-v2中所示、并且已经有一些自己的使用 FLAOT 的代码。

    SinCos 库是否会为 acitve 浮点的变量"ftheta"提供正确的值?

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

    不幸的是、不是。 Sincos 库依靠 IQ15对一些变量进行格式化。 结果中有一个整数部分源自计算完整的正弦周期、还有一个小数部分是根据正弦/余弦比计算得出的。 当转轴速度较高时、整数部分将从 QEP 获取、以确保没有错过任何周期、因此必须是整数。 它们分别占据"itheta"的 I 和 Q 部分。 浮点"ftheta"是"itheta"的 IQ15至浮点转换。

    很抱歉、但我想您必须使用 IQ_Math 才能使 SINCOS 部件正常工作。

    此致、

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

    如果我在 SinCos 数据结构中对这些变量使用 long 数据类型(例如,sinofs、cosofs、singain、...),是否可行? 并在 IQmathLib.h 中使用 FLAOT_MATH?
    PM_SINCOS.lib 已使用 IQ_Math 进行预编译、或者?

    通常情况下、可以将位置管理器库与 IQmathLib.h 中的设置 FLAOT_MATH 结合使用吗?

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

    一旦将 MATH_TYPE 定义为 FLOAT_MATH、代码就无法再访问 IQmath 库函数。 例如、_IQ15mpy 将替换为浮点乘法、从而生成浮点结果、因此代码将不起作用。 这些 IQ 函数需要保持正确的数字格式、并在整个 Sincos 库代码中使用。

    我很欣赏这一问题、但我目前看不到一个简单的解决方案。

    此致、

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

    好的、我明白了。 但是、您能否告诉我位置管理器库中的 endat22库是否会与 IQ_Math 一同运行?

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

    Stefan、

    endat22库为浮点类型、不使用 IQ 数学运算。

    Bharathi

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

    我们有一个项目、希望使用 SinCos 库、Endat 库和旋转变压器库。
    我们如何在我们的软件中处理此问题? IQmathLib.h、IQ_Math 或 float 的正确值是什么?

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

    EnDat 库仅为浮点型-无需引用 IQmath。 旋转变压器库以定点(IQmath)和浮点形式提供、因此、如果使用后者、则不需要引用 IQmath。

    这样、只有 SINCOS 库需要引用 IQmath、您可以继续使用它所需的 MATH_TYPE = IQ_MATH 设置。

    这是否起作用?

    此致、

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