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

📄 super_bass.c

📁 DSP5000实验箱上完整的实验程序,很有参考价值
💻 C
字号:
extern void InitC5410(void);
extern void OpenMcBSP(void);
extern void CloseMcBSP(void);
extern void READAD50(void);
extern void WRITEAD50(void);
#include "stdio.h"
#include "math.h"
#define pi 3.1415926 

int in[256], out[256];
double fs = 16000;    
double nlpass = 0.014;
double nlstop = 0.214;
double a[3],b[3],x,y;

void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]);
  
void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[])
{
	int i, u, v;
	double wp, omp, gsa, t;
    wp  = nlpass*2*pi;
	omp = tan(wp/2.0);
	gsa = omp*omp;
	for (i=0; i<=2; i++)
	{
		u = i%2;
		v = i-1;
		a[i] = gsa*pow(2,u)-sqrt(2)*omp*v+pow(-2,u);
	}
	
	for (i=0; i<=2; i++)
	{
		u = i%2;
		b[i] = gsa*pow(2,u);
	}
	t = a[0];
	for (i=0; i<=2; i++)
	{
		a[i]=a[i]/t;
		b[i]=b[i]/t;
	}
}

/*******************************************************************/
/* Main Function Program                                           */
/*******************************************************************/ 
void main(void)
{
	int i,j;
	int x_ad,y_da;
	int *px = (int*)0x3000;
	int *py = (int*)0x3010;
	double w[9];
	
	/*** mode = 0, 直通,输出与输入相同     ***/
	/*** mode = 1, 提取重低音部分,输出     ***/
	/*** mode = 2, 对输入信号做低音加重处理 ***/

	int mode = 1;
	
	for ( i = 0; i < 9; i++ )  w[i] = 0;
	
	InitC5410(); /* initialize C5402 DSP */
	OpenMcBSP();

	biir2lpdes(fs,nlpass,nlstop,a,b);

	for ( ; ; )
	{
		READAD50();
	
		x_ad = *px;
		x = x_ad;

		w[2] = x - w[0]*a[2] - w[1]*a[1];
		w[5] = (w[0]*b[2] + w[1]*b[1] + w[2]*b[0])*3.17 - w[4]*a[1] - w[3]*a[2];
		w[8] = (w[3]*b[2] + w[4]*b[1] + w[5]*b[0])*3.17 - w[7]*a[1] - w[6]*a[2];
		y = w[8]*b[0] + w[7]*b[1] + w[6]*b[2];

		w[0] = w[1];  w[1] = w[2];
		w[3] = w[4];  w[4] = w[5];  
		w[6] = w[7];  w[7] = w[8];
      	
		if ( mode == 0 )  y = x_ad;
		else if ( mode == 1 )  y = 2*y;
		else if ( mode == 2 )  y = x + y;
		else y = 0;
		
		if ( y >  32700 ) y =  32700.0;
		if ( y < -32700 ) y = -32700.0;
		y_da = (int)(y);
				
		*py = y_da;
			
		WRITEAD50();
		
		in[j]  = x_ad;
		out[j] = y_da;
		j++;
		if ( j >= 256 )
		{
			j = 0;    /* Set breakpoint here can view the in data and out data */
		}
	}

}

/********************************************************************************
** End of File –– exp08.c
*********************************************************************************/

⌨️ 快捷键说明

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