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.
工具/软件: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