?? dsp2.c
字號:
#include "TSLinkDrv.h"
#include <stdio.h>
#define DATA_SIZE 4
#include "common.h"
#include <filter.h>
#include <math.h>
int buffer[1024];
complex_float data[NDATA]; /* data for a 256-point FFT */
complex_float output[NDATA];
static complex_float twidtab[(3*NDATA)/4];
/* note that the temporary buffer should be as large as
the largest FFT generated */
complex_float temp[NDATA];
float real[NDATA];
void main(void)
{
int i;
int* pAddr;
float MaxData;
unsigned int MaxIndex=0;
__builtin_sysreg_write(__SYSCON, 0x1A79E7);
__builtin_sysreg_write(__SDRCON, 0x5213);
LinkInit(1, LINK_SPEED);
LinkInit(3, LINK_SPEED);
for(i = 0; i < NDATA; i++)
{
data[i].re=sin(2*PI*i*FC/FS);
data[i].im=0;
}
twidfft (twidtab,NDATA);
// pAddr = (int*)0x5000000;
// for(i = 0; i < 0x1000000; i++)
// *(pAddr + i) = 0;
// LinkRecvDMAW(3, (void*)buffer, 1024);
// LinkRecv2DDMAW(3, (void*)0x5000000, 0x1000, 0x1000);
// printf("recv done.\n");
/* for(i = 0; i < 0x1000000; i++)
{
if(*(pAddr + i) != 0x4000000 + i)
{
printf("Verify error!\n");
return;
}
}
printf("Verify OK.\n");
*/
while(1)
{
LinkRecvDMAW(3, (void*)buffer, 1024);
if(!CheckBuffer(buffer))
{
printf("dsp2 verify error\n");
break;
}
cfft (data, temp, output, twidtab, 1, NDATA);
for(i = 0; i < NDATA; i++)
{
real[i] = output[i].re * output[i].re + output[i].im * output[i].im;
}
MaxData= 0;
MaxIndex=0;
for(i = 0; i < NDATA / 2; i++)
{
if(real[i] > MaxData)
{
MaxIndex = i;
MaxData = real[i];
}
}
if(MaxIndex != 0x0a)
{
printf("dsp2 fft error\n");
break;
}
LinkSendDMAW(1, (void*)buffer, 1024);
}
printf("DSP2 failed\n");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -