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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? iis.c

?? 三星S3C2440 IIS控制器驅(qū)動程序
?? 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個字節(jié)

#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)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品精品亚洲| 欧美电影免费观看高清完整版在 | 久久在线免费观看| 国产精品欧美一级免费| 夜夜精品视频一区二区| 美女脱光内衣内裤视频久久影院| 国产一区二区三区电影在线观看| av一区二区三区黑人| 在线观看91精品国产入口| 精品少妇一区二区| 国产精品素人视频| 偷窥少妇高潮呻吟av久久免费| 国产在线精品国自产拍免费| aaa欧美大片| 91麻豆精品91久久久久久清纯 | 国产69精品久久777的优势| 91免费版在线| 精品久久久久久久久久久久久久久久久 | 一区在线中文字幕| 日韩成人免费在线| 成年人网站91| 7777精品伊人久久久大香线蕉超级流畅| 久久久久久久av麻豆果冻| 亚洲欧美日韩中文播放| 老司机精品视频在线| 99久久99久久精品国产片果冻| 欧美一区二区三级| 亚洲国产精品高清| 秋霞影院一区二区| 91色九色蝌蚪| 久久综合九色欧美综合狠狠| 一区二区日韩av| 成人免费视频一区| 精品少妇一区二区三区视频免付费 | 亚洲成人精品一区| 91视频在线观看免费| 久久精品一区八戒影视| 日韩在线卡一卡二| 91毛片在线观看| 国产偷国产偷亚洲高清人白洁 | 日韩欧美国产成人一区二区| 亚洲精品视频在线观看免费| 国产精品系列在线观看| 日韩视频在线观看一区二区| 亚洲精品高清在线观看| 粉嫩高潮美女一区二区三区 | 久久精品理论片| 欧美日韩一区二区三区高清 | 欧美丝袜丝nylons| 国产精品卡一卡二| 国产精品99久久久久久似苏梦涵| 欧美一区二区三区视频| 亚洲一区二区三区四区的| 91浏览器在线视频| 中文字幕国产精品一区二区| 国模冰冰炮一区二区| 91精品免费在线观看| 亚洲永久免费av| 色视频成人在线观看免| 亚洲同性同志一二三专区| 成人va在线观看| 中文在线免费一区三区高中清不卡| 美女任你摸久久 | 久久精品久久精品| 9191成人精品久久| 五月天亚洲精品| 欧美日韩另类国产亚洲欧美一级| 亚洲激情综合网| 色婷婷激情久久| 亚洲女同一区二区| 欧美成人官网二区| 激情小说亚洲一区| 精品国产91久久久久久久妲己| 午夜精品福利在线| 51精品国自产在线| 美女诱惑一区二区| 欧美不卡视频一区| 国产一区二区三区四区在线观看| 久久这里只精品最新地址| 国产高清视频一区| 国产精品乱子久久久久| 91看片淫黄大片一级在线观看| 亚洲日本va午夜在线影院| 在线免费视频一区二区| 亚洲午夜羞羞片| 91精品婷婷国产综合久久竹菊| 日本欧美一区二区在线观看| 精品蜜桃在线看| 国产成人av电影在线观看| 中文字幕在线一区| 在线不卡的av| 精品在线观看免费| 国产欧美精品区一区二区三区| 成人国产精品视频| 亚洲欧美日韩久久精品| 欧美日韩黄色影视| 免费观看在线综合| 国产三级精品视频| 色婷婷综合久久久| 五月婷婷综合激情| 久久久久久一二三区| 成+人+亚洲+综合天堂| 亚洲v精品v日韩v欧美v专区| 51精品久久久久久久蜜臀| 狠狠狠色丁香婷婷综合激情| 国产精品久久三| 欧美日韩精品免费观看视频| 黑人巨大精品欧美黑白配亚洲| 日本一区二区三区国色天香 | 夜夜嗨av一区二区三区四季av| 欧美日韩美少妇| 国产精品亚洲一区二区三区妖精 | 日本高清不卡一区| 青青草国产成人99久久| 国产视频一区在线观看| 色激情天天射综合网| 美女精品自拍一二三四| 亚洲视频中文字幕| 欧美一区二区三区人| 高清国产一区二区| 亚洲一区二区三区国产| 26uuu另类欧美亚洲曰本| 色婷婷久久一区二区三区麻豆| 久久国产精品第一页| 国产精品对白交换视频| 日韩一区二区三区四区| 99国产欧美另类久久久精品 | 337p日本欧洲亚洲大胆精品| 日本不卡不码高清免费观看| 国产成人aaa| 久久电影网电视剧免费观看| 99视频精品全部免费在线| 色女孩综合影院| 欧美片在线播放| 精品美女一区二区| 中文字幕中文乱码欧美一区二区| 亚洲在线视频网站| 国产精品一区专区| 欧美亚男人的天堂| 国产精品初高中害羞小美女文| 亚洲国产精品尤物yw在线观看| 日韩一区国产二区欧美三区| 国产精品美女久久久久高潮| 亚洲综合色噜噜狠狠| 亚洲大片精品永久免费| 国内精品视频666| 99re热这里只有精品视频| 色综合中文综合网| 亚洲女爱视频在线| 老司机精品视频线观看86| 色婷婷国产精品久久包臀| 日韩一区二区三区高清免费看看| 精品日韩在线观看| 夜夜爽夜夜爽精品视频| 成人午夜在线播放| 日韩欧美另类在线| 亚洲制服丝袜av| 国产自产高清不卡| 欧美日韩一区二区不卡| 国产精品免费视频网站| 久久成人精品无人区| 一本到不卡免费一区二区| 欧美第一区第二区| 日韩综合小视频| 欧美肥胖老妇做爰| 亚洲一区在线播放| 在线亚洲人成电影网站色www| 久久综合精品国产一区二区三区 | 国产午夜亚洲精品理论片色戒| 亚洲一区视频在线观看视频| 国产一区二区在线观看视频| 91精品国产黑色紧身裤美女| 日韩一区有码在线| 日本精品裸体写真集在线观看 | 石原莉奈在线亚洲二区| 色综合色综合色综合色综合色综合 | 国产精品久久久久久一区二区三区 | 日本一区二区三区在线不卡| 91在线视频网址| 蜜臀精品一区二区三区在线观看 | 欧美片在线播放| 欧美色精品在线视频| 在线免费亚洲电影| 色94色欧美sute亚洲线路二| 色婷婷综合中文久久一本| av一区二区三区四区| 成人av在线播放网址| 成人av第一页| 99re8在线精品视频免费播放| 成人av午夜电影| jlzzjlzz亚洲日本少妇| 国产毛片精品国产一区二区三区| 久久综合精品国产一区二区三区| 老色鬼精品视频在线观看播放| 26uuu亚洲| 欧美私模裸体表演在线观看| 麻豆精品久久久| 中文字幕亚洲在| 在线不卡一区二区| 精品一区二区三区在线观看国产 |