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

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

?? iis.c

?? 三星S3C2440 IIS控制器驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*=================================================

	File Name: Iis.c
	Description: S3C2440A IIS controller Function Test
   	Version: 0.1 

   	History:
             0.0: 2002. 03. 06, Programming Start by SOP.
             0.1: 2004. 02. 04, Modified by Y. H. Lee.
		  - IIS Master Tx: Play Sample Wave File.
		  - IIS Master Rx: Record Sound using MIC and Play it.
		  - IIS maser clock selection is supported.
		  
===================================================*/

#include "2440addr.h"
#include "2440lib.h"
#include "def.h"
#include "iis.h"
//lzd add
#include "WindowsXP_Wav.h"		//長度為243552個字節

#define REC_LEN_IIS 0x200000	
#define PLAY_IIS    0
#define RECORD_IIS  1
 
//#define DataCount   0x10000     //IIS Master/Slave Data Rx/Tx Count
//#define DataDisplay 0x100		//IIS Master Data Display Count
//#define PollMode    0	     	//Polling Mode
//#define DMA2Mode    1	//DMA2 Mode

#define L3C (1<<4)		  //GPB4 = L3CLOCK
#define L3D (1<<3)		  //GPB3 = L3DATA
#define L3M (1<<2)		  //GPB2 = L3MODE

char which_Buf = 1;
char Rec_Done = 0;
char mute = 1;
char IIS_MasterClk_Sel = 0; 

unsigned char *rec_buf;
unsigned char  *Buf,*_temp;
unsigned int size, fs; 
unsigned int save_B, save_E, save_PB, save_PE;

U32 downloadAddress=0x31000000;

//extern U32 downloadFileSize;

float IIS_Codec_CLK;

void	ChangeDMA2(void);
void IIS_Port_Init(void);
void IIS_Port_Return(void);
void Download_Wave_File(void);

void Select_IIS_Master_CLK(void);
void IIS_RecSound_DMA1(unsigned char *start_addr, U32 rec_size);
void IIS_PlayWave_DMA2(unsigned char *start_addr, U32 play_size);

void _WrL3Addr(U8 data);
void _WrL3Data(U8 data,int halt);

void __irq DMA1_Rec_Done(void);
void __irq DMA2_Done(void);
void __irq RxInt(void);
void __irq Muting(void);

void * func_iis_test[][2]=
{	
	//IIS Function Test Item
	(void *)Play_Wave_Iis,		"Play Wave File. ",
    	(void *)Record_Sound_Iis,		"Record Sound via MIC and Play it. ",
    	0,0
};

void IIS_Test(void)
{
	int i;
		
	while(1)
	{
		i=0;
		Uart_Printf("\n\n================== IIS Function Test ==================\n\n");
		
		while(1)
		{   //display menu
			Uart_Printf("%2d:%s",i,func_iis_test[i][1]);
			i++;
			if((int)(func_iis_test[i][0])==0)
			{
				Uart_Printf("\n");
				break;
			}
			if((i%4)==0)
			Uart_Printf("\n");
		}
		Uart_Printf("\n=======================================================\n");
		Uart_Printf("\nPress Enter key to exit : ");
		i = Uart_GetIntNum();
		if(i==-1) break;		// return.
		if(i>=0 && (i<((sizeof(func_iis_test)-1)/8)) )	// select and execute...
			( (void (*)(void)) (func_iis_test[i][0]) )();
	}
	
	//Uart_Printf("\n====== IIS Test program end ======\n");
}

//Play Wave File
void Play_Wave_Iis(void)
{
	unsigned char *buf;
	unsigned int i;
	unsigned int downloadSize = 243552;
	
	Uart_Printf("\nPlay Wave File.\n");

    	IIS_Port_Init();
    	Select_IIS_Master_CLK();

	if(1)
	{
		downloadAddress = _NONCACHE_STARTADDRESS;
		buf = (unsigned char *)downloadAddress ;
		for( i = 0; i < 243552; i++ )  buf[i] = WindowsXP_Wav[i] ;
		
	}
	else
	{
		Download_Wave_File();
	}
	Init1341(PLAY_IIS);
	//IIS_PlayWave_DMA2(Buf + 0x30, size);
	IIS_PlayWave_DMA2(buf, downloadSize);
	IIS_Port_Return();
    
    	mute = 1;
}

