TI中文支持网
TI专业的中文技术问题搜集分享网站

关于fft.lib调用问题

输入的input[N]图形如下,inputFFT为FFT Magnitude下的图形:
  
下图为magTest[ ]的64点与128点时图形,个人感觉不对,应该要同inputFFT一样才对啊,是不是哪里配错了:
  
源码如下:
#include "DSP28x_Project.h"// Device Headerfile and Examples Include File
#include <fft.h>
#include"math.h"

// Prototype statements for functions found within this file.
interrupt void adc_isr(void);
void Adc_Config(void);


// Global variables used in this example:
Uint16 LoopCount;
#if 0
Uint16 ConversionCount;
Uint16 Voltage1[10];
Uint16 Voltage2[10];
#endif

#define PI 3.1415926
#defineN128 
long ipcb[N+2];
long mag[N/2+1];  
long magTest[N/2+1];  
#pragma DATA_SECTION(ipcb, "FFTipcb");
#pragma DATA_SECTION(mag, "FFTmag");

RFFT32  fft=RFFT32_128P_DEFAULTS;

RFFT32_ACQ  acq=FFTRACQ_DEFAULTS;




#if 1
unsigned int input[N]=
{

	0x000,0x00b,0x02c,0x062,0x0ac,0x109,0x176,0x1f1,0x307,0x39b,
	0x432,0x4c7,0x558,0x5e2,0x661,0x6d4,0x736,0x787,0x7c4,0x7ec,
	0x7fe,0x7ec,0x7c4,0x787,0x736,0x6d4,0x661,0x5e2,0x558,0x4c7,
	0x432,0x39b,0x307,0x1f1,0x176,0x109,0x0ac,0x062,0x02c,0x00b,
		
	0x000,0x00b,0x02c,0x062,0x0ac,0x109,0x176,0x1f1,0x307,0x39b,
	0x432,0x4c7,0x558,0x5e2,0x661,0x6d4,0x736,0x787,0x7c4,0x7ec,
	0x7fe,0x7ec,0x7c4,0x787,0x736,0x6d4,0x661,0x5e2,0x558,0x4c7,
	0x432,0x39b,0x307,0x1f1,0x176,0x109,0x0ac,0x062,0x02c,0x00b,
	
	0x000,0x00b,0x02c,0x062,0x0ac,0x109,0x176,0x1f1,0x307,0x39b,
	0x432,0x4c7,0x558,0x5e2,0x661,0x6d4,0x736,0x787,0x7c4,0x7ec,
	0x7fe,0x7ec,0x7c4,0x787,0x736,0x6d4,0x661,0x5e2,0x558,0x4c7,
	0x432,0x39b,0x307,0x1f1,0x176,0x109,0x0ac,0x062,0x02c,0x00b,

	0x000,0x00b,0x02c,0x062,0x0ac,0x109,0x176,0x1f1

};
#endif

main()
{
	int i;
	unsigned int *pInput;
	pInput=input;

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2803x_SysCtrl.c file.InitSysCtrl();


// Step 2. Initialize GPIO:
// This example function is found in the DSP2802x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
// InitGpio();  // Skipped for this example

// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interruptsDINT;

// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP2802x_PieCtrl.c file.InitPieCtrl();

/* Initialize acquisition module*/acq.buffptr=ipcb;acq.tempptr=ipcb;acq.size=N;acq.count=N;acq.acqflag=1;

/* Initialize FFT module*/fft.ipcbptr=ipcb;fft.magptr=mag;// fft.winptr=(long *)win;fft.init(&fft);  



// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000;
// This function is found in DSP2802x_PieVect.c.InitPieVectTable();for(;;){LoopCount++;for(i=0;i<N;i++){
 acq.input=((unsigned long)pInput[i])<<16; acq.update(&acq);}if (acq.acqflag==0)// If the samples are acquired{fft.calc(&fft);fft.split(&fft);fft.mag(&fft);acq.acqflag=1;// Enable the next acquisition

		for(i=0;i<N/2+1;i++) 
		{ magTest[i]=sqrt(mag[i]); 
		}}}

}
赞(0)
未经允许不得转载:TI中文支持网 » 关于fft.lib调用问题
分享到: 更多 (0)