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

📄 fir.c

📁 基于TI tms320lf2407 DSP 的FIR滤波算法(编译环境CCS2.20)
💻 C
字号:
/*******************************************************************/
#include "exp1_2407.h"
#include "math.h"
#define pi 3.1415927
/*******************************************************************/
  int px[256];
  int py[256];
  double npass,h[51], x, y, xmid[51];
  int m=50;
  int n=256;	
	
void sys_ini()                  //系统初始化子程序
{
     asm(" setc INTM");         //禁止所有中断
     asm(" clrc SXM");          //抑制符号位扩展
     asm(" clrc OVM");          //累加器中结果正常溢出
     * SCSR1=0x81FE;            //配置时钟锁相为4倍频CLKOUT=4*7.3728=29.4912M,使能外部模块
     * WDCR=0x00EF;             //禁止看门狗
     WSGR=0x0049;             //io、ram、program都设为1等待读写
     * IFR=0xFFFF;              //清除所有中断标志,"写1清0"
}

void adc_ini()                  //ADC初始化子程序
{    
     * ADCTRL1=0x25C0;          //仿真器挂起时,完成最后一次ad,start_stop运行模式,
                                //高中断优先级,双排序模式,禁用其他模式
     * ADCTRL2=0x0202;          //禁用中断模式,清中断标志
     * MAXCONV=0x0000;          //启用排序器1,最大转换数为1
     * CHSELSEQ1=0x0000;        //选择模拟输入通道为0通道
}

void read_ad()
{
     int a;
     * ADCTRL2|=0x2000;         //软件启动eoc1--ad转换器
     for(a=0;a<256;a++)
     {       
       px[a]=(* RESULT0>>6);    //读出ad结果
     }
     return;
}
      
interrupt void nothing()
{
     return;
}

void firdes(int m, double npass)
  {
  	int t;
   	for (t=0; t<=m; t++)
  	{
  		h[t] = sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));
  	}
  	if (t=m/2) h[t]=npass;
  }

int main(void)
{
    int xm,ym;
  	double fs,fstop,r,rm;
  	int i,j,p,k,s;
  	sys_ini();
  	adc_ini();
  	
  	k=0;  	  	
  	fs = 16000;
  	fstop = 2000;
  	npass = fstop/fs;
  	
  	for (i=0; i<=m; i++)
  	{
  		xmid[i]=0;
  	}

  for(;;)
  {	
  	firdes(m, npass);	
	for (s=0; s<=4; s++)
	{	
		read_ad();		
		for (i=0; i<=n-1; i++)
		{
		  xm = px[i];
		  x = xm/1023.0;			    	
   		  for (p=0; p<=m; p++)
    	  {
    	    xmid[m-p] = xmid[m-p-1];
    	  }
    	  xmid[0] = x;
          r = 0;
 		  rm= 0; 
		  for (j=0; j<=m; j++)
		  {	
	 	 	r  = xmid[j] * h[j];
			rm = rm + r;
    	  }
		  y = rm;
	   	  ym = (int)(1023.0 * y);
	   	  py[i] = ym;
	   	}
 		k=k;
	}		
  }
}

⌨️ 快捷键说明

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