//Record Sound using MIC
void Record_Sound_Iis(void)
{
	
	Uart_Printf("\nRecord Sound via MIC.\n");

    	IIS_Port_Init(); 
	Select_IIS_Master_CLK();
	
	Init1341(RECORD_IIS);

	rec_buf = (unsigned char *)0x31000000;
	IIS_RecSound_DMA1(rec_buf, REC_LEN_IIS);

      	////////////////////////////////////////////////////////////////////////
	
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, REC_LEN_IIS);

	IIS_Port_Return();
	
	mute = 1;
}


/* Sub-Routines */ 

//Setting Port related to IIS  
void IIS_Port_Init(void)
{
	save_B  = rGPBCON;	 
    	save_E  = rGPECON;	 
    	save_PB = rGPBUP;
    	save_PE = rGPEUP;
    	
	//----------------------------------------------------------
	//   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 & ~(0x3f<<4) | (0x15<<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)  | 0x1f;    //The pull up function is disabled GPE[4:0] 1 1111
    	rGPECON = rGPECON & ~(0x3ff) | 0x2aa;   //GPE[4:0]=I2SSDO:I2SSDI:CDCLK:I2SSCLK:I2SLRCK

    	rGPFUP   = ((rGPFUP   & ~(1<<0)) | (1<<0));     //GPF0
    	rGPFCON  = ((rGPFCON  & ~(3<<0)) | (1<<1));     //GPF0=EINT0    
    	rEXTINT0 = ((rEXTINT0 & ~(7<<0)) | (2<<0));     //EINT0=falling edge triggered  
}

void IIS_Port_Return(void)
{
	rGPBCON = save_B;
    	rGPECON = save_E;
    	rGPBUP  = save_PB;
    	rGPEUP  = save_PE;
}

void Download_Wave_File(void)
{
	unsigned int temp;
	
    	pISR_UART1 = (unsigned)RxInt;

    	rINTMSK    = ~(BIT_UART1);
    	rINTSUBMSK = ~(BIT_SUB_RXD1);

    	//Non-cacheable area = 0x31000000 ~ 0x33feffff
    	Buf   = (unsigned char *)0x31000000;
    	_temp = Buf;

       Uart_Printf("\n\nDownload the PCM(no ADPCM) file by DNW serial port(With header)!!\n");
       Uart_Printf("Download Start Address: 0x%x\n", Buf);

       while(((unsigned int)_temp - (unsigned int)Buf) < 4)
       {
   	 	Led_Display(0);
   	  	Delay(1500);
   	  	Led_Display(15);
   		Delay(1500);
       }
       
       size = *(Buf) | *(Buf + 1)<<8 | *(Buf + 2)<<16 | *(Buf + 3)<<24;
       Uart_Printf("\nNow, Downloading... [ File Size : %7d  	    0]", size);
	temp =size;
      
    	while(((unsigned int)_temp - (unsigned int)Buf) < size) 
    	{
	  	Uart_Printf("\b\b\b\b\b\b\b\b%7d ",(unsigned int)_temp - (unsigned int)Buf);
		Delay(5000);
    	}
    	Uart_Printf("\b\b\b\b\b\b\b\b%7d ]\n",(unsigned int)_temp - (unsigned int)Buf);

	rINTSUBMSK |= BIT_SUB_RXD1;
   
       size = *(Buf + 0x2c) | *(Buf + 0x2d)<<8 | *(Buf + 0x2e)<<16 | *(Buf + 0x2f)<<24;
       size = (size>>1)<<1;
       //size = temp -0x30;

       fs   = *(Buf + 0x1c) | *(Buf + 0x1d)<<8 | *(Buf + 0x1e)<<16 | *(Buf + 0x1f)<<24;

       Uart_Printf("PCM File Size = %d\n", size);
       Uart_Printf("Sampling Frequency of PCM data = %d Hz\n", fs);

}

