用TI提供的DSP库,在CCS3.1下用开发板已经调试出1024点的FFT,看到的频谱与预期的一致,
下面是基本过程:
#include "fft.h"
#define FFT_N 1024
#pragma DATA_SECTION(ipcb, "FFTipcb");
#pragma DATA_SECTION(mag, "FFTmag");
RFFT32 fft=RFFT32_1024P_DEFAULTS;
long ipcb[FFT_N+2];
long mag[FFT_N/2+1];
unsigned int fftdata_count,fftcalc_flag;
const long win[FFT_N/2]=HAMMING1024;
设置好EVA触发AD采样,在ADC采样中断中填充数据:(如果没有左移16位,数值太小,计算结果=0)
ipcb[i]=((unsigned long)(AdcRegs.RESULT0>>4))<<16;
采集够1024点后
RFFT32_brev(ipcb,ipcb,FFT_N);
fft.win(&fft);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);
mag中就是各个频率的幅值了。
我现在想分析10KHz的信号,采样频率是25K,那么频率分辨只有25K/1024=24.4Hz
想提高分辨率,该怎么办,谁有2048点的FFT算法? |