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