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

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

?? iis.c

?? 開發板QT2440大部分外圍模塊的測試程序 本測試程序在ADS開發環境下運行
?? 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"

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

extern U32 Pclk;

float IIS_Codec_CLK;

//extern void Calc_Clock(int print_msg);
//extern U32 Mdiv, Pdiv, Sdiv, Fclk, Hclk, Pclk, Hdivn, Pdivn, Hclk_Ratio, Pclk_Ratio, Ref_Cnt;

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)
{
	Uart_Printf("\nPlay Wave File.\n");

    	IIS_Port_Init();
    	Select_IIS_Master_CLK();

	Download_Wave_File();

	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(Buf + 0x30, size);

	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)
	{
        	Uart_Printf(".");
         	Delay(2000);
       }
   
       Rec_Done = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀精品av| 亚洲欧洲精品一区二区精品久久久| 中文在线一区二区| 精品1区2区3区| 国产高清无密码一区二区三区| 中文字幕高清不卡| 欧美一卡2卡3卡4卡| 97超碰欧美中文字幕| 韩国v欧美v日本v亚洲v| 亚洲国产成人精品视频| 中文字幕在线视频一区| 久久日一线二线三线suv| 欧美撒尿777hd撒尿| 99久久er热在这里只有精品66| 亚洲高清免费在线| 亚洲精品视频在线| 中文字幕第一区第二区| 精品国产网站在线观看| 欧美日韩精品欧美日韩精品| www.亚洲精品| 国产成人一区在线| 国产资源精品在线观看| 日本欧洲一区二区| 亚洲成人资源在线| 亚洲国产另类av| 一区二区三区高清不卡| 日韩一区欧美一区| 国产精品国产三级国产专播品爱网| 日韩一区二区在线看| 777久久久精品| 欧美日韩亚洲高清一区二区| 色婷婷激情一区二区三区| 成人18视频日本| 成人性生交大合| 成人爽a毛片一区二区免费| 国产成人av影院| 国产丶欧美丶日本不卡视频| 国产最新精品精品你懂的| 狠狠色丁香婷综合久久| 久久99精品国产麻豆不卡| 看片的网站亚洲| 久久国产精品99久久久久久老狼| 亚洲国产中文字幕在线视频综合| 亚洲靠逼com| 亚洲综合另类小说| 午夜欧美在线一二页| 亚洲国产综合人成综合网站| 亚洲成人久久影院| 麻豆高清免费国产一区| 精品一区二区三区视频| 国产乱码精品一品二品| 高清在线不卡av| 99视频超级精品| 91国在线观看| 制服.丝袜.亚洲.另类.中文| 日韩欧美在线不卡| 精品国产免费人成在线观看| 国产夜色精品一区二区av| 国产精品天干天干在线综合| 国产精品传媒入口麻豆| 亚洲国产精品一区二区www| 亚洲成a人v欧美综合天堂下载| 一区二区三区精品视频| 男男视频亚洲欧美| 国产精品资源网站| av不卡在线观看| 欧美久久一区二区| 久久综合狠狠综合久久激情| 国产精品视频免费| 亚洲一区二区三区视频在线播放 | 久久影院午夜论| 国产嫩草影院久久久久| 日韩一区在线播放| 日韩国产精品大片| 国产精品一区二区男女羞羞无遮挡| 国产福利一区二区三区视频在线| 成人午夜视频福利| 欧美色大人视频| 久久久久国色av免费看影院| 亚洲欧美怡红院| 美女一区二区视频| 91麻豆免费看| 精品国产凹凸成av人导航| 日韩伦理av电影| 日韩精品亚洲专区| www.av亚洲| 欧美一区二区福利视频| 中文字幕日本不卡| 美女脱光内衣内裤视频久久网站 | 亚洲成av人片在www色猫咪| 国产一区视频导航| 在线观看视频91| 久久精品综合网| 三级一区在线视频先锋| 国产精品99久久久久久有的能看 | 成人免费黄色在线| 日韩一级免费观看| 一区二区欧美国产| 国产91精品一区二区麻豆网站 | 欧美不卡视频一区| 亚洲国产精品一区二区www| 国产91精品露脸国语对白| 日韩一区二区精品在线观看| 亚洲精品美国一| 高清不卡一二三区| 日韩欧美国产综合一区| 亚洲gay无套男同| 91尤物视频在线观看| 久久久久九九视频| 麻豆精品国产91久久久久久| 欧美伦理电影网| 亚洲综合激情另类小说区| 99久久国产综合精品色伊| 国产无人区一区二区三区| 麻豆精品视频在线观看视频| 欧美精品第1页| 亚洲一区在线观看网站| 一本大道久久a久久精品综合| 日韩欧美一区二区在线视频| 亚洲电影视频在线| 在线观看视频一区二区| 亚洲靠逼com| 91福利国产精品| 亚洲日本在线a| 99v久久综合狠狠综合久久| 国产日韩精品久久久| 国产精品资源在线| 精品国产第一区二区三区观看体验| 亚洲综合色婷婷| voyeur盗摄精品| 国产精品久久久久永久免费观看| 日韩电影在线免费| 欧美日韩中文字幕精品| 亚洲男人的天堂在线aⅴ视频| 麻豆成人综合网| 欧美一区二区视频在线观看| 亚洲小说春色综合另类电影| 91色|porny| 1000精品久久久久久久久| 一本色道久久加勒比精品 | 国产精品高清亚洲| 成人污污视频在线观看| 精品久久国产97色综合| 日本特黄久久久高潮| 欧美人体做爰大胆视频| 一区二区三区四区不卡在线| 欧美无乱码久久久免费午夜一区 | 精品国产精品一区二区夜夜嗨| 亚洲一二三四久久| 99久久综合国产精品| 亚洲少妇30p| 色综合视频一区二区三区高清| 久久精品视频免费| 国产精品一区二区免费不卡 | 精品国产网站在线观看| 久久精品99国产精品| 欧美成人高清电影在线| 美女脱光内衣内裤视频久久影院| 一本一道久久a久久精品综合蜜臀| 亚洲欧洲成人自拍| 99久久国产综合精品色伊 | 国产精品人妖ts系列视频| 国产成人av福利| 国产精品成人一区二区三区夜夜夜| 国产精品77777竹菊影视小说| 日韩精品中文字幕在线不卡尤物| 日韩成人av影视| 精品国精品国产| 国产一区二区福利| 久久久久88色偷偷免费| 94-欧美-setu| 亚洲一区二区三区四区在线观看 | 91免费观看视频| 亚洲一二三四久久| 欧美一区二区精美| 国产美女娇喘av呻吟久久| 一区二区三区不卡在线观看 | 视频一区二区国产| 精品久久久久久综合日本欧美| 紧缚捆绑精品一区二区| 欧美韩国一区二区| 97se亚洲国产综合在线| 午夜精品久久久久久久蜜桃app| 欧美视频你懂的| 九九**精品视频免费播放| 日韩欧美www| 91国在线观看| 国产一区不卡视频| 亚洲女人****多毛耸耸8| 欧美区一区二区三区| 韩国女主播成人在线| 中文字幕在线一区| 日韩一区二区三区四区五区六区| 国产精品一区专区| 亚洲一区视频在线| 精品国产凹凸成av人网站| 暴力调教一区二区三区| 亚洲综合一区二区精品导航| 欧美国产亚洲另类动漫| 欧美日韩美女一区二区|