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

使用F28335的官方FFT,经FFT后结果有问题

我使用的F28335的controlSUITE里面提供F2833x Real FFT ,在开发板上跑了一遍,

输入波形如下:

经过FFT后的输出波形如下,感觉有点问题,不知道错在哪里,求助各位专家?????

源码如下:

#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "math.h"
#include "float.h"
#include "FPU.h"

#define RFFT_STAGES 8
#define RFFT_SIZE (1 << RFFT_STAGES)

#pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1"); //Buffer alignment for the input array,
float32 RFFTin1Buff[RFFT_SIZE]; //RFFT_f32u(optional), RFFT_f32(required)
//Output of FFT overwrites input if //RFFT_STAGES is ODD
#pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");float32 RFFToutBuff[RFFT_SIZE]; //Output of FFT here if RFFT_STAGES is EVEN

#pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
float32 RFFTmagBuff[RFFT_SIZE/2+1]; //Additional Buffer used in Magnitude calc
#pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");
float32 RFFTF32Coef[RFFT_SIZE]; //Twiddle buffer

float RadStep = 0.1963495408494f; // Step to generate test bench waveform
float Rad = 0.0f;

RFFT_F32_STRUCT rfft;

void main(void)
{
Uint16 i;

InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

// Clear input buffers:
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = 0.0f;
}
// Generate sample waveforms:
Rad = 0.0f;
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = sin(Rad) + cos(Rad*2.3567); //Real input signal
//FFTImag_in[i] = cos(Rad*8.345) + sin(Rad*5.789); Rad = Rad + RadStep;
}
rfft.FFTSize = RFFT_SIZE;
rfft.FFTStages = RFFT_STAGES; rfft.InBuf = &RFFTin1Buff[0]; //Input buffer
rfft.OutBuf = &RFFToutBuff[0]; //Output buffer
rfft.CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor buffer
rfft.MagBuf = &RFFTmagBuff[0]; //Magnitude buffer

RFFT_f32_sincostable(&rfft); //Calculate twiddle factor
for (i=0; i < RFFT_SIZE; i++)
{
RFFToutBuff[i] = 0; //Clean up output buffer
}

for (i=0; i < RFFT_SIZE/2; i++) {
RFFTmagBuff[i] = 0; //Clean up magnitude buffer
}

RFFT_f32(&rfft); //Calculate real FFT
// OutBuf[0] = real[0]
// OutBuf[1] = real[1]
// OutBuf[2] = real[2]
// 厖?
// OutBuf[N/2] = real[N/2]
// OutBuf[N/2+1] = imag[N/2-1]
// 厖?
// OutBuf[N-3] = imag[3]
// OutBuf[N-2] = imag[2]
// OutBuf[N-1] = imag[1]
// RFFT_f32_mag(&rfft); //Calculate magnitude
// MagBuf[0] = magnitude[0]
// MagBuf[1] = magnitude[1]
// MagBuf[2] = magnitude[2]
// 厖?
// MagBuf[N/2] = magnitude[N/2]
// MagBuf[N/2+1] = magnitude[N/2+1]

// rfft.PhaseBuf = &RFFTmagBuff[0]; //Use magnitude buffer// RFFT_f32_phase(&rfft); //Calculate phase

// Just sit and loop forever (optional):
for(;;);

} //End of main

.cmd文件如下:

MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to SARAM" bootloader mode */

BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
RAMM0 : origin = 0x000050, length = 0x0003B0
RAML0 : origin = 0x008000, length = 0x001000
RAML1 : origin = 0x009000, length = 0x001000
RAML2 : origin = 0x00A000, length = 0x001000
RAML3 : origin = 0x00B000, length = 0x001000
ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 – program space */
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 */
ADC_CAL : origin = 0x380080, length = 0x000009
RESET : origin = 0x3FFFC0, length = 0x000002
IQTABLES : origin = 0x3FE000, length = 0x000b50
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0
BOOTROM : origin = 0x3FF27C, length = 0x000D44

PAGE 1 :
/* BOOT_RSVD is used by the boot ROM for stack. */
/* This section is only reserved to keep the BOOT ROM from */
/* corrupting this area during the debug process */

BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAML4 : origin = 0x00C000, length = 0x001000
RAML5 : origin = 0x00D000, length = 0x001000
RAML6 : origin = 0x00E000, length = 0x001000
RAML7 : origin = 0x00F000, length = 0x001000
ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 – data space */
}

