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

📄 dataprocessing.c

📁 定点十六位的adsp218x系列的fft、fir算法。对刚刚入门的dsp学习有很大的帮助。
💻 C
字号:
#include "talkthrough.h"
#include <math.h>
#define   PI 	3.1415926
#define   FC2   0.05//以采样率Fs进行归一化的高频截止频率
#define   FC1   0.00//以采样率Fs进行归一化的低频截止频率
#define   FL	0.2//移位量
#define	  COEFFSCALE  20000//滤波器系数整型标尺
#define   OFFSET	8000//直流偏置

int Window;//加窗标志
int Shift;//频域移位标志
int Compress;//时域压缩标志
int FirIn,FirOut; //定义输入和输出
int pm  h[FIR_TAPS];	//最终设计的滤波器冲击响应		
int section("section_DAG") InputBuf[FIR_TAPS+1];
				//利用LDF的存储器定义,将输入缓存准确开辟在地址边界处
				
/****************初始化滤波器系数******************/
void InitCoeffs(void)
{  
float hd[FIR_TAPS];//理想低通滤波器的冲击响应
float W[FIR_TAPS];	//窗函数
float cosine[FIR_TAPS];//移位因子
int i;
//////////////滤波器系数产生///////////////
   	for(i=0;i<(FIR_TAPS-1)/2;i++)
	 	hd[i]=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2))-sin(2*FC1*PI*(i-(FIR_TAPS-1)/2)))/(i-(FIR_TAPS-1)/2);
   	for(i=(FIR_TAPS-1)/2+1;i<FIR_TAPS;i++)
	 	hd[i]=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2))-sin(2*FC1*PI*(i-(FIR_TAPS-1)/2)))/(i-(FIR_TAPS-1)/2);
	hd[(FIR_TAPS-1)/2]=2*(FC2-FC1);
///////////时域截取////////////
	for(i=0;i<FIR_TAPS;i++) h[i]=(int)(hd[i]*COEFFSCALE);
///////////时域加窗///////////////
if(Window)
	{
	for(i=0;i<FIR_TAPS;i++)	W[i]=0.54-0.46*cos(2*PI*i/(FIR_TAPS-1));
    for(i=0;i<FIR_TAPS;i++)	h[i]=(int)((float)h[i]*W[i]);
	}
///////////时域压缩系数///////////
if(Compress)
	{
	for (i=0;i<FIR_TAPS/2;i++) hd[i]=h[i*2];
	for (i=0;i<FIR_TAPS/2;i++) h[i]=hd[i];
	for (i=FIR_TAPS/2;i<FIR_TAPS;i++) h[i]=0;//序列右边填零
	}
/////////////移位FL*fs///////////
if(Shift)
	{ 
	for (i=0;i<FIR_TAPS;i++)	cosine[i]=cos(2*PI*i*FL);
	for(i=0;i<FIR_TAPS;i++)     h[i]=(int)((float)h[i]*cosine[i]);
	}
}
/****************初始化接收缓冲区******************/
void InitInput(void)
{
  	int i;

	for (i=0;i<FIR_TAPS;i++)//将数据缓冲区初始化为零
		{
			InputBuf[i]=0;
	    } 	
}
/***************信号处理程序部分*******************/	
void ProcessData(void)
{
 FirOut= fir(FirIn-OFFSET,h,InputBuf,FIR_TAPS);//调用库函数完成FIR滤波
}

⌨️ 快捷键说明

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