亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iis_test.c

?? 2410開發板實現 IIS音頻錄入
?? C
字號:
/*********************************************************************************************
* File:	iis.c
* Author:	embest	
* Desc:	IIS sound circuit code
* History:	
*********************************************************************************************/

/*------------------------------------------------------------------------------------------*/
/*	 								include files						 				    */
/*------------------------------------------------------------------------------------------*/
#include "2410lib.h"
#include "iis_test.h"

/*------------------------------------------------------------------------------------------*/
/*	 								constant define						 				    */
/*------------------------------------------------------------------------------------------*/
#define PLAY 		0
#define RECORD 		1
#define REC_LEN		0xf0000
#ifdef BOARDTEST_EXH
#undef BOARDTEST
#endif	

/*------------------------------------------------------------------------------------------*/
/*	 								extern variables						 			    */
/*------------------------------------------------------------------------------------------*/
extern const UINT8T g_ucWave[155760];

/*------------------------------------------------------------------------------------------*/
/*	 								global variables						 			    */
/*------------------------------------------------------------------------------------------*/
int   f_nDMADone_1;
int   f_nDMADone_2;
/*********************************************************************************************
* name:		iis_test
* func:		Test IIS circuit
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void iis_test(void)
{
	UINT8T	ucInput;
	int nSoundLen=155956;
	
	uart_printf("\n IIS test example\n");
    iis_init();							// initialize IIS

    uart_printf(" Menu(press digital to select):\n");
    uart_printf(" 1: play wave file \n");
    uart_printf(" 2: record and play\n");
    
	g_nKeyPress = 1;					// only for board test to select and exit
	while((ucInput != '1') & (ucInput != '2'))
	{
   		ucInput = uart_getkey();
   		if(g_nKeyPress!=1)				// SB1202/SB1203 to exit board test
   		{
   			ucInput='1';				// any select "Play wav"
   			break;
   		}
	};
	
	uart_printf(" %c\n",ucInput);
	if(ucInput == 0x31)
	{
#ifndef BOARDTEST
		memcpy((void *)0x30200000, g_ucWave, nSoundLen);	
#endif
		iis_play_wave(1,(UINT8T *)0x30200000,nSoundLen);//		nSoundLen = 155956; 
	}
	if(ucInput == 0x32)
		iis_record();

	uart_printf(" end.\n");
    iis_close();						// close IIS
}

/*********************************************************************************************
* name:		iis_init
* func:		Initialize IIS circuit
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void iis_init(void)
{
	//----------------------------------------------------------
	//   PORT B GROUP
	//Ports  :   GPB4    GPB3   GPB2  
	//Signal :  L3CLOCK L3DATA L3MODE
	//Setting:   OUTPUT OUTPUT OUTPUT 
	//           [9:8]   [7:6}  [5:4]
	//Binary :     01  ,   01    01 
	//----------------------------------------------------------    
    rGPBUP  = rGPBUP  & ~(0x7<<2) | (0x7<<2);	//The pull up function is disabled GPB[4:2] 1 1100    
    rGPBCON = rGPBCON & ~((1<<9)|(1<<7)|(1<<5)) | (1<<8)|(1<<6)|(1<<4); //GPB[4:2]=Output(L3CLOCK):Output(L3DATA):Output(L3MODE)

	//----------------------------------------------------------
	//   PORT E GROUP
	//Ports  :  GPE4    GPE3   GPE2  GPE1    GPE0 
	//Signal : I2SSDO  I2SSDI CDCLK I2SSCLK I2SLRCK 
	//Binary :   10  ,   10     10 ,  10      10    
	//----------------------------------------------------------
    rGPEUP  = rGPEUP | 0x1f;    //The pull up function is disabled GPE[4:0] 1 1111
    rGPECON = rGPECON & ~((1<<8)|(1<<6)|(1<<4)|(1<<2)|(1<<0)) | (1<<9)|(1<<7)|(1<<5)|(1<<3)|(1<<1);
    //GPE[4:0]=I2SSDO:I2SSDI:CDCLK:I2SSCLK:I2SLRCK
	
	f_nDMADone_1= 0;
	f_nDMADone_2= 0;
	init_1341(PLAY);							// initialize philips UDA1341 chip
}

/*********************************************************************************************
* name:		iis_close
* func:		Close IIS circuit
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void iis_close()
{
    rIISCON  = 0x0;								// IIS stop
    rIISFCON = 0x0;							// For FIFO flush
	rINTMSK |= BIT_DMA2;						// Mask interrupt
	rINTMSK |= BIT_DMA1;
}

/*********************************************************************************************
* name:		iis_play_wave
* func:		play wave data
* para:		nTimes 	--	input, play times
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void iis_play_wave(int nTimes,UINT8T *pWavFile, int nSoundLen)
{
	int	i,j;	

	ClearPending(BIT_DMA2);						
	rINTMOD = 0x0;
	
	// initialize philips UDA1341 chip
	init_1341(PLAY);	

    // set BDMA interrupt
	pISR_DMA2 = (unsigned)dma2_done;
	rINTMSK  &= ~(BIT_DMA2);  //19位置0
 
 	for(i=nTimes; i!=0; i--)
	{
		// initialize variables
		f_nDMADone_2 = 0;
		
		//DMA2 Initialize
		rDISRCC2 = (0<<1) + (0<<0);             //AHB, Increment
		rDISRC2  = ((INT32T)(pWavFile));                    
		rDIDSTC2 = (1<<1) + (1<<0);             //APB, Fixed
		rDIDST2  = ((INT32T)IISFIFO);           //IISFIFO
		//rDCON1   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(1<<20)+REC_LEN/2;
		rDCON2   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(0<<24)+(1<<23)+(0<<22)+(1<<20)+nSoundLen/2;

		//Handshake, sync PCLK, TC int, single tx, single service, I2SSDO, I2S request, 
		//Auto-reload, half-word, size/2
		rDMASKTRIG2 = (0<<2)+(1<<1)+0;    		//No-stop, DMA2 channel on, No-sw trigger 

		//IIS Initialize
		//Master,Tx,L-ch=low,iis,16bit ch.,CDCLK=384fs,IISCLK=32fs
		rIISCON = (1<<5)+(0<<4)+(0<<3)+(1<<2)+(1<<1);
		//output mode, transmit mode, low for left channel, IIS compatible format, 16-BIt, 384fs, 32fs
		rIISMOD = (0<<8) + (2<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);      
		rIISPSR = (2<<5) + 2;            		//Prescaler_A/B=3 
	
		//Tx DMA enable,Rx DMA disable,Tx not idle,Rx idle,prescaler enable,stop
		rIISFCON = (1<<15) + (1<<13);       	//Tx DMA,Tx FIFO --> start piling....
	
	    rIISCON |= 0x1;             			// enable IIS   
	    while( f_nDMADone_2 == 0)      			// DMA end
	    {
	    j=rDSTAT2&0xfffff;	  
        uart_printf(" rDSTAT2=%d\n",j);  
		    	if(uart_getkey()){
			delay(10);
    		f_nDMADone_1 = 1;
    		//break;
    		}
        }

	    rINTMSK |= BIT_DMA2;	    
	    rIISCON = 0x0;    						// IIS stop
	}
}

/*********************************************************************************************
* name:		iis_record
* func:		record and play wave file
* para:		nTimes 	--	input, play times
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void iis_record(void)
{

	UINT8T * pRecBuf,ucInput;
	int nSoundLen;
    int i;
    
	// enable interrupt
	ClearPending(BIT_DMA1);						
	rINTMOD=0x0;

	//----------------------------------------------------------------//
	//						record									  //
	//----------------------------------------------------------------//
    uart_printf(" Start recording....\n");  
	
    pRecBuf = (unsigned char *)0x30200000; 		// for download
    for(i= (UINT32T)pRecBuf; i<((UINT32T)pRecBuf+REC_LEN+0x20000); i+=4)
    {
    	*((volatile unsigned int*)i)=0x0;    
	}

    init_1341(RECORD);

    // set BDMA interrupt
	f_nDMADone_1= 0;
    pISR_DMA1 = (unsigned)dma1_done;
    rINTMSK  &= ~(BIT_DMA1);

	//--- DMA1 Initialize
	rDISRCC1 = (1<<1) + (1<<0);            //IISFIFO     //APB, Fix  
	rDISRC1  = ((UINT32T)IISFIFO);              //IISFIFO
	rDIDSTC1 = (0<<1) + (0<<0);                 //AHB, Increment
	rDIDST1  = ((int)pRecBuf);                  
	//Handshake, sync APB, TC int, single tx, single service, I2SSDI, I2S Rx request, 
	//Off-reload, half-word, 0x50000 half word.
	rDCON1   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(1<<20)+REC_LEN/2;
	//No-stop, DMA1 channel on, No-sw trigger
	rDMASKTRIG1 = (0<<2) + (1<<1) + 0;    
	
	//IIS Initialize
	//Master,Rx,L-ch=low,IIS,16bit ch,CDCLK=384fs,IISCLK=32fs
	rIISCON = (0<<5) + (1<<4) + (1<<3) + (0<<2) + (1<<1);
	//master mode, receive mode, Low left, IIS compatible format, 16 bit, 384fs, 32fs
	rIISMOD = (0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);
	rIISPSR = (2<<5) + 2; 	
	//Tx DMA disable,Rx DMA enable,Tx idle,Rx not idle,prescaler enable,stop
	rIISFCON = (1<<14) + (1<<12);   			//Rx DMA,Rx FIFO --> start piling....
	rIISCON |= 0x1;             				// enable IIS   
    uart_printf(" Press any key to end recording\n");  

    while(f_nDMADone_1== 0)
    {
    	if(uart_getkey()){
			//delay(10);
    		f_nDMADone_1 = 1;
    		//break;
    		}
	}    
    rINTMSK |= BIT_DMA1;
    rIISCON = 0x0;								// IIS stop
    delay(10);

    uart_printf(" End of record!!!\n");
    uart_printf(" Press any key to play record data!!!\n");
    while(!uart_getkey());

	//----------------------------------------------------------------//
	//						play									  //
	//----------------------------------------------------------------//
	iis_play_wave(1,pRecBuf, REC_LEN);
    	    
    rINTMSK |= BIT_DMA1;
    rIISCON = 0x0;    							// IIS stop
    uart_printf(" Play end!!!\n");
}

/*********************************************************************************************
* name:		bdma0_done
* func:		BDMA0 interrupt handler
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void dma1_done(void)
{
int j;
j=rINTPND;
uart_printf(" interrupt accur!!!\n");
       uart_printf(" rINTPND=%d\n",j);  
 
	    rINTMSK |= BIT_DMA1;	
	ClearPending(BIT_DMA1);						// clear pending bit
    f_nDMADone_1 = 1;
}

void dma2_done(void)
{
int j;
j=rINTPND;
uart_printf(" interrupt accur!!!\n");
       uart_printf(" rINTPND=%d\n",j);  
 
	    rINTMSK |= BIT_DMA2;	
	ClearPending(BIT_DMA2);						// clear pending bit
    f_nDMADone_2 = 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天综合网天天看片| 九一九一国产精品| 欧美激情艳妇裸体舞| 日韩欧美激情在线| 日韩欧美电影一二三| 在线播放日韩导航| 欧美一级片在线| 日韩精品影音先锋| 国产亚洲欧洲一区高清在线观看| 精品久久一区二区| 久久久五月婷婷| 亚洲日本乱码在线观看| 亚洲欧洲韩国日本视频| 亚洲激情综合网| 日韩国产欧美三级| 黄色精品一二区| 成人av在线一区二区| 在线观看视频91| 日韩一本二本av| 国产人久久人人人人爽| 亚洲三级免费观看| 日韩国产成人精品| 国产精品一二二区| 色婷婷亚洲婷婷| 日韩一区二区精品在线观看| 精品国产乱码久久久久久免费 | av成人免费在线| 91日韩一区二区三区| 8x福利精品第一导航| 26uuu精品一区二区三区四区在线| 久久一二三国产| 亚洲精品乱码久久久久久久久 | 色老汉av一区二区三区| 91精品国产综合久久久久久| 精品久久免费看| 伊人色综合久久天天人手人婷| 日韩精品免费视频人成| 国产精品白丝av| 欧美日韩国产成人在线免费| 久久综合色婷婷| 亚洲永久精品国产| 国产精品伊人色| 欧美一区二区三区爱爱| 国产精品精品国产色婷婷| 日本特黄久久久高潮| 波多野结衣中文字幕一区| 日韩天堂在线观看| 国产精品国产三级国产有无不卡 | 欧美日韩视频在线观看一区二区三区| 精品国产免费久久| 婷婷开心久久网| 波多野结衣精品在线| 欧美电视剧在线观看完整版| 亚洲视频在线观看三级| 国产精品亚洲午夜一区二区三区| 欧美美女黄视频| 亚洲欧美日韩国产一区二区三区| 国产一区激情在线| 欧美丰满少妇xxxxx高潮对白 | 琪琪一区二区三区| 在线看日韩精品电影| 国产精品丝袜在线| 国产成人亚洲综合色影视| 日韩欧美自拍偷拍| 天堂午夜影视日韩欧美一区二区| 色欧美日韩亚洲| 国产精品热久久久久夜色精品三区 | 欧美手机在线视频| 国产精品电影院| 成人的网站免费观看| 久久伊人中文字幕| 国产一区二区三区四区五区美女| 欧美一二三在线| 视频一区欧美精品| 欧美日韩欧美一区二区| 一区二区高清视频在线观看| 日本久久一区二区| 亚洲色大成网站www久久九九| 99久久精品情趣| 亚洲人成影院在线观看| 99视频精品免费视频| 亚洲人快播电影网| 欧美性极品少妇| 天堂成人免费av电影一区| 欧美日韩视频一区二区| 日本三级韩国三级欧美三级| 日韩视频免费直播| 久久国产精品72免费观看| 欧美变态凌虐bdsm| 国产精品自拍毛片| 国产精品乱码人人做人人爱| av亚洲精华国产精华精华| 国产精品国产自产拍高清av王其| 不卡av在线网| 图片区小说区国产精品视频| 日韩一区和二区| 国产黄色精品网站| 亚洲视频一二区| 91精品国产综合久久福利软件| 美女诱惑一区二区| 国产精品每日更新在线播放网址| 91亚洲男人天堂| 日韩精品一区第一页| 久久久国产精品午夜一区ai换脸| 成人精品一区二区三区四区| 一区二区三区在线观看欧美 | 国产麻豆精品95视频| 国产精品成人在线观看| 欧美日韩亚洲综合在线 | 久久久久88色偷偷免费| av不卡免费在线观看| 日韩一区欧美二区| 国产精品免费网站在线观看| 欧美日本一道本在线视频| 国产一区在线不卡| 亚洲国产精品久久人人爱 | 粉嫩蜜臀av国产精品网站| 亚洲欧美一区二区三区国产精品 | 国产精品欧美一区喷水| 欧美精品一二三| 丁香婷婷综合网| 免费的国产精品| 一区二区三区波多野结衣在线观看| 精品黑人一区二区三区久久| 色先锋资源久久综合| 国产一区在线精品| 日本网站在线观看一区二区三区| 国产精品国产自产拍高清av| 日韩三级视频在线看| 欧美影院精品一区| 99久久99久久久精品齐齐| 国产美女视频91| 蜜乳av一区二区| 日本免费新一区视频| 亚洲自拍偷拍图区| 亚洲品质自拍视频网站| 国产精品日日摸夜夜摸av| 久久人人爽人人爽| 7799精品视频| 欧美日韩精品电影| 91国产免费看| 色噜噜狠狠成人中文综合| 成人毛片老司机大片| 成人综合在线观看| 粉嫩高潮美女一区二区三区| 麻豆成人久久精品二区三区红 | 色综合久久久久综合99| 成人免费视频视频| 国产**成人网毛片九色| 成人毛片老司机大片| 国产福利一区在线| 成人精品视频网站| 成人动漫精品一区二区| 成人av在线播放网址| 成人一区二区三区中文字幕| 成人综合婷婷国产精品久久 | 亚洲激情男女视频| 亚洲欧美国产三级| 一区二区三区自拍| 亚洲妇熟xx妇色黄| 蜜臀精品一区二区三区在线观看| 热久久国产精品| 极品少妇xxxx偷拍精品少妇| 久久成人免费日本黄色| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区二区看久久| 国产一区二区剧情av在线| 国产精品综合一区二区三区| 国产精品一区2区| 93久久精品日日躁夜夜躁欧美| jlzzjlzz亚洲女人18| 欧美影视一区二区三区| 69久久99精品久久久久婷婷| 日韩精品一区二区三区视频在线观看 | 成人伦理片在线| 在线亚洲人成电影网站色www| 欧美中文字幕久久| 欧美一区二区三区性视频| 国产天堂亚洲国产碰碰| 亚洲欧美偷拍另类a∨色屁股| 婷婷中文字幕综合| 国产在线一区二区| 91免费小视频| 日韩一二三区视频| 国产精品污污网站在线观看| 亚洲最色的网站| 蜜桃视频一区二区| 99久久精品免费| 日韩午夜在线播放| 一区二区三区国产精品| 免费在线观看一区| 97久久人人超碰| 欧美一区二区在线免费观看| 国产精品毛片高清在线完整版| 亚洲一区二区三区四区的| 激情欧美一区二区| 欧美日韩高清在线| 国产精品久久久久久亚洲毛片| 免费高清不卡av| 一本到一区二区三区|