SECTIONS
{
/* 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
ramfuncs : > RAML0, PAGE = 0
.text : > RAML1, PAGE = 0
.cinit : > RAML0, PAGE = 0
.pinit : > RAML0, PAGE = 0
.switch : > RAML0, PAGE = 0

.stack : > RAMM1, PAGE = 1
.ebss : > RAML4, PAGE = 1
.econst : > RAML5, PAGE = 1
.esysmem : > RAMM1, PAGE = 1

IQmath : > RAML1, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD

/* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{

IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)

}
*/

FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1

ZONE7DATA : > ZONE7B, 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

RFFTdata1 : > RAML7, PAGE = 1 //add for RFFT,2014-03-27
RFFTdata2 : > RAML7, PAGE = 1
RFFTdata3 : > RAML7, PAGE = 1
RFFTdata4 : > RAML7, PAGE = 1
FFTBUF ALIGN( 512 ) : { } > RAML6 PAGE 1

}

haibin zhang1:

你显示的内容好像不对,试试显示RFFTmagBuff。

这个是DSP跑完RFFT后输出的幅度值,应该和你输入信号的FFT一致的。

我使用的F28335的controlSUITE里面提供F2833x Real FFT ,在开发板上跑了一遍,

输入波形如下:

经过FFT后的输出波形如下,感觉有点问题,不知道错在哪里,求助各位专家?????

源码如下:

#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "math.h"
#include "float.h"
#include "FPU.h"

#define RFFT_STAGES 8
#define RFFT_SIZE (1 << RFFT_STAGES)

#pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1"); //Buffer alignment for the input array,
float32 RFFTin1Buff[RFFT_SIZE]; //RFFT_f32u(optional), RFFT_f32(required)
//Output of FFT overwrites input if //RFFT_STAGES is ODD
#pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");float32 RFFToutBuff[RFFT_SIZE]; //Output of FFT here if RFFT_STAGES is EVEN

#pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
float32 RFFTmagBuff[RFFT_SIZE/2+1]; //Additional Buffer used in Magnitude calc
#pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");
float32 RFFTF32Coef[RFFT_SIZE]; //Twiddle buffer

float RadStep = 0.1963495408494f; // Step to generate test bench waveform
float Rad = 0.0f;

RFFT_F32_STRUCT rfft;

void main(void)
{
Uint16 i;

InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

// Clear input buffers:
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = 0.0f;
}
// Generate sample waveforms:
Rad = 0.0f;
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = sin(Rad) + cos(Rad*2.3567); //Real input signal
//FFTImag_in[i] = cos(Rad*8.345) + sin(Rad*5.789); Rad = Rad + RadStep;
}
rfft.FFTSize = RFFT_SIZE;
rfft.FFTStages = RFFT_STAGES; rfft.InBuf = &RFFTin1Buff[0]; //Input buffer
rfft.OutBuf = &RFFToutBuff[0]; //Output buffer
rfft.CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor buffer
rfft.MagBuf = &RFFTmagBuff[0]; //Magnitude buffer

RFFT_f32_sincostable(&rfft); //Calculate twiddle factor
for (i=0; i < RFFT_SIZE; i++)
{
RFFToutBuff[i] = 0; //Clean up output buffer
}

for (i=0; i < RFFT_SIZE/2; i++) {
RFFTmagBuff[i] = 0; //Clean up magnitude buffer
}

RFFT_f32(&rfft); //Calculate real FFT
// OutBuf[0] = real[0]
// OutBuf[1] = real[1]
// OutBuf[2] = real[2]
// 厖?
// OutBuf[N/2] = real[N/2]
// OutBuf[N/2+1] = imag[N/2-1]
// 厖?
// OutBuf[N-3] = imag[3]
// OutBuf[N-2] = imag[2]
// OutBuf[N-1] = imag[1]
// RFFT_f32_mag(&rfft); //Calculate magnitude
// MagBuf[0] = magnitude[0]
// MagBuf[1] = magnitude[1]
// MagBuf[2] = magnitude[2]
// 厖?
// MagBuf[N/2] = magnitude[N/2]
// MagBuf[N/2+1] = magnitude[N/2+1]

// rfft.PhaseBuf = &RFFTmagBuff[0]; //Use magnitude buffer// RFFT_f32_phase(&rfft); //Calculate phase

