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/TMS320F2.8377万D:ADC信号的RFFT中的TMS320F2.8377万D/DC偏移

Guru**** 2524460 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/659355/ccs-tms320f28377d-tms320f28377d-dc-offsset-in-rfft-of-adc-signal

部件号:TMS320F2.8377万D
主题中讨论的其他部件:controlSUITE

工具/软件:Code Composer Studio

我正在使用 具有TMS320F2.8377万D的controlSUITE中的示例代码2837x_RFFT_ADC。  ADC配置为在2.56万 采样/秒下工作,ADC结果被输入到RFFTin1Buff中,以计算微控制器F2.8377万D中的频谱。  RFFT_stages设置为12 (即FFT长度=4096)。

我使用函数发生器来创建一个正弦8kHz。  结果似乎不正确我有一些问题需要 帮助。

1-第一个问题是DC偏移太高,如图所示(我使用“工具”>“图表”>“单个时间”来显示RFFTmagBuff中存储的FFT计算结果)。 我使用IIR滤波器移除了直流偏移。

通过使用CCS计算FFT (工具>图表>FFT幅度)来比较结果

2——第二 个问题 是如何转换结果FFT幅度的单位,图形中的y轴,  

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

    您好,Thanh,

    我有几个问题

    1.您使用的是哪个版本的FPU库?

    2.库中包含的RFFT表最多只支持1024点的Real FFT。 您是否在运行时生成twiddle因子表? 12个阶段?

    3.第一个图是否显示RFFTin1Buff? 由于您运行的是4096点FFT,因此它应该只有4096个条目。

    1-第一个问题是DC偏移太高,如图所示(我使用“工具”>“图形”>“单个时间”显示RFFTmagBuff中存储的FFT计算结果)。 我使用IIR过滤器删除DC偏移。[/QUOT]

    直流电的范围很小,因为采样频率不是正弦频率的整数倍数,即25.6K/8K =  3.2。对于每4096个样本,要相互取消的正负值数量不能相等。 但你不应该看到你现在看到的巨大峰值-这只是告诉我算法不起作用。  

    RFFT的输出顺序稍有不同,RFFT只计算一半频谱(实际输入具有共轭对称频谱,因此您只需要一半),即从F(0)到F(N/2),按以下方式排列

    RE[0],RE[1].... RE[N/2-1],RE[N/2],im[N/2-1],im[N/2-2-2-2],im[N/2-2-2]..... IM[1]

    容器re[0]和re[N/2]仅为实数。 因此,查看原始质谱将不会有用,您必须查看数量级质谱。

    [引用user="Thanh Nguyen ]2--第二 个问题 是如何转换结果FFT幅度的单位,图形中的y轴, [/QUOT]

    您应该会在N*(f_m/f_s)纸盒中看到一个峰值,即4096*(8k/25.6k)=1280纸盒1280纸盒。 您是否可以尝试1024点RFFT并查看您是否获得了正确的结果,即在1024*(8k/25.6k)=第320个bin和小DC偏移量中应看到一个峰值

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

    您好 ,Vishal,

    非常感谢您的帮助!

    1:我使用你 维沙尔·科埃略提供的图书馆

    //$TI发行版:C28x浮点库1.50 单元,00.00 $

    //$发布日期:2015年6月2日$

    2: 实际上,我没有检查 RFFT表。 但我尝试了案例 RFFT_STENCE=10,但FFT结果仍有DC偏移。下图是 案例 RFFT_STENCE=10

    3:  显示RFFTin1Buff 的第一个图形有2049点,这里是 RFFT_stages =124096点FFT的结果,结果存储在RFFToutBuff[4096]中,第一个2048值是真实的部分,最后 2048值是IMAGI部分  

    我使用 “工具”>“图形”>“单个时间”来显示RFFTmagBuff,配置如下所示

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只是好奇如果我们使用1024点FFT,您是否可以尝试以24K采样。 24K是8K正弦输入的整数倍数,因此您应该可以在170.67~171纸盒(有些泄漏到170)看到非常小(接近0)的直流偏移和非常干净的幅度频谱峰值。 我们可以验证算法没有任何错误。

    此外,DC槽只是采样帧的平均值。 因此,如果运行1024点FFT,则为所有1024点的平均值。 对正弦波进行采样后,您是否可以绘制它的图形,然后对值求和并除以1024,它应该与DC bin值匹配。

    此外,如何处理ADC输入,即12位输出。 我想在这个例子中,我对一个纯正信号- PWM -进行采样,所以我的值将是0对应0 V,4095对应3.3V。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,Vishal

    最后我发现了问题。
    1-在代码示例中,ADC输入是无符号整数,因此DC存在(偏移值=(最大值-最小值)/2)
    2-要删除DC偏移,我使用带ADC输入的IIR过滤器,过滤器的输出是浮点的,因此我们必须将FFT的输入更改为浮点,并将FFT结构从RFFT_ADC_F32_structure更改为RFFT_F32_structure

    感谢您的帮助,
    希望我的问题能够帮助他人,
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,先生,

    经过大量更正后,我得到了FFT结果。

    与FFT幅度工具相比,它非常相似。 但是,您能否解释一下,为什么 在CCS工具计算的FFT幅度峰值振幅中,它似乎会被大量浸漏到相邻频率中。  CCS计算的峰值振幅 高于FFT代码1

    我使用矩形窗口,FFT状态= 12

    这是Result成为CCS工具

    这是我的代码的结果

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

    我很高兴您能成功。

    您是如何设置FFT幅度图的。 您是否可以发布屏幕截图
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    给Vishal先生,

    非常感谢您的快速回复。  

    我使用矩形窗口,FFT状态= 12