移植

首先进入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 <stdio.h>
#include <string.h>#define RFFT_Analyse_MaxNum 20typedef 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 <math.h>
#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<len;i++){if(*(src+i)>max_data)max_data=*(src+i);}for (i=1;i<len-1;i++){data1=*(src+i-1);data2=*(src+i);data3=*(src+i+1);if((data1<data2) && (data2>data3) && (data2 >max_data*0.1)){if(num<20){*(index+num)=i;num++;}elsereturn 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<rfft_analyse.Wave_Num;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.Wave_Num;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 <stdint.h>#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 = 0x000800RAML1L2    : origin = 0x008800, length = 0x004800ZONE7A     : 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 = 0x000009IQTABLES    : 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 = 0x000002VECTORS     : 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 = 0x001000RAML4      : origin = 0x00E000, length = 0x001000RAML5      : origin = 0x00F000, length = 0x001000ZONE7B     : 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#elseramfuncs       : 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 = 1FFT_buffer1        : > RAML4,     PAGE = 1FFT_buffer2      : > RAML4,     PAGE = 1FFT_buffer3      : > RAML5,     PAGE = 1FFT_buffer4      : > RAML5,     PAGE = 1.cio             : > RAML3,     PAGE = 1ZONE7DATA        : > ZONE7B,    PAGE = 1DMARAML4         : > RAML4,     PAGE = 1DMARAML5         : > 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。

TMS320F28335调用官方库进行FFT频谱分析相关推荐

  1. 【STM32】STM32F4调用DSP库实现FFT运算

    写在前面 最近在整理之前的stm32笔记,打算把一些有价值的笔记发到CSDN分享一下. 奎斯特定理 在进行模拟/数字信号的转换过程中,当采样频率F大于信号中最高频率 fmax 的 2 倍时(F> ...

  2. C++实现FFT频谱分析

    Update:9/10/2022 鸽了太久-增补了一些新的表述和简单推导,以及FFT在算法竞赛中的应用部分.帖子里的代码已经分别在2021全国大学生电子设计竞赛.洛谷OJ和课程设计中实战过,可靠性有保 ...

  3. 华大半导体HC32F4A0笔记(五),使用CMSIS-DSP库进行FFT运算

    一.开启FPU功能 点这个麻将牌四筒,展开CMSIS,把DSP勾了. 点开后 然后点这个锤子 No Auto Includes的勾不要打,让它自动include,因为CMSIS-DSP库在KEIL的安 ...

  4. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件) 导读 动态演示调用python库的tkinter带你进入GUI世界(Find/un ...

  5. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(text.insert/link各种事件)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(text.insert/link各种事件) 导读 动态演示调用python库的tkinter带你进入GUI世 ...

  6. 利用JNative实现Java调用动态库

    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下 "Java dll",首先出现的是 ...

  7. Go官方库RPC开发指南

    Go官方提供了一个RPC库: net/rpc.包rpc提供了通过网络访问一个对象的方法的能力.服务器需要注册对象, 通过对象的类型名暴露这个服务.注册后这个对象的输出方法就可以远程调用,这个库封装了底 ...

  8. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题

    Java调用动态库所需要关心的问题 标签: 无标签 利用JNative实现Java调用动态库(转) http://cctv663.blog.163.com/blog/static/1011921220 ...

  9. LPC1768用官方库中用寄存器开启两个硬件PWM

    第一次使用LPC芯片.在NXP官网上面下载了官方库函数如下图 但是在使用过程中发现该库很多东西都不齐全,比如说硬件pwm,是的,连这个都没有,然后当我想要移植在网上下载的寄存器硬件PWM列子进去的时候 ...

最新文章

  1. Nat. Biotechnol.| 基于生物活性建模识别抗SARS-CoV-2药物
  2. java jsch_java使用JSCH实现SFTP文件管理
  3. 在 Linux“.NET研究” 操作系统中运行 ASP.NET 4 (下)
  4. C#对App.config文件或者web.config文件中节点的操作类
  5. React.Fragment 包裹标签
  6. 04_有序清单无序清单
  7. Scala语言整理(一)
  8. flex平均分布换行后自动对齐
  9. mysql安装im,mysql安装记录
  10. 如何查看keepalived版本号_Keepalived介绍 , 配置说明 , 及实际应用
  11. 提高学生对计算机学科学习兴趣的研究的结题报告,《如何在体育教学中运用体育游戏》的研究结题报告...
  12. Java套接字Socket编程--TCP参数
  13. os系统配置putty服务器,Mac 电脑安装putty
  14. 灰色系统理论(Matlab实现)
  15. 学ASP.NET入门编程,合适么?
  16. 台式电脑怎么组装步骤_详细教您台式电脑如何快速组装
  17. 《数据结构与算法》(十八)- 平衡二叉树
  18. simulink仿真结果出现振荡
  19. MATLAB—view函数观察三视图
  20. python nlp 句子提取_自然语言16.1_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...

热门文章

  1. Latex中如何加粗字体 如何打出圆圈序号
  2. input 输入数字而且最大为10
  3. 版式设计中的点线面总结
  4. Kali Linux 终端字体配色
  5. python习题练习(一)
  6. ant Design 表单以及表单验证
  7. 最全电商分类信息(05)
  8. 无线网络连接后总是提示可能需要其他登陆信息
  9. Jenkins自动化部署阿里云K8s
  10. 转变为一维向量的flatten()操作