// Just sit and loop forever (optional):
for(;;);

} //End of main

.cmd文件如下:

MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to SARAM" bootloader mode */

BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
RAMM0 : origin = 0x000050, length = 0x0003B0
RAML0 : origin = 0x008000, length = 0x001000
RAML1 : origin = 0x009000, length = 0x001000
RAML2 : origin = 0x00A000, length = 0x001000
RAML3 : origin = 0x00B000, length = 0x001000
ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 – program space */
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 */
ADC_CAL : origin = 0x380080, length = 0x000009
RESET : origin = 0x3FFFC0, length = 0x000002
IQTABLES : origin = 0x3FE000, length = 0x000b50
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0
BOOTROM : origin = 0x3FF27C, length = 0x000D44

PAGE 1 :
/* BOOT_RSVD is used by the boot ROM for stack. */
/* This section is only reserved to keep the BOOT ROM from */
/* corrupting this area during the debug process */

BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAML4 : origin = 0x00C000, length = 0x001000
RAML5 : origin = 0x00D000, length = 0x001000
RAML6 : origin = 0x00E000, length = 0x001000
RAML7 : origin = 0x00F000, length = 0x001000
ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 – data space */
}

SECTIONS
{
/* 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
ramfuncs : > RAML0, PAGE = 0
.text : > RAML1, PAGE = 0
.cinit : > RAML0, PAGE = 0
.pinit : > RAML0, PAGE = 0
.switch : > RAML0, PAGE = 0

.stack : > RAMM1, PAGE = 1
.ebss : > RAML4, PAGE = 1
.econst : > RAML5, PAGE = 1
.esysmem : > RAMM1, PAGE = 1

IQmath : > RAML1, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD

/* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{

IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)

}
*/

FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1

ZONE7DATA : > ZONE7B, 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

RFFTdata1 : > RAML7, PAGE = 1 //add for RFFT,2014-03-27
RFFTdata2 : > RAML7, PAGE = 1
RFFTdata3 : > RAML7, PAGE = 1
RFFTdata4 : > RAML7, PAGE = 1
FFTBUF ALIGN( 512 ) : { } > RAML6 PAGE 1

}

SL QI:

LZ你好 我使用官方control suite里面的FFT例程,得到的结果也不对,能否交流下?

我在开发板上跑出来的结果如下,这是什么原因呢?

我打了断点,代码从头跑到尾了,那按道理求幅值的函数已经运行了。

另外,做256点FFT特别花时间,如果按每个机械周期6.66个ns算,我做这一次运算,都有4ms左右了。关于时间太长这个问题,如何解决呢?谢谢

我使用的F28335的controlSUITE里面提供F2833x Real FFT ,在开发板上跑了一遍,

输入波形如下:

经过FFT后的输出波形如下,感觉有点问题,不知道错在哪里,求助各位专家?????

源码如下:

#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "math.h"
#include "float.h"
#include "FPU.h"

#define RFFT_STAGES 8
#define RFFT_SIZE (1 << RFFT_STAGES)

#pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1"); //Buffer alignment for the input array,
float32 RFFTin1Buff[RFFT_SIZE]; //RFFT_f32u(optional), RFFT_f32(required)
//Output of FFT overwrites input if //RFFT_STAGES is ODD
#pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");float32 RFFToutBuff[RFFT_SIZE]; //Output of FFT here if RFFT_STAGES is EVEN

#pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
float32 RFFTmagBuff[RFFT_SIZE/2+1]; //Additional Buffer used in Magnitude calc
#pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");
float32 RFFTF32Coef[RFFT_SIZE]; //Twiddle buffer

float RadStep = 0.1963495408494f; // Step to generate test bench waveform
float Rad = 0.0f;

RFFT_F32_STRUCT rfft;

void main(void)
{
Uint16 i;

InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

// Clear input buffers:
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = 0.0f;
}
// Generate sample waveforms:
Rad = 0.0f;
for(i=0; i < RFFT_SIZE; i++)
{
RFFTin1Buff[i] = sin(Rad) + cos(Rad*2.3567); //Real input signal
//FFTImag_in[i] = cos(Rad*8.345) + sin(Rad*5.789); Rad = Rad + RadStep;
}
rfft.FFTSize = RFFT_SIZE;
rfft.FFTStages = RFFT_STAGES; rfft.InBuf = &RFFTin1Buff[0]; //Input buffer
rfft.OutBuf = &RFFToutBuff[0]; //Output buffer
rfft.CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor buffer
rfft.MagBuf = &RFFTmagBuff[0]; //Magnitude buffer

