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.

[参考译文] TMS320F2800132:TMS320F2800132:使用F280039和F2800132计算CFFT、其输出结果差异较大

Guru**** 2439560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1488166/tms320f2800132-tms320f2800132-f280039-f2800132-cfft

器件型号:TMS320F2800132

工具与软件:

F280039和F2800132使用相同的库和同一组ADC采样数据计算fft、得到结果差异过大、不知道是什么原因造成的呢?μ A

fft配置如下:μ A

1 μ、初始化 A

CFFT_F32_setInputPtr (HND_CFFT、AFCIDataBuffer);
CFFT_F32_setOutputPtr (HND_CFFT、FFTBuffer);
CFFT_F32_setTwidlesPtr (HND_CFFT、CFFT_F32_twiddleFactors);
CFFT_F32_setStages (HND_CFFT、(FFT_STAGEs - 1U));
CFFT_F32_setFFTSize (HND_CFFT、(FFT_SIZE >> 1);

2 μ、计算FFT A

float * p_temp;
内部 ii;

对于(ii = 0;ii < 512;ii++)

AFCIDataBuffer[ii ]=(float) fftWindow[ii ]* PADC_DATA[ii ];
}
对于(ii = 512;ii < 1024;ii++)

AFCIDataBuffer[i]=(float) fftWindow[(1024 - 1)-ii]*PADC_DATA[ii);
}

//运行 N/2点复数 FFT
//注:只能将 CFFT 的't'版本与配合使用
//打包并解压缩函数
CFFT_f32t (HND_CFFT);//计算 FFT

//对 N/2点复数谱运行解压缩函数
//获取 N 点实数的 N/2+1点复数频谱
//数据。 解压缩函数将生成该复数
//从 F (0)到 F (N/2)的频谱。
//指针 p_currOutput 指向复数频谱
//实际的 N 点输入数据。
CFFT_F32_UNPACK (HND_CFFT);

//
//切换 CurrentInPtr 和 CurrentOutPtr 指针
//
//此处检查缓冲区"TEST_OUTPUT"以获取 FFT 结果
P_temp = CFFT_F32_getCurrent InputPtr (HND_CFFT);
CFFT_F32_setCurrentInputPtr (HND_CFFT、CFFT_F32_getCurrent OutputPtr (HND_CFFT));
CFFT_F32_setCurrentOutputPtr (HND_CFFT、p_temp);

//运行 Magnitude 函数
//计算幅度、结果存储在 CurrentOutPtr 中
CFFT_F32_MAG_TMU0 (HND_CFFT);

fft输出结果如图 μ A