We have been working on TI's FPU library "c28x_fpu_dsp_library" on TMS320F28377 dsp.
We have used following functions:
1) CFFT_f32
2) CFFT_f32_mag_TMU0
3) ICFFT_f32
We have used "CFFT_f32" function with 9 stages i.e. 512 point fft.
As mentioned in document of this library, we have provided memory allocation and alignment as follows.
cfftmagBuff : > RAMGS5, PAGE = 1
cfftF32Coef : > RAMGS5, PAGE = 1
cfftin1Buff : > RAMGS5, PAGE = 1, ALIGN = 2048
cfftoutBuff : > RAMGS5, PAGE = 1, ALIGN = 2048
We have used above mentioned functions in such a way that all three are executed in same order.
First, we perform forward fft using "CFFT_f32",then we calculate magnitude from it using "CFFT_f32_mag_TMU0".
After that we manipulate the input buffer for "ICFFT_f32" as per our requirement and we perform inverse FFT on that buffer using "ICFFT_f32".
The issue we are facing is sometimes randomly for 1 cycle(of FFT input) interval, the output obtained at end of above mentioned operation get distorted (zero).
That distirtion remains for 1 cycle interval only.
As shown in above, it is output obtained after "ICFFT_f32". The time duration for which it remains zero is 20msec(1 input cycle of fft).