移植
首先进入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
- /*
- * RFFT.h
- *
- * Created on: 2022年11月2日
- * Author: Administrator
- */
-
- #ifndef APP_RFFT_H_
- #define APP_RFFT_H_
-
- #include "DSP28x_Project.h"
- #include
- #include
-
-
- #define RFFT_Analyse_MaxNum 20
-
- typedef struct {
- Uint16 Wave_Num;
- float DC_Amp;
- float Amp[RFFT_Analyse_MaxNum];
- float freq[RFFT_Analyse_MaxNum];
- float Phase[RFFT_Analyse_MaxNum];
- } RFFT_Analyse_Struct;
-
-
- void RFFT_ADC_Init();
- void RFFT_ADC_Caculate();
- float RFFT_Fractional_Frequency(float ratio);
- void RFFT_Analyse(float *src);
- float RFFT_Phase_Caculate(Uint16 index,float ratio);
-
- Uint16 RFFT_Peak_Find(float *src ,Uint16 len,Uint16 *index); //幅度谱及其长度
-
-
- #endif /* APP_RFFT_H_ */
RFFT.c
- /*
- * RFFT.c
- *
- * Created on: 2022年11月2日
- * Author: Administrator
- */
-
-
- #include "dsp.h"
- #include "fpu_rfft.h"
- #include "RFFT.h"
- #include
- #include "complex.h"
-
- #define Fs 1000
- #define FFT_STAGES (10U) //迭代次数 =Log2(FFT_SIZE)
- #define FFT_SIZE (1 << FFT_STAGES) //FFT计算点数
-
- RFFT_F32_STRUCT rfft;
- RFFT_ADC_F32_STRUCT rfft_adc;
- RFFT_F32_STRUCT_Handle hnd_rfft = &rfft;
- RFFT_ADC_F32_STRUCT_Handle hnd_rfft_adc = &rfft_adc;
- RFFT_Analyse_Struct rfft_analyse;
-
- //#pragma DATA_SECTION(FFT_input, "FFT_buffer");
- #pragma DATA_SECTION(FFT_output, "FFT_buffer1");
- #pragma DATA_SECTION(FFT_twiddleFactors, "FFT_buffer2");
- #pragma DATA_SECTION(FFT_magnitude_phase, "FFT_buffer3");
-
- //uint16_t FFT_input[FFT_SIZE];
- extern uint16_t FFT_input[2U*FFT_SIZE];
- float FFT_twiddleFactors[FFT_SIZE];
- float FFT_output[FFT_SIZE];
- float FFT_magnitude_phase[(FFT_SIZE >> 1) + 1];
-
-
- #define MAX(a, b) (((a) > (b)) ? (a) : (b))
- #define MIN(a, b) (((a) < (b)) ? (a) : (b))
-
-
- float myabs;
-
- void RFFT_ADC_Init()
- {
-
- RFFT_f32_setInputPtr(hnd_rfft, (float *)FFT_input);
- RFFT_f32_setOutputPtr(hnd_rfft, FFT_output);
- RFFT_f32_setStages(hnd_rfft, FFT_STAGES);
- RFFT_f32_setFFTSize(hnd_rfft, FFT_SIZE);
- RFFT_f32_setMagnitudePtr(hnd_rfft, FFT_magnitude_phase);
- RFFT_f32_setPhasePtr(hnd_rfft, FFT_magnitude_phase);
-
- RFFT_f32_setTwiddlesPtr(hnd_rfft, FFT_twiddleFactors);
- RFFT_f32_sincostable(hnd_rfft);
-
- RFFT_ADC_f32_setTailPtr(hnd_rfft_adc, &(hnd_rfft->OutBuf));
- RFFT_ADC_f32_setInBufPtr(hnd_rfft_adc, FFT_input);
- }
-
- void RFFT_ADC_Caculate()
- {
- float* temp;
-
- RFFT_adc_f32(hnd_rfft_adc);
- RFFT_f32_mag(hnd_rfft);
- temp=RFFT_f32_getMagnitudePtr(hnd_rfft);
- RFFT_Analyse(temp);
- }
-
- float RFFT_Phase_Caculate(Uint16 index,float ratio)
- {
- complex p;
- complex FFT_value;
-
- p=(1-cexpf((2*M_PI*ratio/FFT_SIZE)*I));
- p=p/ (1-cexpf((2*M_PI*ratio)*I));
- FFT_value=FFT_output[index]+FFT_output[FFT_SIZE-index]*I;
- p=FFT_value*p;
-
- return (cargf(p)+M_PI/2);
- }
-
- Uint16 RFFT_Peak_Find(float *src ,Uint16 len,Uint16 *index) //幅度谱及其长度
- {
- Uint16 num=0;
- Uint16 i;
- float max_data=0;
- float data1=0;
- float data2=0;
- float data3=0;
-
-
- for (i=1;i
- {
- if(*(src+i)>max_data)
- max_data=*(src+i);
- }
- for (i=1;i
-1;i++) - {
- data1=*(src+i-1);
- data2=*(src+i);
- data3=*(src+i+1);
- if((data1
data3) && (data2 >max_data*0.1)) - {
- if(num<20)
- {
- *(index+num)=i;
- num++;
- }
- else
- return num;
- }
- }
- return num;
- }
-
-
-
-
- float RFFT_Fractional_Frequency(float ratio)
- {
- Uint16 niter;
- float K,f,a,b,y,yp;
- f=0;
- K=(M_PI/FFT_SIZE) * sin(M_PI/FFT_SIZE);
- for(niter=0;niter<20;niter++)
- {
- a = sin(M_PI*f/FFT_SIZE);
- b = sin(M_PI*(f-1)/FFT_SIZE);
-
- y = ratio - a/b;
- yp = K / (b*b);
- f = MAX(-0.5, MIN(f - y/yp, 0.5));
- }
- return f;
- }
-
-
- void RFFT_Analyse(float *src)
- {
- Uint16 i;
- float ratio;
- float FFT_Value;
- Uint16 peak_index[RFFT_Analyse_MaxNum];
-
- memset(peak_index, 0U, RFFT_Analyse_MaxNum*sizeof(Uint16));
- memset(rfft_analyse.freq, 0U, RFFT_Analyse_MaxNum*sizeof(float));
- memset(rfft_analyse.Amp, 0U, RFFT_Analyse_MaxNum*sizeof(float));
- memset(rfft_analyse.Phase, 0U, RFFT_Analyse_MaxNum*sizeof(float));
-
- rfft_analyse.Wave_Num=RFFT_Peak_Find(src,FFT_SIZE/2,peak_index);
-
- for(i=0;i
- {
- FFT_Value=*(src+peak_index[i]);
- ratio = (*(src+peak_index[i]+1))/FFT_Value;
- if ((*(src+peak_index[i]+1)) > (*(src+peak_index[i]-1)))
- ratio = -ratio;
- ratio = RFFT_Fractional_Frequency(ratio);
- rfft_analyse.freq[i] = (*(peak_index+i)-1+ratio)*Fs/FFT_SIZE;
- rfft_analyse.Amp[i] = 2 *FFT_Value * fabsf(sin(M_PI*ratio/FFT_SIZE)/sin(M_PI*ratio));
- rfft_analyse.Phase[i] = RFFT_Phase_Caculate(peak_index[i],ratio);
- }
- for(i=0;i
- {
- rfft_analyse.Phase[i]=rfft_analyse.Phase[i]-rfft_analyse.Phase[0];
- rfft_analyse.Phase[i]=rfft_analyse.Phase[i]*180/M_PI;
- }
- rfft_analyse.DC_Amp=*src/FFT_SIZE;
- }
-
-
-
-
-
-
-
input.c
- //#############################################################################
- //! \file input.c
- //! \brief Input Vector (512)
- //! \author Vishal Coelho
- //! \date 22-Aug-2016
- //!
- //
- // Group: C2000
- // Target Family: $DEVICE$
- //
- //#############################################################################
- //
- //
- // $Copyright: Copyright (C) 2020 Texas Instruments Incorporated -
- // http://www.ti.com/ ALL RIGHTS RESERVED $
- //#############################################################################
-
- #include
-
-
- #pragma DATA_SECTION(FFT_input, "FFT_buffer3")
-
-
- // Matrix is 2 times its required sizeas it will be used to store
- // 1024 floats at a later point
- uint16_t FFT_input[2048] = {
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- 2.258888e+03, 2.628179e+03, 2.054902e+03, 2.438736e+03,
- 1.750881e+03, 1.040492e+03, 3.077914e+03, 2.589702e+03,
- 1.876330e+03, 1.952391e+03, 1.479973e+03, 1.809179e+03,
- 1.275987e+03, 1.776151e+03, 1.269484e+03, 7.874067e+02,
- 3.077914e+03, 2.842787e+03, 2.357726e+03, 2.614976e+03,
- };
-
-
-
-
- // End of File
cmd文件:
- /*
- // TI File $Revision: /main/3 $
- // Checkin $Date: July 9, 2008 14:12:45 $
- //###########################################################################
- //
- // FILE: 28335_RAM_lnk.cmd
- //
- // TITLE: Linker Command File For IQmath examples that run out of RAM
- //
- // NOTE; The example project uses memory protected by the
- // Code Security Module (CSM). Make sure the CSM is
- // unlocked before you load the project. One quick way
- // to do this on an erased device is to open a memory
- // window to the CSM password locations. If these locations
- // read back 0xFFFF (or non-zero), then the CSM is unlocked:
- //
- // Device Password locations
- // 28335: 0x33FFF8 - 0x33FFFF
- //
- //###########################################################################
- //
- //
- // $Copyright: Copyright (C) 2014-2022 Texas Instruments Incorporated -
- // http://www.ti.com/ ALL RIGHTS RESERVED $
- //###########################################################################
- */
-
-
-
-
- MEMORY
- {
- PAGE 0 :
- BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
- BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
-
- RAML0 : origin = 0x008000, length = 0x000800
- RAML1L2 : origin = 0x008800, length = 0x004800
- ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */
-
- FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */
- FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */
- FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */
- FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */
- FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */
- FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */
- FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */
-
-
- CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
- CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
- OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */
- ADC_CAL : origin = 0x380080, length = 0x000009
-
- IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */
- IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */
- FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */
- ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
-
- RESET : origin = 0x3FFFC0, length = 0x000002
- VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */
-
-
-
-
-
-
-
- PAGE 1 :
- BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
- RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
- RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
- RAML3 : origin = 0x00D000, length = 0x001000
- RAML4 : origin = 0x00E000, length = 0x001000
- RAML5 : origin = 0x00F000, length = 0x001000
- ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */
- FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */
-
- }
-
-
- SECTIONS
- {
- FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
- /* Setup for "boot to SARAM" mode:
- The codestart section (found in DSP28_CodeStartBranch.asm)
- re-directs execution to the start of user code. */
-
- codestart : > BEGIN, PAGE = 0
-
- #ifdef __TI_COMPILER_VERSION__
- #if __TI_COMPILER_VERSION__ >= 15009000
- .TI.ramfunc : {} LOAD = RAML0,
- RUN = RAML0,
- LOAD_START(_RamfuncsLoadStart),
- LOAD_END(_RamfuncsLoadEnd),
- RUN_START(_RamfuncsRunStart),
- LOAD_SIZE(_RamfuncsLoadSize),
- PAGE = 0
- #else
- ramfuncs : LOAD = RAML0,
- RUN = RAML0,
- LOAD_START(_RamfuncsLoadStart),
- LOAD_END(_RamfuncsLoadEnd),
- RUN_START(_RamfuncsRunStart),
- LOAD_SIZE(_RamfuncsLoadSize),
- PAGE = 0
- #endif
- #endif
-
- .text : {*(.text)}>> RAML1L2|RAML0 PAGE = 0
- .cinit : > RAML0, PAGE = 0
- .pinit : > RAML0, PAGE = 0
- .switch : > RAML0, PAGE = 0
-
- .stack : > RAMM1, PAGE = 1
- .ebss : > RAML3, PAGE = 1
- .econst : > RAML3, PAGE = 1
- .sysmem : > RAML3, PAGE = 1
- .esysmem : > RAML3, PAGE = 1
-
- .sysmem : > RAML3, PAGE = 1
-
- FFT_buffer1 : > RAML4, PAGE = 1
- FFT_buffer2 : > RAML4, PAGE = 1
- FFT_buffer3 : > RAML5, PAGE = 1
- FFT_buffer4 : > RAML5, PAGE = 1
-
- .cio : > RAML3, PAGE = 1
- ZONE7DATA : > ZONE7B, PAGE = 1
-
- DMARAML4 : > RAML4, PAGE = 1
- DMARAML5 : > RAML5, PAGE = 1
-
- .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */
- csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
- csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
-
- /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
- .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
-
- }
-
- /*
- //===========================================================================
- // End of file.
- //===========================================================================
- */
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