• TMS320F28335调用官方库进行FFT频谱分析


    移植

    首先进入TI官网下载软件支持包,我们需要的FFT官方包就在这里边。

    TMS320F28335 data sheet, product information and support | TI.com

    下载完成后,解压。进入以下目录

    C2000Ware_4_01_00_00_Software__all\C2000Ware_4_01_00_00\libraries\dsp\FPU\c28

    里面只需要Include、source文件夹的内容,lib文件夹不需要,新版本库一律被集成到了rts2800 fpu32.ib这个库里面了。

    Include:复制到你的工程中备用,将里面fpu64文件夹删除,fpu32文件夹里的除了f2837xd_filter文件夹全整理出来到include文件夹中。整理完如下:

    source:同样复制到你的工程目录即可,删除里面的C28x_FPU_LIB_DEPRECATED文件夹和fpu64文件夹,并把fpu32文件夹内容整理出来。整理完如下

    并且把fft文件夹里面带有TMU0后缀的汇编源码全部删除了

    此时的你的CCS工程应该有如下文件树:

     

    打开工程设置将头文件路径添加进去

    因为只用到实傅里叶变化和实时计算旋转因子表,可以将fft文件夹中的cfft和table都删除了,此时fft文件夹应只有有如下源码文件

    到这一步,官方的FFT源码移植完成了。

    测试

    测试可以直接使用官方的测试数据和代码进行测试,在下载软件包C2000Ware_4_01_00_00\libraries\dsp\FPU\c28\examples\fft\rfft_adc_f32 目录中可以找到

    其中的dsp_rfft_adc.c 、golden.c、input.c 为测试FFT计算程序、正确数据、输入数据。

    大致流程为输入的数据经过FFT计算后与正确数据进行比对。

    在这里我提供一套我自己编写的测试程序。

    以下是我编写的FFT相关参数,12位ADC、1000Hz采样频率、1024采样点,输入信号如下图:

     

     RFFT.h

    1. /*
    2. * RFFT.h
    3. *
    4. * Created on: 2022年11月2日
    5. * Author: Administrator
    6. */
    7. #ifndef APP_RFFT_H_
    8. #define APP_RFFT_H_
    9. #include "DSP28x_Project.h"
    10. #include
    11. #include
    12. #define RFFT_Analyse_MaxNum 20
    13. typedef struct {
    14. Uint16 Wave_Num;
    15. float DC_Amp;
    16. float Amp[RFFT_Analyse_MaxNum];
    17. float freq[RFFT_Analyse_MaxNum];
    18. float Phase[RFFT_Analyse_MaxNum];
    19. } RFFT_Analyse_Struct;
    20. void RFFT_ADC_Init();
    21. void RFFT_ADC_Caculate();
    22. float RFFT_Fractional_Frequency(float ratio);
    23. void RFFT_Analyse(float *src);
    24. float RFFT_Phase_Caculate(Uint16 index,float ratio);
    25. Uint16 RFFT_Peak_Find(float *src ,Uint16 len,Uint16 *index); //幅度谱及其长度
    26. #endif /* APP_RFFT_H_ */

    RFFT.c

    1. /*
    2. * RFFT.c
    3. *
    4. * Created on: 2022年11月2日
    5. * Author: Administrator
    6. */
    7. #include "dsp.h"
    8. #include "fpu_rfft.h"
    9. #include "RFFT.h"
    10. #include
    11. #include "complex.h"
    12. #define Fs 1000
    13. #define FFT_STAGES (10U) //迭代次数 =Log2(FFT_SIZE)
    14. #define FFT_SIZE (1 << FFT_STAGES) //FFT计算点数
    15. RFFT_F32_STRUCT rfft;
    16. RFFT_ADC_F32_STRUCT rfft_adc;
    17. RFFT_F32_STRUCT_Handle hnd_rfft = &rfft;
    18. RFFT_ADC_F32_STRUCT_Handle hnd_rfft_adc = &rfft_adc;
    19. RFFT_Analyse_Struct rfft_analyse;
    20. //#pragma DATA_SECTION(FFT_input, "FFT_buffer");
    21. #pragma DATA_SECTION(FFT_output, "FFT_buffer1");
    22. #pragma DATA_SECTION(FFT_twiddleFactors, "FFT_buffer2");
    23. #pragma DATA_SECTION(FFT_magnitude_phase, "FFT_buffer3");
    24. //uint16_t FFT_input[FFT_SIZE];
    25. extern uint16_t FFT_input[2U*FFT_SIZE];
    26. float FFT_twiddleFactors[FFT_SIZE];
    27. float FFT_output[FFT_SIZE];
    28. float FFT_magnitude_phase[(FFT_SIZE >> 1) + 1];
    29. #define MAX(a, b) (((a) > (b)) ? (a) : (b))
    30. #define MIN(a, b) (((a) < (b)) ? (a) : (b))
    31. float myabs;
    32. void RFFT_ADC_Init()
    33. {
    34. RFFT_f32_setInputPtr(hnd_rfft, (float *)FFT_input);
    35. RFFT_f32_setOutputPtr(hnd_rfft, FFT_output);
    36. RFFT_f32_setStages(hnd_rfft, FFT_STAGES);
    37. RFFT_f32_setFFTSize(hnd_rfft, FFT_SIZE);
    38. RFFT_f32_setMagnitudePtr(hnd_rfft, FFT_magnitude_phase);
    39. RFFT_f32_setPhasePtr(hnd_rfft, FFT_magnitude_phase);
    40. RFFT_f32_setTwiddlesPtr(hnd_rfft, FFT_twiddleFactors);
    41. RFFT_f32_sincostable(hnd_rfft);
    42. RFFT_ADC_f32_setTailPtr(hnd_rfft_adc, &(hnd_rfft->OutBuf));
    43. RFFT_ADC_f32_setInBufPtr(hnd_rfft_adc, FFT_input);
    44. }
    45. void RFFT_ADC_Caculate()
    46. {
    47. float* temp;
    48. RFFT_adc_f32(hnd_rfft_adc);
    49. RFFT_f32_mag(hnd_rfft);
    50. temp=RFFT_f32_getMagnitudePtr(hnd_rfft);
    51. RFFT_Analyse(temp);
    52. }
    53. float RFFT_Phase_Caculate(Uint16 index,float ratio)
    54. {
    55. complex p;
    56. complex FFT_value;
    57. p=(1-cexpf((2*M_PI*ratio/FFT_SIZE)*I));
    58. p=p/ (1-cexpf((2*M_PI*ratio)*I));
    59. FFT_value=FFT_output[index]+FFT_output[FFT_SIZE-index]*I;
    60. p=FFT_value*p;
    61. return (cargf(p)+M_PI/2);
    62. }
    63. Uint16 RFFT_Peak_Find(float *src ,Uint16 len,Uint16 *index) //幅度谱及其长度
    64. {
    65. Uint16 num=0;
    66. Uint16 i;
    67. float max_data=0;
    68. float data1=0;
    69. float data2=0;
    70. float data3=0;
    71. for (i=1;i
    72. {
    73. if(*(src+i)>max_data)
    74. max_data=*(src+i);
    75. }
    76. for (i=1;i-1;i++)
    77. {
    78. data1=*(src+i-1);
    79. data2=*(src+i);
    80. data3=*(src+i+1);
    81. if((data1data3) && (data2 >max_data*0.1))
    82. {
    83. if(num<20)
    84. {
    85. *(index+num)=i;
    86. num++;
    87. }
    88. else
    89. return num;
    90. }
    91. }
    92. return num;
    93. }
    94. float RFFT_Fractional_Frequency(float ratio)
    95. {
    96. Uint16 niter;
    97. float K,f,a,b,y,yp;
    98. f=0;
    99. K=(M_PI/FFT_SIZE) * sin(M_PI/FFT_SIZE);
    100. for(niter=0;niter<20;niter++)
    101. {
    102. a = sin(M_PI*f/FFT_SIZE);
    103. b = sin(M_PI*(f-1)/FFT_SIZE);
    104. y = ratio - a/b;
    105. yp = K / (b*b);
    106. f = MAX(-0.5, MIN(f - y/yp, 0.5));
    107. }
    108. return f;
    109. }
    110. void RFFT_Analyse(float *src)
    111. {
    112. Uint16 i;
    113. float ratio;
    114. float FFT_Value;
    115. Uint16 peak_index[RFFT_Analyse_MaxNum];
    116. memset(peak_index, 0U, RFFT_Analyse_MaxNum*sizeof(Uint16));
    117. memset(rfft_analyse.freq, 0U, RFFT_Analyse_MaxNum*sizeof(float));
    118. memset(rfft_analyse.Amp, 0U, RFFT_Analyse_MaxNum*sizeof(float));
    119. memset(rfft_analyse.Phase, 0U, RFFT_Analyse_MaxNum*sizeof(float));
    120. rfft_analyse.Wave_Num=RFFT_Peak_Find(src,FFT_SIZE/2,peak_index);
    121. for(i=0;i
    122. {
    123. FFT_Value=*(src+peak_index[i]);
    124. ratio = (*(src+peak_index[i]+1))/FFT_Value;
    125. if ((*(src+peak_index[i]+1)) > (*(src+peak_index[i]-1)))
    126. ratio = -ratio;
    127. ratio = RFFT_Fractional_Frequency(ratio);
    128. rfft_analyse.freq[i] = (*(peak_index+i)-1+ratio)*Fs/FFT_SIZE;
    129. rfft_analyse.Amp[i] = 2 *FFT_Value * fabsf(sin(M_PI*ratio/FFT_SIZE)/sin(M_PI*ratio));
    130. rfft_analyse.Phase[i] = RFFT_Phase_Caculate(peak_index[i],ratio);
    131. }
    132. for(i=0;i
    133. {
    134. rfft_analyse.Phase[i]=rfft_analyse.Phase[i]-rfft_analyse.Phase[0];
    135. rfft_analyse.Phase[i]=rfft_analyse.Phase[i]*180/M_PI;
    136. }
    137. rfft_analyse.DC_Amp=*src/FFT_SIZE;
    138. }

    input.c

    1. //#############################################################################
    2. //! \file input.c
    3. //! \brief Input Vector (512)
    4. //! \author Vishal Coelho
    5. //! \date 22-Aug-2016
    6. //!
    7. //
    8. // Group: C2000
    9. // Target Family: $DEVICE$
    10. //
    11. //#############################################################################
    12. //
    13. //
    14. // $Copyright: Copyright (C) 2020 Texas Instruments Incorporated -
    15. // http://www.ti.com/ ALL RIGHTS RESERVED $
    16. //#############################################################################
    17. #include
    18. #pragma DATA_SECTION(FFT_input, "FFT_buffer3")
    19. // Matrix is 2 times its required sizeas it will be used to store
    20. // 1024 floats at a later point
    21. uint16_t FFT_input[2048] = {
    22. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    23. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    24. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    25. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    26. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    27. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    28. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    29. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    30. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    31. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    32. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    33. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    34. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    35. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    36. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    37. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    38. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    39. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    40. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    41. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    42. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    43. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    44. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    45. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    46. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    47. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    48. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    49. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    50. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    51. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    52. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    53. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    54. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    55. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    56. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    57. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    58. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    59. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    60. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    61. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    62. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    63. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    64. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    65. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    66. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    67. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    68. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    69. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    70. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    71. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    72. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    73. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    74. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    75. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    76. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    77. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    78. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    79. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    80. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    81. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    82. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    83. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    84. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    85. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    86. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    87. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    88. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    89. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    90. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    91. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    92. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    93. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    94. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    95. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    96. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    97. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    98. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    99. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    100. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    101. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    102. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    103. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    104. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    105. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    106. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    107. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    108. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    109. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    110. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    111. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    112. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    113. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    114. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    115. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    116. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    117. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    118. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    119. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    120. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    121. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    122. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    123. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    124. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    125. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    126. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    127. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    128. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    129. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    130. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    131. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    132. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    133. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    134. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    135. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    136. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    137. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    138. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    139. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    140. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    141. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    142. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    143. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    144. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    145. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    146. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    147. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    148. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    149. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    150. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    151. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    152. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    153. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    154. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    155. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    156. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    157. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    158. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    159. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    160. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    161. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    162. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    163. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    164. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    165. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    166. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    167. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    168. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    169. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    170. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    171. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    172. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    173. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    174. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    175. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    176. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    177. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    178. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    179. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    180. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    181. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    182. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    183. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    184. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    185. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    186. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    187. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    188. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    189. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    190. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    191. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    192. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    193. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    194. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    195. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    196. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    197. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    198. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    199. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    200. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    201. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    202. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    203. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    204. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    205. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    206. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    207. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    208. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    209. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    210. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    211. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    212. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    213. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    214. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    215. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    216. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    217. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    218. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    219. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    220. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    221. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    222. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    223. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    224. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    225. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    226. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    227. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    228. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    229. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    230. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    231. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    232. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    233. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    234. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    235. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    236. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    237. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    238. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    239. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    240. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    241. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    242. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    243. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    244. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    245. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    246. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    247. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    248. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    249. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    250. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    251. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    252. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    253. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    254. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    255. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    256. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    257. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    258. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    259. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    260. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    261. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    262. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    263. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    264. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    265. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    266. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    267. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    268. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    269. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    270. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    271. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    272. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    273. 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
    274. 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
    275. 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
    276. 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
    277. 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
    278. };
    279. // End of File

    cmd文件:

    1. /*
    2. // TI File $Revision: /main/3 $
    3. // Checkin $Date: July 9, 2008 14:12:45 $
    4. //###########################################################################
    5. //
    6. // FILE: 28335_RAM_lnk.cmd
    7. //
    8. // TITLE: Linker Command File For IQmath examples that run out of RAM
    9. //
    10. // NOTE; The example project uses memory protected by the
    11. // Code Security Module (CSM). Make sure the CSM is
    12. // unlocked before you load the project. One quick way
    13. // to do this on an erased device is to open a memory
    14. // window to the CSM password locations. If these locations
    15. // read back 0xFFFF (or non-zero), then the CSM is unlocked:
    16. //
    17. // Device Password locations
    18. // 28335: 0x33FFF8 - 0x33FFFF
    19. //
    20. //###########################################################################
    21. //
    22. //
    23. // $Copyright: Copyright (C) 2014-2022 Texas Instruments Incorporated -
    24. // http://www.ti.com/ ALL RIGHTS RESERVED $
    25. //###########################################################################
    26. */
    27. MEMORY
    28. {
    29. PAGE 0 :
    30. BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
    31. BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
    32. RAML0 : origin = 0x008000, length = 0x000800
    33. RAML1L2 : origin = 0x008800, length = 0x004800
    34. ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */
    35. FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */
    36. FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */
    37. FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */
    38. FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */
    39. FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */
    40. FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */
    41. FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */
    42. CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
    43. CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
    44. OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
    45. ADC_CAL : origin = 0x380080, length = 0x000009
    46. IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
    47. IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
    48. FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
    49. ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
    50. RESET : origin = 0x3FFFC0, length = 0x000002
    51. VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
    52. PAGE 1 :
    53. BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
    54. RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
    55. RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
    56. RAML3 : origin = 0x00D000, length = 0x001000
    57. RAML4 : origin = 0x00E000, length = 0x001000
    58. RAML5 : origin = 0x00F000, length = 0x001000
    59. ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
    60. FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */
    61. }
    62. SECTIONS
    63. {
    64. FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
    65. /* Setup for "boot to SARAM" mode:
    66. The codestart section (found in DSP28_CodeStartBranch.asm)
    67. re-directs execution to the start of user code. */
    68. codestart : > BEGIN, PAGE = 0
    69. #ifdef __TI_COMPILER_VERSION__
    70. #if __TI_COMPILER_VERSION__ >= 15009000
    71. .TI.ramfunc : {} LOAD = RAML0,
    72. RUN = RAML0,
    73. LOAD_START(_RamfuncsLoadStart),
    74. LOAD_END(_RamfuncsLoadEnd),
    75. RUN_START(_RamfuncsRunStart),
    76. LOAD_SIZE(_RamfuncsLoadSize),
    77. PAGE = 0
    78. #else
    79. ramfuncs : LOAD = RAML0,
    80. RUN = RAML0,
    81. LOAD_START(_RamfuncsLoadStart),
    82. LOAD_END(_RamfuncsLoadEnd),
    83. RUN_START(_RamfuncsRunStart),
    84. LOAD_SIZE(_RamfuncsLoadSize),
    85. PAGE = 0
    86. #endif
    87. #endif
    88. .text : {*(.text)}>> RAML1L2|RAML0 PAGE = 0
    89. .cinit : > RAML0, PAGE = 0
    90. .pinit : > RAML0, PAGE = 0
    91. .switch : > RAML0, PAGE = 0
    92. .stack : > RAMM1, PAGE = 1
    93. .ebss : > RAML3, PAGE = 1
    94. .econst : > RAML3, PAGE = 1
    95. .sysmem : > RAML3, PAGE = 1
    96. .esysmem : > RAML3, PAGE = 1
    97. .sysmem : > RAML3, PAGE = 1
    98. FFT_buffer1 : > RAML4, PAGE = 1
    99. FFT_buffer2 : > RAML4, PAGE = 1
    100. FFT_buffer3 : > RAML5, PAGE = 1
    101. FFT_buffer4 : > RAML5, PAGE = 1
    102. .cio : > RAML3, PAGE = 1
    103. ZONE7DATA : > ZONE7B, PAGE = 1
    104. DMARAML4 : > RAML4, PAGE = 1
    105. DMARAML5 : > RAML5, PAGE = 1
    106. .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */
    107. csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
    108. csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
    109. /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
    110. .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
    111. }
    112. /*
    113. //===========================================================================
    114. // End of file.
    115. //===========================================================================
    116. */

    main中调用   

    RFFT_ADC_Init();

    RFFT_ADC_Caculate();

    这两个函数即可完成测试。

    打开调试窗口

    rfft_analyse 加入调试窗口,点击运行即可看到计算结果

    可以看到成功把input.c采集到的数据通过FFT将各次不同频率的分量提取出来了,结果和我们上面输入信号很相近。(input.c输入信号数据可以通过matlab借助dsp库编写生成数据,可参考C2000Ware_4_01_00_00\libraries\dsp\FPU\c28\reference\MATLAB中的FPU_DSP_runIFFT.m进行编写)

    下图是相关程序的运行时间,1024点旋转因子表生成要650us(采样点数固定,该旋转因子表只需要生成一次),FFT计算大概要200us。

     

     

     

     

  • 相关阅读:
    小白学习Java第四十天
    PCB线路板蛇形布线要注意哪些问题?
    在数字藏品这个风口行业,如何脱颖而出?
    多个微信聚合管理,新消息提醒,快捷回复,轻松拿捏!
    (附源码)ssm跨平台教学系统 毕业设计 280843
    python代码轻松下载youtube视频
    p38 MAPK调控酶及转录因子
    【JVM】垃圾回收机制中,对象进入老年代的触发条件
    地图下载白嫖神器!你该怎么用好它
    TCP连接保活机制
  • 原文地址:https://blog.csdn.net/qq_41495871/article/details/127806899