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/TMS320F28379D:函数 RFFT_ADC_F32和相关幅度

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/852161/ccs-tms320f28379d-the-function-rfft_adc_f32-and-the-related-magnitude

器件型号:TMS320F28379D
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具/软件:Code Composer Studio

您好!

我使用 controlSUITE 中的示例"RFFT_ADC_RT"、我对幅度结果感到困惑、它应该与我在 MATLAB 中计算的结果匹配、但它是不同的。(我已经考虑了量化)

我的问题是、 RFFT_ADC_F32函数正在尝试将 无符号输入的 FFT 计算为浮动结果、然后 RFFT_MAG 函数尝试找出结果、但当我尝试此示例时、结果 与 MATLAB 结果不同、因此有人以前遇到过这个问题?

此致、

Karen

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

    Karen、

    您能否澄清您使用了哪些输入? 您是否尝试了 C2000Ware 示例而不是 controlSUITE? 我们不再支持 controlSUITE。

    谢谢、

    Sira

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

    Sira、

    是的、我按照您的建议使用 C2000器件。 我尝试 了2837x_RFFT_ADC_RT 的示例、我对 FFT 的幅度非常困惑、因为答案与我尝试的 Matlab 的大小不同。

    函数 2837x_RFFT_ADC_RT 可能会使输入信号标准化?  

    此致、

    Yuzhen

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

    Karen、

    让我来看看这个。 我会再来的。

    谢谢、

    Sira

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

    Karen、

    这是我尝试过的。

    1.我使用默认设置构建了该项目、并在2837x 控制卡上运行该项目。 既未更新"通过"计数器、也未更新"失败"计数器、因此通知我它在 F2837x 上无法正常运行。 可能为2838x 设置了链接器 cmd 设置。

    2.上面的项目在2838x controlCARD 上运行正常。 PASS = 1026、FAIL = 0。 默认设置包括(USE_REAL_ADC_INPUT = 0U、即使用模拟输入)。

    您是否看到与我相同的行为?

    如果您这样做、我们可以继续。 代码(dsp_rfft_adc_windowed.c)记录了如何使用第35行的 MATLAB 生成输入。 MATLAB 脚本位于:

    C:\ti\c2000Ware_2_00_00_02\libraries\dsp\FPU\c28\references\MATLAB

    请参阅此处、了解在此处的操作方式与您的操作方式之间是否存在差异。

    谢谢、

    Sira

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

    尊敬的 Sira:

    非常感谢您的快速响应。 也许我找到了这个示例幅度结果不符合我预期的原因。

    我首先使用了'2837x_RFFT_ADC_RT'示例、并使用函数发生器通过 ADC 输入(引脚9)而非 epwm2方波注入正弦波、并尝试在缓冲器中检查结果、同时我还使用 Matlab 计算相同的正弦波 FFT 结果。 然后、我发现 Matlab FFT 与  计算出的函数 RFFT_ADC_F32和 RFFT_F32_MAG 函数之间的 FFT 幅度结果不同。

    然后、我尝试了示例 2837x_RFFT_ADC。  参考 MATLAB 文件 RfftAdcforC28x.m 具有说明"数据由 MATLAB fscanf 函数读取、并通过除以4096将数据标准化为0.0至0.1的范围。"

    我回到示例 2837x_RFFT_ADC_RT 并使用 正弦波作为输入信号、我还在 Matlab 中模拟了正弦波的标准化步骤。 Matlab 和 DSP 的幅度非常接近。

    我不理解函数 RFFT_ADC_F32的 asm 文档。 但它可能会考虑信号的标准化?

    我使用了 F28379D 控制卡、我也按照您的建议尝试了项目、当  USE_TEST_INPUT=1 时、通过计数与您的结果不同(我的通过结果= 769)。  

    希望我的描述足够清楚、让您了解我一直在尝试做什么。

    此致、

    Karen