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.

[参考译文] TMS320F28335:FFT 在 TMS320F28335的示例程序中产生的单元不正确

Guru**** 2394305 points
Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/845292/tms320f28335-fft-results-in-bins-not-correct-in-example-program-on-tms320f28335

器件型号:TMS320F28335

尝试使用 controlSUIT for TMS320F28335的示例程序在0至3 V、50Hz 交流信号的直流上执行 FFT。 结果显示 RFFTmagBuf 不正确。请建议问题出在哪。 条件如下:

修改了在 AdcBuffer 中收集的示例程序和 ADC 样本2个周期(40毫秒)。 样本数= 512..please 请参见 ttt支队

调试未进入 Twiddle 因子函数时。 添加了** sincobstable .c 文件,然后它进入函数。

调试未进入时   

RFFT_ADC_f32u (&rfft_ADC);//此版本的 FFT 不需要缓冲区对齐
RFFT_F32_MAG (&rfft);

添加 了 RFFT_ADC_f32u.asm 文件。 然后、它会发出警告"值超出范围"

结果显示 RFFTmagBuf[0]中的值较高。  

请帮助我了解结果和警告。 e2e.ti.com/.../Screen-view-CCS-edit.docx

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

    Manish、

    FFT size = 512,示例项目中的采样频率= 48kHz,因此频谱分辨率= 48kHz/2/512 = 46.875Hz

    因此可能会落入 BIN [2]中。 输入具有直流偏移、因此二进制[0]具有直流峰值。

    您还可以尝试使用接近46.875Hz 的输入频率来查看 FFT bin 是否转向[1]。

    不确定"值超出范围"警告的内容。 您是如何偶然发现这种情况的?

    谢谢、

    Sira

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

    感谢您的回答。

    1) FFT Size = 512、采样频率= 48kHz、因此频谱分辨率= 48kHz/2/512 = 46.875Hz

    因此可能会落入 BIN [2]中。

    >是否应将采样频率更改为51.20kHz 以使其成为50Hz?

    2)输入具有直流偏移、因此二进制[0]具有直流峰值。

    >是否可以在处理前通过减去直流偏移来去除偏移?

    3)您还可以尝试使用接近46.875Hz 的输入频率来查看 FFT bin 是否转向[1]。

    >确定将尝试此操作并让您了解结果。

    4)不确定"值超出范围"警告的内容。 您是如何偶然发现这种情况的?

    >包含了 RFFT_ADC_f32u.asm 文件、而单步执行时我发现了该文件。

    再次感谢您的支持。 我将在执行更改后返回。

    Regads

    Manish

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

    1.更改 ADC 输入以匹配二进制频率可能更容易,即使 ADC 输入为46.875Hz。

    2.是的、如果您不希望 FFT 具有直流分量、则可以这样做。

    3、与1相同。

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

    。 尊敬的 Sira:

    感谢您的支持。

    1)更改 ADC 输入以匹配二进制频率可能更容易、即使 ADC 输入为46.875Hz。

    >我的输入信号为50Hz,我想对其执行 FFT,因此我更正了我的代码。

    我在纸槽[0]中得到了 DC 组件,这是正确的。

    此外、我在 Bin [1]处获得峰值、这也是正确的。

    我正在使用三相电压源逆变器。 请分享您关于 PI 控制器和 PLL 锁定电源的建议。

    谢谢 Sira。   

    此致

    Manish  

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

    Manish、

    很高兴听到这个消息。 如果您的问题得到解决、请在我的回复中标记"已解决"。

    此外、我们希望避免在同一主题中讨论多个主题、那么您能否在 PI、PLL 相关主题上单独发布一个问题? 通过这种方式、他们还将联系到能够为您提供最佳帮助的专家。

    谢谢、

    Sira

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

    尊敬的 Sira:

    根据我的理解、附上我所做的事情。我得到的结果是正确的。 如果我错了、请更正。

    1) 1)输入信号为50Hz AC、带直流转换。

    2) 2) 20毫秒内采集512个样本。

    现在、我将使用其他频率对其进行测试。 如果出现任何问题、我将创建 新帖子。

    此致

    Manish.e2e.ti.com/.../CCS--screen.docx 

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

    Manish、

    您的文件中  

    ADC_SAMPLE_PERIOD 2930

    F_PER_SAMPLE 25600.0L/RFFT_SIZE

    这两者似乎彼此不一致。 原始示例具有  

    ADC_SAMPLE_PERIOD 3124

    F_PER_SAMPLE 48000.0L/RFFT_SIZE

    关系本质上是150x10^6/48000 = 3125、而150x10^6/25600= 5859.375。 因此、您的 ADC_SAMPLE_PERIOD 应为5858。

    但是、话虽如此、我看不到在项目中使用 ADC_SAMPLE_PERIOD 的位置。 我想知道它是否未被使用。 我没有仔细检查、但一个快速测试是恢复到原始设置、然后将 ADC_SAMPLE_PERIOD 更改为0、以查看这是否会影响性能。

    谢谢、

    Sira

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

    Manish、

    更新? 您是否遵循了我的建议?

    谢谢、

    Sira

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

    您好,Sira,

    是的,我听从了你的建议。 频率51200Hz 用于在50Hz 周期内对512个样本进行采样。

    根据 软件生成的正弦波检查结果、并根据输入找到结果。

    感谢您的支持。

    Manish。