我们一直在 TMS320F28377 DSP 上开发 TI 的 FPU 库"C28x_FPU_DSP_library"。
我们使用了以下函数:
1) CFFT_F32
2) CFFT_F32_MAG_TMU0
3) ICFFT_F32
我们已经在9个阶段、即512点 FFT 中使用了"CFFT_F32"函数。
如该库的文档中所述、我们提供了如下内存分配和对齐方式。
CfftmagBuff :>RAMGS5, PAGE = 1
CfftF32Coef :> RAMGS5, PAGE = 1
Cfftin1Buff :>RAMGS5, PAGE = 1,ALIGN = 2048
CfftoutBuff :>RAMGS5, PAGE = 1,ALIGN = 2048
我们在使用上述函数时都采用了相同的执行顺序。
首先、我们使用"CFFT_F32"执行正向 FFT、然后使用"CFFT_F32_MAG_TMU0"根据它计算幅度。
之后、我们根据我们的要求操纵"ICFFT_F32"的输入缓冲器、并使用"ICFFT_F32"对该缓冲器执行逆向 FFT。
我们面临的问题有时是在1个周期(FFT 输入)间隔内随机出现、上述操作结束时获得的输出会失真(零)。
该中断仅在1个周期间隔内保持。
如上所示、它是在"ICFFT_F32"之后获得的输出。 它保持为零的持续时间为20ms (FFT 的1个输入周期)。