fft128c.c
上传用户:xxthzd
上传日期:2013-07-18
资源大小:24k
文件大小:2k
源码类别:

DSP编程

开发平台:

C++ Builder

  1. /* ==============================================================================
  2. System Name:    Real FFT - Software Test Bench (STB)
  3. File Name:      FFTRD.C
  4. Description:    Primary System file for demonstrating the Real FFT module
  5. Originator:     Advanced Embeeded Control (AEC) - Texas Instruments
  6. Target dependency:  x28x
  7. Description:
  8. ============
  9. */
  10. #include "DSP281x_Device.h"
  11. #include "fft.h"
  12. #include "const.h"
  13. #define N_FFT     8
  14. /* Create an Instance of FFT module                 */
  15. #define     N   128
  16. #pragma DATA_SECTION(ipcb, "FFTipcb");
  17. #pragma DATA_SECTION(mag, "FFTmag");
  18. CFFT32  fft=CFFT32_128P_DEFAULTS;
  19. long ipcb[N_FFT][2*N];
  20. long mag[N_FFT][N];
  21. /* Define window Co-efficient Array  and place the
  22. .constant section in ROM memory */
  23. const long win[N/2]=HAMMING128;
  24. Uint16 fftflag=0;   //FFT转换启动标志:0不启动;1:启动
  25. extern Uint16 SampleTable[N_SAMPLE+1][N_ANALOG];
  26. void fft_data()
  27. {
  28.     Uint16 i,j;
  29.     if (fftflag==0)
  30.     {
  31.        for (i=0;i<N_FFT;i++)
  32.            for (j=0;j<N;j++)
  33.            {
  34.                ipcb[i][2*j]=((unsigned long)SampleTable[j][2*i])<<16;
  35.            }
  36.        fftflag=1;
  37.     }
  38. }
  39. void fft_subroutine()
  40. {
  41.     Uint16 i;
  42.     if (fftflag==1)     // If the samples are acquired
  43.     {
  44.        for (i=0;i<N_FFT;i++)
  45.        {
  46.    /* Initialize FFT module                            */
  47.            fft.ipcbptr=&ipcb[i][0];
  48.            fft.magptr=&mag[i][0];
  49.            fft.winptr=(long *)win;
  50.            fft.init(&fft);
  51.                {
  52. CFFT32_brev2(&ipcb[i][0],&ipcb[i][0],N);
  53. // CFFT32_brev2(&ipcb[i][0],&ipcb[i][0],N);  // Input samples in Real Part
  54. /* fft.win(&fft);
  55. CFFT32_brev2(ipcb,ipcb,N);
  56. CFFT32_brev2(ipcb,ipcb,N);  // Input after windowing
  57.    */
  58.                    fft.izero(&fft);
  59.                    fft.calc(&fft);
  60.                    fft.mag(&fft);
  61.                }
  62.        }
  63.                    fftflag=0;      // Enable the next acquisition
  64.           GpioDataRegs.GPATOGGLE.bit.GPIOA15=1;
  65.     }
  66. }