Iam using ADSP BF-548 processor in my project,i need to acquire data from ADC and i need to perform real point FFT to the sample acquired,my sampling rate is 8200SPS and FFT interval is 500msec,i need to perform 4096 point FFT,when i feed 1khz with 1Vpp i am getting magnitude as approx 0.43volt,but when i give 999hz or 1001hz with 1Vpp iam getting approx 0.53volt as magnitude, same thing is happening for 1.25khz and 1.5khz.
Here FftSample array holds the voltage value read from the ADC.the voltage range is 0-7Vpp,0-4KHZ so Scaling factor i choosed as 0.2857 i.e(1/3.5).
i.e FftSample[index]=(voltage value * scaling factor)
My FFT Computation steps as follows.
gen_hamming_fr16 (hamming_window, 1, FFT_Cnt);
twidfftrad2_fr16 (twiddle_table, FFT_Cnt);
for (Count = 0; Count < FFT_Cnt; Count++)
windowed_signal[Count] = mult_fr1x16 (float_to_fr16 (FftSample[Count]), hamming_window[Count]);
rfft_fr16 (windowed_signal, fft_output, twiddle_table,1, FFT_Cnt, &block_exponent, 1);
My questions are.
1. what will be the Peak value of FFT if i give 1Vpp? whether it is one-fourth or one-half of Vpp?
2. The array "real_magnitude" have 2048 FFT points after using FFT_Magnitude function how to convert from Hex values to voltage value?
I observed the ADC sample values at 999hz and 1Khz both look similar, what might be the reason for dropping of FFT magnitude at certain Frequency?
Kindly gothrough the steps and suggest if any calculation to be done.