void IIS_RecSound_DMA1(unsigned char *start_addr, U32 rec_size)
{
	pISR_DMA1  = (unsigned)DMA1_Rec_Done;

	if (IIS_MasterClk_Sel == 0)	//IIS Master Clock Source = PCLK
      	{
      		rIISCON = (1<<4) + (1<<3) + (1<<1);	   
      		//Bit[1]    IIS prescaler enable
		//Bit[3]    Tx idle 
      		//Bit[4]    Rx DMA enable 
    		rIISMOD = (0<<9)+(0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);
    		//Bit[1:0] Serial bit clock => 32fs,
    		//Bit[2]    Master clock => 384fs, 
    		//Bit[3]    Serial data bit per channel => 16bit,
    		//Bit[4]    Serial interface format => IIS compatible format
    		//Bit[5]    Active level of left/right channel => Low for left channel
    		//Bit[7:6] Tx/Rx mode select => Rx mode
    		//Bit[8]    Master/Slave mode => Master mode
    		//Bit[9]    Master clock => PCLK
    		rIISFCON = (1<<14) + (1<<12);	  
    		//Bit[13]  Rx FIFO enable
		//Bit[15]  Rx FIFO access mode => DMA   
		
		Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/384);
      	}
      	else	   //IIS Master Clock Source = MPLLin
      	{
		rIISCON = (1<<4) + (1<<3) + (1<<1);	   
      		//Bit[1]    IIS prescaler enable
		//Bit[3]    Tx idle 
      		//Bit[4]    Rx DMA enable 
    		rIISMOD = (0<<9)+(0<<8) + (1<<6) + (0<<5) + (0<<4) + (1<<3) + (1<<2) + (1<<0);
    		//Bit[1:0] Serial bit clock => 32fs,
    		//Bit[2]    Master clock => 384fs, 
    		//Bit[3]    Serial data bit per channel => 16bit,
    		//Bit[4]    Serial interface format => IIS compatible format
    		//Bit[5]    Active level of left/right channel => Low for left channel
    		//Bit[7:6] Tx/Rx mode select => Rx mode
    		//Bit[8]    Master/Slave mode => Master mode
    		//Bit[9]    Master clock => PCLK
    		rIISFCON = (1<<14) + (1<<12);	  
    		//Bit[13]  Rx FIFO enable
		//Bit[15]  Rx FIFO access mode => DMA   

		Uart_Printf("\nIISLRCK = %d Hz", (int) IIS_Codec_CLK/384);
      	}

 	rINTMSK = ~(BIT_DMA1);

	//--- DMA1 Initialize
       rDISRCC1 = (1<<1) + (1<<0);   
       rDISRC1  = ((U32)IISFIFO);    
       rDIDSTC1 = (0<<1) + (0<<0);     
       rDIDST1  = (int)start_addr;                            
       rDCON1   = (1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(1<<20)+(rec_size/2);
       rDMASKTRIG1 = (0<<2) + (1<<1) + 0;    //No-stop, DMA1 channel on, No-sw trigger

	Uart_Printf("\n\nAre you ready to record voice via MIC on SMDK2440?");
       Uart_Printf("\nPress any key to start record!\n");
       Uart_Getch();
       Uart_Printf("Recording...\n");
   
   	//IIS Rx start
       rIISCON |= 0x1;
   
       while(!Rec_Done)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色性网站| 粉嫩av一区二区三区在线播放| 91亚洲午夜精品久久久久久| 国产欧美日韩卡一| 成人网页在线观看| 国产精品高清亚洲| 99re成人精品视频| 一区二区三区中文在线观看| 欧美视频一区在线| 日韩国产精品久久久久久亚洲| 91精品国产乱码久久蜜臀| 日本怡春院一区二区| 精品sm在线观看| 国产成人精品影视| 一区二区三区中文在线观看| 欧美电影在哪看比较好| 激情综合网最新| 国产亚洲精品久| 色婷婷综合久久久中文一区二区 | 国产**成人网毛片九色| 成人免费一区二区三区在线观看| 色综合久久综合中文综合网| 日韩黄色免费网站| 久久综合九色综合欧美亚洲| 成人91在线观看| 亚洲综合免费观看高清在线观看| 91精品在线一区二区| 国产毛片精品国产一区二区三区| 亚洲乱码国产乱码精品精98午夜| 777午夜精品免费视频| 国产精品77777| 综合久久久久久久| 91麻豆精品一区二区三区| 精品国产免费一区二区三区四区 | 中文字幕第一区| 国产精品欧美久久久久一区二区| 日产精品久久久久久久性色| 91年精品国产| 日韩午夜激情av| 国产成人日日夜夜| 亚洲成人综合在线| 中文字幕不卡在线观看| 欧美精品99久久久**| 播五月开心婷婷综合| 热久久一区二区| 亚洲日本韩国一区| 精品久久人人做人人爰| 99国产精品国产精品毛片| 麻豆国产精品官网| 亚洲午夜在线电影| 国产日韩v精品一区二区| 欧美丰满美乳xxx高潮www| 福利一区福利二区| 午夜电影久久久| 国产精品系列在线| 日韩欧美不卡在线观看视频| 在线观看亚洲成人| 大尺度一区二区| 精品一区二区在线免费观看| 亚洲第一二三四区| 亚洲美女区一区| 中文字幕欧美国产| 精品少妇一区二区三区日产乱码| 欧美日韩中文字幕一区| 91麻豆免费观看| 99久久久久久| www.亚洲人| 国产成人精品aa毛片| 国内久久婷婷综合| 美女被吸乳得到大胸91| 免费视频最近日韩| 五月综合激情婷婷六月色窝| 一区二区不卡在线播放| 一区二区三区在线视频观看58| 亚洲视频一区二区免费在线观看| 久久久亚洲高清| 久久色.com| 国产午夜精品福利| 国产无遮挡一区二区三区毛片日本 | 亚洲精品一线二线三线无人区| 欧美日韩久久久| 欧洲精品一区二区三区在线观看| 色婷婷av一区二区| 色综合视频在线观看| 91高清视频在线| 色婷婷香蕉在线一区二区| 日本丰满少妇一区二区三区| 色噜噜狠狠色综合欧洲selulu| 一本大道久久a久久综合婷婷| 色婷婷精品久久二区二区蜜臀av| 色综合久久久久网| 欧美色网一区二区| 日韩一区二区在线观看| 日韩欧美中文字幕一区| 久久久噜噜噜久久人人看| 国产欧美精品区一区二区三区| 国产三级精品三级在线专区| 久久综合色8888| 国产精品午夜在线观看| 亚洲欧美电影一区二区| 首页欧美精品中文字幕| 久久66热偷产精品| 成人综合婷婷国产精品久久蜜臀| 一本一本久久a久久精品综合麻豆| 日本精品裸体写真集在线观看| 欧美日韩精品一区视频| 久久亚区不卡日本| 国产精品伦一区| 亚洲va欧美va天堂v国产综合| 免费的国产精品| 丁香一区二区三区| 91久久香蕉国产日韩欧美9色| 8v天堂国产在线一区二区| 久久免费看少妇高潮| ㊣最新国产の精品bt伙计久久| 亚洲国产精品久久艾草纯爱| 久久国产婷婷国产香蕉| 国产成人精品aa毛片| 欧美三级欧美一级| 久久久久国产成人精品亚洲午夜| 亚洲同性同志一二三专区| 免费精品视频最新在线| 成人开心网精品视频| 欧美日韩国产三级| 国产三级精品三级在线专区| 亚洲成人av免费| 成人99免费视频| 日韩一区二区免费在线电影| 中文字幕色av一区二区三区| 免费国产亚洲视频| 91麻豆高清视频| 精品久久久久久久久久久院品网 | 26uuu国产日韩综合| 亚洲美女视频一区| 国产麻豆精品95视频| 欧美性生活一区| 国产欧美久久久精品影院| 五月天一区二区三区| k8久久久一区二区三区| 欧美va亚洲va国产综合| 亚洲精品美国一| 成人深夜视频在线观看| 日韩欧美一级片| 亚洲成人黄色小说| 91国偷自产一区二区三区成为亚洲经典| 精品国产一区二区亚洲人成毛片| 亚洲一区二区三区三| 99麻豆久久久国产精品免费优播| 精品久久久久久亚洲综合网| 亚洲mv大片欧洲mv大片精品| 99久久精品国产网站| 中文字幕av资源一区| 麻豆91小视频| 欧美精选午夜久久久乱码6080| 亚洲日本一区二区| 国产精品综合二区| 日韩欧美中文字幕精品| 琪琪久久久久日韩精品| 欧美日韩免费在线视频| 亚洲另类春色校园小说| 成人午夜在线播放| 国产人久久人人人人爽| 国内精品国产成人国产三级粉色| 欧美另类videos死尸| 亚洲一二三区在线观看| 日本精品一区二区三区四区的功能| 国产精品乱码一区二区三区软件| 国产剧情av麻豆香蕉精品| 日韩欧美成人午夜| 精品一区二区三区蜜桃| 欧美tk—视频vk| 韩国三级中文字幕hd久久精品| 欧美电影精品一区二区| 精久久久久久久久久久| 欧美videos大乳护士334| 久久99热99| 久久免费国产精品| 成人av在线一区二区| 中文字幕中文字幕在线一区| 一本在线高清不卡dvd| 亚洲伊人色欲综合网| 欧美性受极品xxxx喷水| 日韩高清一区在线| 精品国产3级a| 国产成人免费9x9x人网站视频| 国产日产欧美一区二区三区 | 91色在线porny| 一区二区三区日韩在线观看| 在线欧美小视频| 亚洲444eee在线观看| 日韩一区二区电影在线| 精品一区免费av| 国产精品久久久久婷婷| 欧美主播一区二区三区| 日本欧美一区二区三区乱码| 久久欧美中文字幕| youjizz国产精品| 亚洲妇女屁股眼交7| 欧美大白屁股肥臀xxxxxx| 岛国精品一区二区|