fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);
for(;;)
{
for(i = 0;i < N;i++)
{
ipcb[i]=0.7*sin(PI*2*i*Fn/Fs)*2147483648;
}
fftflag=1;
fft_subroutine(); //KickDog();
}
}
void fft_subroutine()
{
int i;
mag_temp = 0;
if (fftflag==1) // If the samples are acquired
{
RFFT32_brev(ipcb,ipcb,N);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);
for(i=0;i<(N/2+1);i++)
{
if(mag[i] > mag_temp)
{
mag_temp = mag[i];
freq = i;
}
else
{
;
}
}
max_mag = 2*(float)sqrt(mag_temp)/sqrt(1073741824);
freq =(float) Fs/N*freq+0.0;
fftflag=0; // Enable the next acquisition
}
}采样点数N为512 不变,FS为采样频率,Fn是被采频率,对于同一幅值,FS和Fn改变时,有的时候算的准 有点时候误差好大。。。 |