RFFT_f32_sincostable(&rfft); //Calculate twiddle factor
for (i=0; i < RFFT_SIZE; i++)
{
RFFToutBuff[i] = 0; //Clean up output buffer
}

for (i=0; i < RFFT_SIZE/2; i++) {
RFFTmagBuff[i] = 0; //Clean up magnitude buffer
}

RFFT_f32(&rfft); //Calculate real FFT
// OutBuf[0] = real[0]
// OutBuf[1] = real[1]
// OutBuf[2] = real[2]
// 厖?
// OutBuf[N/2] = real[N/2]
// OutBuf[N/2+1] = imag[N/2-1]
// 厖?
// OutBuf[N-3] = imag[3]
// OutBuf[N-2] = imag[2]
// OutBuf[N-1] = imag[1]
// RFFT_f32_mag(&rfft); //Calculate magnitude
// MagBuf[0] = magnitude[0]
// MagBuf[1] = magnitude[1]
// MagBuf[2] = magnitude[2]
// 厖?
// MagBuf[N/2] = magnitude[N/2]
// MagBuf[N/2+1] = magnitude[N/2+1]

// rfft.PhaseBuf = &RFFTmagBuff[0]; //Use magnitude buffer// RFFT_f32_phase(&rfft); //Calculate phase

// Just sit and loop forever (optional):
for(;;);

} //End of main

.cmd文件如下:

MEMORY
{
PAGE 0 :
/* BEGIN is used for the "boot to SARAM" bootloader mode */

BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */
RAMM0 : origin = 0x000050, length = 0x0003B0
RAML0 : origin = 0x008000, length = 0x001000
RAML1 : origin = 0x009000, length = 0x001000
RAML2 : origin = 0x00A000, length = 0x001000
RAML3 : origin = 0x00B000, length = 0x001000
ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 – program space */
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 */
ADC_CAL : origin = 0x380080, length = 0x000009
RESET : origin = 0x3FFFC0, length = 0x000002
IQTABLES : origin = 0x3FE000, length = 0x000b50
IQTABLES2 : origin = 0x3FEB50, length = 0x00008c
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0
BOOTROM : origin = 0x3FF27C, length = 0x000D44

PAGE 1 :
/* BOOT_RSVD is used by the boot ROM for stack. */
/* This section is only reserved to keep the BOOT ROM from */
/* corrupting this area during the debug process */

BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAML4 : origin = 0x00C000, length = 0x001000
RAML5 : origin = 0x00D000, length = 0x001000
RAML6 : origin = 0x00E000, length = 0x001000
RAML7 : origin = 0x00F000, length = 0x001000
ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 – data space */
}

SECTIONS
{
/* 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
ramfuncs : > RAML0, PAGE = 0
.text : > RAML1, PAGE = 0
.cinit : > RAML0, PAGE = 0
.pinit : > RAML0, PAGE = 0
.switch : > RAML0, PAGE = 0

.stack : > RAMM1, PAGE = 1
.ebss : > RAML4, PAGE = 1
.econst : > RAML5, PAGE = 1
.esysmem : > RAMM1, PAGE = 1

IQmath : > RAML1, PAGE = 0
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD

/* Uncomment the section below if calling the IQNexp() or IQexp()
functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM
is 1 wait-state). If this section is not uncommented, IQmathTables2
will be loaded into other memory (SARAM, Flash, etc.) and will take
up space, but 0 wait-state is possible.
*/
/*
IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
{

IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)

}
*/

FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1

ZONE7DATA : > ZONE7B, 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

RFFTdata1 : > RAML7, PAGE = 1 //add for RFFT,2014-03-27
RFFTdata2 : > RAML7, PAGE = 1
RFFTdata3 : > RAML7, PAGE = 1
RFFTdata4 : > RAML7, PAGE = 1
FFTBUF ALIGN( 512 ) : { } > RAML6 PAGE 1

}

user1870277:

回复 SL QI:

你们这个波形是怎么显示出来的啊,我用Graph怎么纵坐标不对啊

赞(0)
未经允许不得转载:TI中文支持网 » 使用F28335的官方FFT,经FFT后结果有问题
分享到: 更多 (0)