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.

[参考译文] 编译器/MSP430F5529:MSP DSPLIB 混淆!

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/594259/compiler-msp430f5529-msp-dsplib-confusion

器件型号:MSP430F5529

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

在这里的第一个帖子、所以我可以轻松地发布!

我正在尝试让我的头围绕 MSP DSPLIB 中的定点 FFT 代码、尤其是 MSP_FFT_FIXED_Q15。

示例代码使用 MSP_sinusple_Q15实用程序初始化输入数组、这大概会将 Q15结果放入输入数组中、以便 FFT 可以运行。

作为 Q15、我传递到正弦波的振幅参数为0.5、MSP_SINUSoid 返回的结果具有大约+/-16384十进制的峰值振幅、这是有道理的。

当我运行 FFT 时、我无法解释结果的缩放。

MSP DSP 库用户指南指出、256点 FFT 的结果可以解释为 Q8结果+/- 127.00000、也可以解释为 int16_t 结果除以128。

如果我想计算每个复数结果的幅度、最好在 Qmath 库中使用_QNmag 函数、并使 N=8、即_Q8mag()吗?

如果我这么做、结果是否采用 Q8格式? 我希望最终将幅度放大到 dB、因此我假设我可以保持 Q8格式、以获得使用+/- 128dB 的 dB 结果、还是过于简单?

如果我不使用 QNmag、如何从内部实部和虚部获得正确缩放的幅度?

我是否需要将每个乘以128、然后再乘以平方、再加和平方根?

我已经在这方面圈过、但我对 FP 数学的复杂性非常陌生!

目前、我不太担心精度和分辨率等问题

TIA。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在进一步挖掘之后、我认为我理解对于峰值幅度1的纯正弦输入、FFT 结果将在幅度128 (N/2)的频率下显示峰值、这是 Q8的输出范围限制。 除以128重新分频得到一个满量程的结果、得到20*log10(1)= 0dB。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andy、

    很高兴您能找到问题的答案。 感谢您的跟进!