⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataprocessing.c

📁 定点十六位的adsp218x系列的fft、fir算法。对刚刚入门的dsp学习有很大的帮助。
💻 C
字号:
#include "talkthrough.h"
int InReal[FFT_TAPS];//输入序列的实部
int InImage[FFT_TAPS];//输入序列的虚部
static section("section_OutReal") int OutReal[FFT_TAPS];
					              //输出频谱的实部
static section("section_OutImage") int OutImage[FFT_TAPS];
								  //输出频谱的虚部
float Magnitude[FFT_TAPS];//输出频谱的幅度
int Window;//窗函数状态标志:0--矩形窗,1--汉明窗
float W[FFT_TAPS];//窗函数
int OutBuf[FFT_TAPS/2];
/****************初始化缓冲区******************/
void InitInput(void)
{
  	int i;
	for (i=0;i<FFT_TAPS;i++)
		{
			InImage[i]=0;//将输入序列的虚部清零
	    } 	
}
/****************初始化窗函数******************/
void InitWindow(void)
{
	int i;
	if (Window==0) for(i=0;i<FFT_TAPS;i++) 
					W[i]=1.0;//产生矩形窗
	if (Window==1) for(i=0;i<FFT_TAPS;i++) 
				   	W[i]=0.54-0.46*cos(2*PI*i/(FFT_TAPS-1));//产生汉明窗
}
/***************信号处理程序部分*******************/	
void ProcessData(void)
{
    int i;   
    float *fptr;
    float  MinNum,MaxNum,AvgNum,NumRange;  
 	if(Ready2FFT)//如果数据块采集满就进行FFT
    {    
    for(i=0;i<FFT_TAPS;i++)
    InReal[i]=(int)((float)InReal[i]*W[i]);	
 	fft64(InReal,InImage,OutReal,OutImage);//调用库函数完成FFT运算
	for(i=0;i<FFT_TAPS;i++)//计算频谱的幅度 
	Magnitude[i]=sqrt((float)OutReal[i]*(float)OutReal[i]+(float)OutImage[i]*(float)OutImage[i]);
    ///////////对结果进行对数量化/////////
	for(i=0;i<FFT_TAPS;i++)//计算频谱的幅度的对数值 
	Magnitude[i]=20*log10(Magnitude[i]);
	        MinNum = 32767;MaxNum = -32768;//量化为D/A格式
	        AvgNum = 0;
            fptr = &Magnitude[0];
            for( i=0 ; i<FFT_TAPS ; i++ )
            {
                MaxNum = MaxNum > *fptr ? MaxNum : *fptr;
                MinNum = MinNum < *fptr ? MinNum : *fptr;
                AvgNum += *fptr;
                fptr++;
            }
            AvgNum=AvgNum/FFT_TAPS;
            NumRange=MaxNum-MinNum;
    for(i=0;i<FFT_TAPS/2;i++)
	OutBuf[i]=(int)(32768*(Magnitude[i]-AvgNum)/NumRange);
	OutBuf[0]=0;//不显示直流分量
     ////////////量化结束////////////
	Ready2FFT=0;//启动新数据块的采集
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -