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

📄 dec5416-mem.c

📁 此程序为DSP5416开发的源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
	X[1846]=-4596;
	X[1847]=2926;
	X[1848]=3402;
	X[1849]=-1937;
	X[1850]=-1527;
	X[1851]=-1454;
	X[1852]=9049;
	X[1853]=-1242;
	X[1854]=2421;
	X[1855]=2062;
	X[1856]=-13905;
	X[1857]=9349;
	X[1858]=-824;
	X[1859]=-4406;
	X[1860]=3724;
	X[1861]=1710;
	X[1862]=-4105;
	X[1863]=-18388;
	X[1864]=14132;
	X[1865]=6339;
	X[1866]=-12733;
	X[1867]=14498;
	X[1868]=3380;
	X[1869]=-8690;
	X[1870]=1073;
	X[1871]=11012;
	X[1872]=-1893;
	X[1873]=-7189;
	X[1874]=4537;
	X[1875]=-3175;
	X[1876]=-6808;
	X[1877]=1197;
	X[1878]=4523;
	X[1879]=-10814;
	X[1880]=890;
	X[1881]=-7343;
	X[1882]=-8873;
	X[1883]=9935;
	X[1884]=-6229;
	X[1885]=1549;
	X[1886]=-1923;
	X[1887]=4069;
	X[1888]=-7130;
	X[1889]=-4486;
	X[1890]=20270;
	X[1891]=-9533;
	X[1892]=-3073;
	X[1893]=3204;
	X[1894]=-4244;
	X[1895]=355;
	X[1896]=-245;
	X[1897]=10367;
	X[1898]=-7804;
	X[1899]=2860;	
	X[1900]=1117;
	X[1901]=-8807;
	X[1902]=9650;
	X[1903]=-1776;
	X[1904]=-1425;
	X[1905]=-2384;
	X[1906]=-5241;
	X[1907]=2091;
	X[1908]=-275;
	X[1909]=150;
	X[1910]=465;
	X[1911]=-1622;
	X[1912]=-4611;
	X[1913]=2216;
	X[1914]=897;
	X[1915]=765;
	X[1916]=787;
	X[1917]=1717;
	X[1918]=531;
	X[1919]=-1505;
	X[1920]=8060;
	X[1921]=-3512;
	X[1922]=450;
	X[1923]=4091;
	X[1924]=-7474;
	X[1925]=-187;
	X[1926]=3080;
	X[1927]=2596;
	X[1928]=-5709;
	X[1929]=1388;
	X[1930]=-1600;
	X[1931]=-6603;
	X[1932]=6112;
	X[1933]=-4252;
	X[1934]=-853;
	X[1935]=1739;
	X[1936]=-2120;
	X[1937]=-714;
	X[1938]=824;
	X[1939]=33;
	X[1940]=-2296;
	X[1941]=5709;
	X[1942]=2714;
	X[1943]=-1820;
	X[1944]=5643;
	X[1945]=5775;
	X[1946]=-209;
	X[1947]=1190;
	X[1948]=4340;
	X[1949]=2128;
	X[1950]=223;
	X[1951]=216;
	X[1952]=4120;
	X[1953]=-1498;
	X[1954]=-7921;
	X[1955]=2223;
	X[1956]=-2106;
	X[1957]=-6486;
	X[1958]=450;
	X[1959]=-48;
	X[1960]=-5438;
	X[1961]=-3739;
	X[1962]=1124;
	X[1963]=-5629;
	X[1964]=-3461;
	X[1965]=773;
	X[1966]=-3358;
	X[1967]=3820;
	X[1968]=2523;
	X[1969]=-1864;
	X[1970]=4318;
	X[1971]=5094;
	X[1972]=-2311;
	X[1973]=-3182;
	X[1974]=4896;
	X[1975]=1381;
	X[1976]=-3102;
	X[1977]=2655;
	X[1978]=1798;
	X[1979]=-2391;
	X[1980]=-758;
	X[1981]=612;
	X[1982]=-714;
	X[1983]=-2567;
	X[1984]=348;
	X[1985]=-1703;
	X[1986]=-2304;
	X[1987]=2421;
	X[1988]=-670;
	X[1989]=-1176;
	X[1990]=883;
	X[1991]=-1249;
	X[1992]=-2157;
	X[1993]=4471;
	X[1994]=4611;
	X[1995]=-2230;
	X[1996]=5138;
	X[1997]=7225;
	X[1998]=853;
	X[1999]=1908;	
	X[2000]=4735;
	X[2001]=6918;
	X[2002]=326;
	X[2003]=428;
	X[2004]=3431;
	X[2005]=-2033;
	X[2006]=-875;
	X[2007]=-1791;
	X[2008]=55;
	X[2009]=-985;
	X[2010]=-1989;
	X[2011]=2025;
	X[2012]=-1242;
	X[2013]=619;
	X[2014]=201;
	X[2015]=-187;
	X[2016]=1468;
	X[2017]=-516;
	X[2018]=143;
	X[2019]=11;
	X[2020]=2552;
	X[2021]=-3373;
	X[2022]=-1095;
	X[2023]=3563;
	X[2024]=-2428;
	X[2025]=50;
	X[2026]=1175;
	X[2027]=77;
	X[2028]=-172;
	X[2029]=1234;
	X[2030]=1417;
	X[2031]=-1725;
	X[2032]=157;
	X[2033]=-2633;
	X[2034]=-3058;
	X[2035]=-809;
	X[2036]=-2377;
	X[2037]=289;
	X[2038]=392;
	X[2039]=4;
	X[2040]=311;
	X[2041]=-1534;
	X[2042]=-692;
	X[2043]=1190;
	X[2044]=926;
	X[2045]=-1102;
	X[2046]=-575;
	X[2047]=1278;
 	for(i = 0 ; i<0x104;i++)
	{
		uart[i] = 0;
		uarts[i] = 0;
	}
 	for(i=0;i<0x100;i++)
	{
		calresult[i]=0;
	}
	for(i=0;i<0x400;i++)
	{
		sramread[i]=0;
	}	
	/*获取有效的串口句柄*/
	uart_b = uart_open(UART_B);
	/*初始化串口*/
	uart_setup(uart_b,    /*串口A*/
			   buad_19k2,  /*串口的波特率设置*/
			   data_w8,   /*数据长度为8*/ 
			   data_s1,   /*数据停止位为1*/ 
			   //uart_parity,    /*设置奇较验位*/	 
			   0,
			   (fifo_enable+fifo_txdip16+fifo_rxdip16),/*FIFO设置*/ 
			   0);       /*设置自闭环方式*/		   
	/*关闭系统的串口中断*/
	sysint_enable(0x0);
	
	/*清空fifo*/
	while(uartnull ==0)
	{
		if((uart_read_reg(uart_b,lsr) & 0x1) == 1)
		{
			uart_read_reg(uart_b,rhr);
		} 
		else
		{
			uartnull = 1;
		}
	}
	
	/*打开codec数据接口*/
	codec_data = codec_open(CODEC_DATA);
	/*打开codec命令接口*/
	codec_command = codec_open(CODEC_COMMAND);
	/*选择麦克风,或是LINE作为输入,这里选择LINE*/
	codec_analog_mode(codec_command,0x12);
	/*设置波特率,输入与输出均为8K*/
	codec_sample_rate(codec_command,0xd);
	/*修改其它参数请参看dec5416.c关于CODE的初始化的部分*/
	/*配置系统存储器*/	
loop:
	memory_set(0x80);
	sramaddr = 0x8000;	
	for(i =0; i<0x800;i++)
	{	
		/* Wait for sample from handset */
		while (!MCBSP_RRDY(CODEC_DATA)) {};
		/* Read sample from and write back to handset codec */
		audiodata = *(volatile u16*)DRR1_ADDR(CODEC_DATA);
		*(volatile u16*)DXR1_ADDR(CODEC_DATA) = audiodata;
		*(unsigned int *)sramaddr++ = audiodata;
		//X[i]=audiodata;
	}			
	/*填写第二页*/
	memory_set(0x81);
	sramaddr = 0x8000;
	for(i =0; i<0x8000;i++)
	{
		*(unsigned int *)sramaddr++ = i+1;
	}


	/*修改页控制器,查看每页填的数据是否正确*/
	//memory_set(0x80);
	//memory_set(0x81);
	/*将Sram映射到程序空间的0x100000处*/
	memory_set(0xa0);
	/*读回头0x100个数据,观察是否正确*/
	progm_readm(srampaddr,&sramread[0],0x400);
//	progm_readm( (srampaddr+0x8000),&sramread[0],0x400);

	/*将读取的数进行计算*/
	memory_set(0x81);
	sramaddr = 0x8000;
	calresult[0]=2*sramread[0]+4*sramread[1];
	*(unsigned int *)sramaddr++ = calresult[0];
	asm(" nop ");
	/*通过串口B发送计算结果*/
	uart_send_sigle(uart_b ,calresult[0]);
		
	asm(" nop ");
	
	
	for (i=0;i<1024;i++)
	{
    	X11[i]=X[2*i+1];
    	X21[i]=X[2*i];
	}
	for (j=0;j<1023;j++)
	{
    	d1[j]=X11[j]-(X21[j]+X21[j+1])/2;            //一次分解细节信号
	}
    	d1[1023]=X11[1023]-(X21[1023]+X21[0])/2;
    //for(i=0;i<5555;i++)
    	

	for (i=1;i<1024;i++)
	{
    	c1[i]=X21[i]+(d1[i]+d1[i-1])/4;         //一次分解逼近信号
	}
    	c1[0]=X21[0]+(d1[0]+d1[1023])/4;
    	a=d1[1]+d1[0];
//二次剖分
	for (i=0;i<512;i++)
	{
    	X12[i]=c1[2*i+1];
    	X22[i]=c1[2*i];
	}
	for (j=0;j<511;j++)
	{
    	d2[j]=X12[j]-(X22[j]+X22[j+1])/2;            //二次分解细节信号
	}
    	d2[511]=X12[511]-(X22[511]+X22[0])/2; 

	for (i=1;i<512;i++)
	{
	    c2[i]=X22[i]+(d2[i]+d2[i-1])/4;         //二次分解逼近信号
	}
    	c2[0]=X22[1]+(d2[0]+d2[511])/4;
 
//三次剖分
	for (i=0;i<256;i++)
	{
    	X13[i]=c2[2*i+1];
    	X23[i]=c2[2*i];
	}
	for (j=0;j<255;j++)
	{
    	d3[j]=X13[j]-(X23[j]+X23[j+1])/2;            //三次分解细节信号
	}
    	d3[255]=X13[255]-(X23[255]+X23[0])/2; 

	for (i=1; i<256; i++)
	{
    	c3[i]=X23[i]+(d3[i]+d3[i-1])/4;         //三次分解逼近信号
	}
    	c3[0]=X23[0]+(d3[0]+d3[255])/4; 

//四次剖分
	for (i=0;i<128;i++)
	{
    	X14[i]=c3[2*i+1];
    	X24[i]=c3[2*i];
	}
	for (j=0;j<127;j++)
	{
    	d4[j]=X14[j]-(X24[j]+X24[j+1])/2;            //四次分解细节信号
	}
    	d4[127]=X14[127]-(X24[127]+X24[0])/2; 

	for (i=1;i<=127;i++)
	{
    	c4[i]=X24[i]+(d4[i]+d4[i-1])/4;         //四次分解逼近信号
	}
    	c4[0]=X24[0]+(d4[0]+d4[127])/4;

//五次剖分
	for (i=0;i<64;i++)
	{
    	X15[i]=c4[2*i+1];
    	X25[i]=c4[2*i];
	}
	for (j=0;j<63;j++)
	{
    	d5[j]=X15[j]-(X25[j]+X25[j+1])/2;            //四次分解细节信号
	}
    	d5[63]=X15[63]-(X25[63]+X25[0])/2;  

	for (i=1;i<=63;i++)
	{
    	c5[i]=X25[i]+(d5[i]+d5[i-1])/4;         //四次分解逼近信号
    }
    	c5[0]=X25[0]+(d5[0]+d5[63])/4; 

//计算中值
	for (i=0;i<1024;i++)
    {
    	d11[i]=abs(d1[i]);
	}
	for (i=0;i<1024;i++)
	{
    	for (j=i+1;j<1024;j++)
    	{
        	if (d11[i]>d11[j])
        	{
            	a=d11[j];
            	d11[j]=d11[i];
            	d11[i]=a;
            }
        	else
            	d11[i]=d11[i];
        }
	}
	M1=(d11[511]+d11[512])/2;
 
	for (i=0;i<512;i++)
	{
    	d21[i]=abs(d2[i]);
	}
	for (i=0;i<512; i++)
	{
    for (j=i+1;j<512;j++)
    	{
        if (d21[i]>d21[j])
        {
            a=d21[j];
            d21[j]=d21[i];
            d21[i]=a;
         }
        else
            d21[i]=d21[i];
    	}
	}
	M2=(d21[255]+d21[256])/2;
 
	for (i=1;i<256;i++)
		{
	    d31[i]=abs(d3[i]);
		}
	for (i=0;i<256;i++)
	{
	    for (j=i+1;j<256;j++)
	    {
	        if (d31[i]>d31[j])
	        {
	            a=d31[j];
	            d31[j]=d31[i];
	            d31[i]=a;
	         }
	        else
	            d31[i]=d31[i];
	    }
	}
	M3=(d31[127]+d31[128])/2;


	for (i=0;i<128;i++)
	{
	    d41[i]=abs(d4[i]);
	}
	for (i=0;i<128;i++)
	{
	    for (j=i+1;j<128;j++)
	    {
	        if (d41[i]>d41[j])
	        {
	            a=d41[j];
	            d41[j]=d41[i];
	            d41[i]=a;
	        }
	        else
	            d41[i]=d41[i];
	    }
	}
	M4=(d41[64]+d41[65])/2;

	for (i=0;i<64;i++)
	{
	    d51[i]=abs(d5[i]);
	}
	for (i=0;i<64;i++)
	{
	    for (j=i+1;j<=64;j++)
	    {
	        if (d51[i]>d51[j])
	        {
	            a=d51[j];
	            d51[j]=d51[i];
	            d51[i]=a;
	         }
	        else
	            d51[i]=d51[i];
	    }
	}
	M5=(d51[32]+d51[33])/2;
	asm(" nop ");
	asm(" nop ");
	asm(" nop ");

//阈值处理
	M1=M1/10*55;
	M2=M2/10*52;
	M3=M3/10*49;
	M4=M4/10*46;
	M5=M5/10*43;
	for (i=0;i<1024;i++)            //第一层分解的细节信号
	    {
		    if (d1[i]>M1)
		        d1[i]=d1[i]-M1;
		    if  (d1[i]<-M1)
		            d1[i]=d1[i]+M1;
		    else
		            d1[i]=0;
		}	
	
	for (i=0;i<512;i++)           //第二层分解的细节信号
	    {
		    if (d2[i]>M2)
		        d2[i]=d2[i]-M2;
		    if (d2[i]<-M2)
		            d2[i]=d2[i]+M2;
		    else
		            d2[i]=0;
		}
	for (i=0;i<256;i++)           //第三层分解的细节信号
	   {
		     if (d3[i]>M3)
		        d3[i]=d3[i]-M3;
		     if (d3[i]<-M3)
		            d3[i]=d3[i]+M3;
		     else
		            d3[i]=0;
		}
	
	for (i=0;i<128;i++)           //第四层分解的细节信号
	    {
		    if (d4[i]>M4)
		        d4[i]=d4[i]-M4;
		    if (d4[i]<-M4)
		            d4[i]=d4[i]+M4;
		    else
		            d4[i]=0;
		}

	for (i=0;i<64;i++)           //第五层分解的细节信号
	    {
		    if (d5[i]>M5)
		        d5[i]=d5[i]-M5;
		    if (d5[i]<-M5)
		            d5[i]=d5[i]+M5;
		    else
		            d5[i]=0;
		}
		
//重构
	
	//五次剖分
	for (i=1;i<64;i++)
	{
	    Xe5[i]=c5[i]-(d5[i]+d5[i-1])/4;
	}
	    Xe5[0]=c5[0]-(d5[0]+d5[63])/4;
	
	for (j=0;j<63;j++)
	{
	    Xo5[j]=d5[j]+(Xe5[j]+Xe5[j+1])/2;              
	}
	    Xo5[63]=d5[63]+(Xe5[63]+Xe5[0])/2;
	
	for (i=0;i<64;i++)
	{
	    X5[2*i]=Xe5[i];
	    X5[2*i+1]=Xo5[i];
	}

	//四次剖分
	for (i=1;i<128;i++)
	{
	    Xe4[i]=X5[i]-(d4[i]+d4[i-1])/4;
	}
	    Xe4[0]=X5[0]-(d4[0]+d4[127])/4;
	    
	for (j=0;j<127;j++)
	{
	    Xo4[j]=d4[j]+(Xe4[j]+Xe4[j+1])/2;        
	}
	    Xo4[127]=d4[127]+(Xe4[127]+Xe4[0])/2;
	
	for (i=0;i<128;i++)
	{
	    X4[2*i]=Xe4[i];
	    X4[2*i+1]=Xo4[i];
	}
	
		//三次剖分
	for (i=1;i<256;i++)
	{
	    Xe3[i]=X4[i]-(d3[i]+d3[i-1])/4;
	}
	    Xe3[0]=X4[0]-(d3[0]+d3[255])/4;
	
	for (j=0;j<255;j++)
	{
	    Xo3[j]=d3[j]+(Xe3[j]+Xe3[j+1])/2;            
	}
	    Xo3[255]=d3[255]+(Xe3[255]+Xe3[0])/2;  
	
	for (i=0;i<256;i++)
	{
	    X3[2*i]=Xe3[i];
	    X3[2*i+1]=Xo3[i];
	}	
	
	//二次剖分
	for (i=1;i<512;i++)
	{
	    Xe2[i]=X3[i]-(d2[i]+d2[i-1])/4;
	}
	    Xe2[0]=X3[0]-(d2[0]+d2[511])/4;
	
	for (j=0;j<511;j++)
	{
	    Xo2[j]=d2[j]+(Xe2[j]+Xe2[j+1])/2;            
	}
	    Xo2[511]=d2[511]+(Xe2[511]+Xe2[0])/2;  
	
	for (i=0;i<512;i++)
	{
	    X2[2*i]=Xe2[i];
	    X2[2*i+1]=Xo2[i];
	}	
	
	//第一次剖分
	for (i=1;i<1024;i++)
	{
	    Xe1[i]=X2[i]-(d1[i]+d1[i-1])/4;
	}
	    Xe1[0]=X2[0]-(d1[0]+d1[1023])/4;
	
	for (j=0;j<1023;j++)
	{
	    Xo1[j]=d1[j]+(Xe1[j]+Xe1[j+1])/2;            
	}
	    Xo1[1023]=d1[1023]+(Xe1[1023]+Xe1[0])/2;  
	
	for (i=0;i<1024;i++)
	{
	    X1[2*i]=Xe1[i];
	    X1[2*i+1]=Xo1[i];
	}	
	//asm(" nop ");
	for (i=0;i<4444;i++)
goto loop;
//	memory_set(0xa0);
//	progm_readm( (srampaddr+0x8000),&sramread[0],0x400);
//	memory_set(0x81);
//	*(unsigned int *)sramaddr++ = 11;
//	memory_set(0xa0);
//	progm_readm( (srampaddr+0x8000),&sramread[0],0x400);

}

⌨️ 快捷键说明

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