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/MSP430F2619:QMath / IQMath、我有16位 Accel 数据、可以使用什么最佳实现方式和格式来计算 X、Y、Z 和倾斜度的总加速度。

Guru**** 2589275 points
Other Parts Discussed in Thread: MSP430G2553

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/627971/ccs-msp430f2619-qmath-iqmath-i-have-16-bit-accel-data-what-the-best-implementation-and-format-to-calculate-total-acceleration-from-x-y-z-and-inclination

器件型号:MSP430F2619
主题中讨论的其他器件:MSP-IQMATHLIBMSP430WAREMSP430G2553

工具/软件:Code Composer Studio

我正在寻找基于 QMRath/IQMath 的有效解决方案或示例代码、其中我有16位 Accel 数据(如有必要、可缩减为12位 Accel 数据)、其中计算总加速度(每个 X、Y、Z 的平方、然后求和、最后求和的 sqrt)。 我还对如何使用 atan2进行倾斜度计算感兴趣。

R.  

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    用户指南 software-dl.ti.com/.../MSP430-IQmathLib-UsersGuide.pdf 中提供了所有 MSP-IQMATHLIB 信息

    MSP430Ware ->库-> IQmath 库->示例项目-> MPY 软件或库下载中也提供了一些示例、但我不知道与相关应用相关的具体示例。

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

    您好 Richard、

    您是否了解过 MSP430方向跟踪器 TI 设计? 此 TI 参考设计展示了如何使用 IQmath 库与加速计组合来计算加速度幅度、检测器件何时处于自由落体状态、使用 atan2计算倾角(间距和侧倾)以及使用引力作为参考来校准加速计。

    该设计使用 MSP430G2553和软件 Qmath/IQmath 库、但相同的例程可用于任何器件和库版本。

    此致、

    Brent Peterson

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我看了一下、很有帮助、谢谢

    现在、我有 ADC 读数、它以 mg/10的形式传输到10、000、即1G = 10、000的读数。 这是通过单独的代码(非 IQ 方法)完成的。最大值为+/-8G、这很好地套件 Accel。

    我决定使用 Q12数学来表示+/-8.000G (偏差有三个满量程配置+/-2,4,8G

    问题是如何将+/-10000mG/10或+/-75000 mg/10的 int 值转换为 Q12变量、我已阅读 QMath 手册但无法弄清、我未从手册或演示代码中看到 int 到 Q12解决方案。

    示例代码会有所帮助。

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

    您可以将测量值转换为 Q12、方法是将整数测量值除以刻度(在本例中为10、000)。 由于测量为16位、我们将使用 IQmath 除法函数、然后转换到 Q12、以获得范围为+/-8.0G 的 Q12格式的最终结果。 Q12结果转换为浮点值以验证结果、并与预期值相等(0.5G = 5000mG/10)。

    _Q12结果;
    int32_t 测量= 5000;
    结果=(_Q12)_IQ12div (测量值、10000);
    volatile float resultFloat =_Q12toF (结果); 

    此致、

    Brent Peterson

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

    是否有通过网站或 Android 应用的 QMath 或 IQMath 计算器?
    涵盖此主题的最佳书籍或材料是什么?

    我发现分频器是3.45454号、因此我可以用1/3.45454更好地处理 IQ12mpy、但我得到了
    Q12 (1.00024)、通过 IQ12div (数据、3.45454)
    Q12 (0.999756)通过 IQ12mpy (数据、1/345454)、它说 PM 第6.1节手册、 QMath 的速度提高了两倍、IQMath 的速度提高了10倍(哇!)。

    手册记录了乘法时的14位精度有16位精度、想知道这是否与此相关?

    一个小错误、但好奇那里发生了什么。