📄 expiiroklp02.c
字号:
extern void InitC5402(void);
extern void OpenMcBSP(void);
extern void CloseMcBSP(void);
extern void READAD50(void);
extern void WRITEAD50(void);
/***********************************************************************
** Main Function Program
***********************************************************************/
#include "stdio.h"
#include "math.h"
#define pi 3.1415926
double fs,nlpass,nlstop,nhpass,nhstop,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;
}
}
void main(void)
{
int j,k=0;
int n,x_ad,y_da;
int *px = (int*)0x3000;
int *py = (int*)0x3100;
double w2,w1,w0;
w2=w1=w0=0.0;
for ( ; ; )
{
InitC5402(); /* initialize C5402 DSP */
OpenMcBSP();
fs=16000;
/* IIR LP filter */
nlpass = 0.1;
nlstop = 0.3;
biir2lpdes(fs,nlpass,nlstop,a,b);
for (j=0; j<=4; j++)
{
READAD50();
for (n=0; n<=255; n++)
{
px = (int*)(0x3000+n);
x_ad = *px;
x = x_ad/32768.0;
w2=x-a[1]*w1-a[2]*w0;
y=b[0]*w2+b[1]*w1+b[2]*w0;
w0=w1;
w1=w2;
y_da=(int)(y*32768.0);
py = (int*)(0x3100+n);
*py = y_da;
}
WRITEAD50();
k++;
}
}
/*void PROCESSING(void)
{
do the necessery operations here!*/
}
/***********************************************************************
** End of File –– exp08.c
***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -