我目前正在尝试使用Pi提供的GPU_FFT库进行FFT。我成功地对数据进行了FFT。但是,每当我在while(1)循环中尝试这个时,它会以某种方式进行FFT 1023次并在第1024次停止。我已经读到过面对exact same issue on Raspberry Pi official forum的人,但无法弄清楚如何修复我的。
以下代码是计算FFT的函数
void computeFFT(float *Input,float *Output){
struct GPU_FFT_COMPLEX *base;
struct GPU_FFT *fft;
int i;
int ret = gpu_fft_prepare(mb,log2_N,GPU_FFT_FWD,1,&fft);
base = fft->in;
for(i=0;i<N;i++)
base[i].re = Input[i]; base[i].im =0.0;
gpu_fft_execute(fft);
base = fft->out;
for(i=0;i<N;i++)
Output[i]= base[i].re;
gpu_fft_release(fft);
}
这是我的while(1)循环
while (1){
if (mb != 0)
mb = mbox_open();
adc1Value = a2d(adc1Channel);
voltage1 = ((2.5/4096) * adc1Value);
QueueGet(Queue);
QueuePut(voltage1);
OutData = computeFFT(Queue,OutData);
printf("%f\n",OutData[0]); // Printing out signal value on 0Hz
}
mbox_close(mb);
free(OutData);
return 0;
我确实认为问题与我使用mbox_open和关闭函数的位置有关。
我尝试过的事情
然而,没有一个是解决方案。