TI中文支持网
TI专业的中文技术问题搜集分享网站

关于controsuite中的例程fft_adc计算结果出错的问题

如题,使用controsuite中的v1_50_00_00中的rfft_adc例程,读出RFFTin1Buff中的数据用matlab分析得到的结果和计算后的RFFTmagBuff结果非常不一致,求问大家有没有遇到过这种问题以及怎么解决的,谢谢。下面是分析结果的对比,上面一张是RFFTin1Buff中的数据用matlab做的fft,下面一张是例程中的fft结果。

Susan Yang:请问您是使用的哪款芯片?直接使用TI例程进行测试的?是否有进行修改?

如题,使用controsuite中的v1_50_00_00中的rfft_adc例程,读出RFFTin1Buff中的数据用matlab分析得到的结果和计算后的RFFTmagBuff结果非常不一致,求问大家有没有遇到过这种问题以及怎么解决的,谢谢。下面是分析结果的对比,上面一张是RFFTin1Buff中的数据用matlab做的fft,下面一张是例程中的fft结果。

mangui zhang:不好断定哪个是正确的如果采集的是直流的话下图是正确的
matlab需要分析程序不确定是否正确

如题,使用controsuite中的v1_50_00_00中的rfft_adc例程,读出RFFTin1Buff中的数据用matlab分析得到的结果和计算后的RFFTmagBuff结果非常不一致,求问大家有没有遇到过这种问题以及怎么解决的,谢谢。下面是分析结果的对比,上面一张是RFFTin1Buff中的数据用matlab做的fft,下面一张是例程中的fft结果。

user5739360:

回复 Susan Yang:

您好,我使用的是·28377d芯片,照搬controsuite中的fpu里面的v1_50_00_00里面的rfft_adc例程,关键是把RFFTin1Buff中的数据放在matlab中计算完全正确,用例程中的fft计算完的结果就不对了上图是RFFTmagBuff中的数据,为什么在0频附近的能量远大于其它点?我的fft配置和使用代码如下,您觉得有没有问题呢?谢谢
hnd_rfft_adc->Tail = &(hnd_rfft->OutBuf);
hnd_rfft->FFTSize = RFFT_SIZE; //FFT size
hnd_rfft->FFTStages = RFFT_STAGES; //FFT stages
hnd_rfft_adc->InBuf = &RFFTin1Buff[0]; //Input buffer (12-bit ADC) input
hnd_rfft->OutBuf = &RFFToutBuff[0]; //Output buffer
hnd_rfft->CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor
hnd_rfft->MagBuf = &RFFTmagBuff[0]; //Magnitude output buffer

RFFT_f32_sincostable(hnd_rfft); //Calculate twiddle factor
RFFT_adc_f32(hnd_rfft_adc); // Calculate real FFT with 16-bit
RFFT_f32_mag(hnd_rfft); //Calculate magnitude

如题,使用controsuite中的v1_50_00_00中的rfft_adc例程,读出RFFTin1Buff中的数据用matlab分析得到的结果和计算后的RFFTmagBuff结果非常不一致,求问大家有没有遇到过这种问题以及怎么解决的,谢谢。下面是分析结果的对比,上面一张是RFFTin1Buff中的数据用matlab做的fft,下面一张是例程中的fft结果。

user5739360:

回复 mangui zhang:

您看看我下面回复的fft代码配置和使用有问题吗?
hnd_rfft_adc->Tail = &(hnd_rfft->OutBuf);
hnd_rfft->FFTSize = RFFT_SIZE; //FFT size
hnd_rfft->FFTStages = RFFT_STAGES; //FFT stages
hnd_rfft_adc->InBuf = &RFFTin1Buff[0]; //Input buffer (12-bit ADC) input
hnd_rfft->OutBuf = &RFFToutBuff[0]; //Output buffer
hnd_rfft->CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor
hnd_rfft->MagBuf = &RFFTmagBuff[0]; //Magnitude output buffer

RFFT_f32_sincostable(hnd_rfft); //Calculate twiddle factor
RFFT_adc_f32(hnd_rfft_adc); // Calculate real FFT with 16-bit
RFFT_f32_mag(hnd_rfft); //Calculate magnitude
还有,我用matlab分析的是RFFTin1Buff中的数据,而dsp正是用这个数据来计算fft的,可是得到的却是rfftmagbuff中的数据,也就是下图。
谢谢您。

如题,使用controsuite中的v1_50_00_00中的rfft_adc例程,读出RFFTin1Buff中的数据用matlab分析得到的结果和计算后的RFFTmagBuff结果非常不一致,求问大家有没有遇到过这种问题以及怎么解决的,谢谢。下面是分析结果的对比,上面一张是RFFTin1Buff中的数据用matlab做的fft,下面一张是例程中的fft结果。

user5739360:

回复 mangui zhang:

我采集的数据是存在rfftinbuff中的,按道理应该得到图一的结果,不知道为什么计算出来不对,我中间没有其它的步骤

赞(0)
未经允许不得转载:TI中文支持网 » 关于controsuite中的例程fft_adc计算结果出错的问题
分享到: 更多 (0)