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

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

?? iis.c

?? 一個基于三星S3C2413的全部驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*=============================================================

	File Name: Iis.c
	Description: S3C2460 IIS Controller Function Test
   	Version: 0.1

   	History:
		0.0: 2004. 07. 08, Ported and tested by Y. H. Lee
			- This code works with UDA1341TS IIS CODEC on SMDK2460 board.
			- IIS master Tx test: Play recorded wav data.
			- IIS master Rx test: Record sound wav data on the memory via MIC-in or Line-in.
			- IIS maser clock selection (PCLK, I2S EXTCLK, EPLL, or UPLL ref. CLK) is added.
			- Recording sound via Line-In is available. 
		0.1: Tx and Rx simultaneously is available.
		0.2: below function is added
			- pause/re-play, stop/play function during playing
		0.3: code modified
			- code related to EXTCLK using is modified

	S3C2460X IIS test code is derived from following S3C2440A IIS test code.
	...     

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

   	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 (PCLK or MPLLin) is supported.
	      0.2: 2004. 04. 26, Modified by Y. H. Lee.
	         - Recording Sound via Line-In is available in the SMDK2440 base board (Rev 0.19).   
	       		  
==============================================================*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "option.h"
#include "System.h"

#include "2413addr.h"
#include "console.h"
#include "iis.h"	
#include "PLL.h"

#define IIS_BUFFER 0x31000000

#define REC_LEN_IIS 0xfffff*4	//Max value of DMA Transfer Counter (20bit) = 0xfffff, Date Size=Word (4bytes)
#define PLAY_IIS    0
#define RECORD_MICIn  1
#define RECORD_LineIn 2 
#define RECORD_PLAY_Simul 3
 
#define L3C (1<<4)	//GPB4 = L3CLOCK
#define L3D (1<<3)	//GPB3 = L3DATA 
#define L3M (1<<2)	//GPB2 = L3MODE

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

unsigned char  *Buf,*_temp;
unsigned char *rec_buf = (unsigned char *)0x31000028;
unsigned char *rec_buf1 = (unsigned char *)(0x31000000 + REC_LEN_IIS); 

unsigned int size, fs; 
unsigned int save_GPE_CON, save_GPB_CON;

float IIS_Codec_CLK;

void IIS_Port_Init(void);
void IIS_Port_Return(void);

void Init1341(int);

//unsigned short IIS_Select_SamplingRate(void);
//void Select_IIS_Master_CLK(void);
void Play_Iis(void);
void Select_PCLK(void);
//void Select_EXTCLK(void);
//void Select_EPLL(void);
//void Select_UPLL_Ref_CLK(void);

//void down_wav(void);

void IIS_RecSound_DMA1( int mode, unsigned int rec_size);
void IIS_RecSound_DMA1_Repeat(unsigned char *start_addr, unsigned int rec_size);
void IIS_PlayWave_DMA2(unsigned char *start_addr, unsigned int play_size);
void IIS_Paly_Rec_Simul(unsigned char *start_addr, unsigned int play_size);

void _WrL3Addr(unsigned char data);
void _WrL3Data(unsigned char data,int halt);

void __irq Rx_IIS_Int(void);
void __irq DMA1_Rec_Done(void);
void __irq DMA2_Done(void);
void __irq Play_Rec_Simul(void);

void * func_iis_test[][2]=
{	
	//IIS Function Test Item
    	(void *)Play_Iis,              "Play Wave. ", 
    //	(void *)RecordSound_ViaMICIn_Playit,		"Record Sound via MIC-In and Play it. ",
    //	(void *)RecordSound_ViaLineIn_Playit, 	"Record Sound via Line-In and Play it. ",
    //	(void *)Record_Play_Simultaneously,           "Record and Play Simultaneously. ", 
    	
     	0,0
};



    
    
void IIS_Test(void)
{
	int i;
		
	while(1)
	{
		i=0;
		printf("\n\n================== IIS Function Test =====================\n\n");
		
		while(1)
		{   //display menu
			printf("%2d:%s",i,func_iis_test[i][1]);
			i++;
			if((int)(func_iis_test[i][0])==0)
			{
				printf("\n");
				break;
			}
			if((i%1)==0)
			printf("\n");
		}
		printf("\n==========================================================\n");
		printf("Select #Item or Press Enter key to exit : ");
		i = GetIntNum(); //gh0522.cha
		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]) )();
	}
	
}

void down_wav(void)
{
	  //Non-cacheable area = 0x11000000 ~ 0x13cf0000
    Buf   = (unsigned char *)IIS_BUFFER;
    _temp = Buf;
    
    printf("Download the PCM(no ADPCM) file by DNW serial port(With header)!!\n");
    printf("Download address is %xh\n", Buf);
    while(((unsigned int)_temp - (unsigned int)Buf) < 4)
    {
       //Uart_Printf("\ndata=%d",size);
       Led_Display(0);
       Delay(1500);
       Led_Display(15);
       Delay(1500);
    }
    printf("\ndata=%x",size);
    //Uart_Getch();
      
    size = *(Buf) | *(Buf + 1)<<8 | *(Buf + 2)<<16 | *(Buf + 3)<<24;
    printf("\ndata=%x",size);
    //Uart_Getch();
    
    printf("\nNow, Downloading... [ File Size : %8d(      0)]",size);
    while(((unsigned int)_temp - (unsigned int)Buf) < (size)){
	  printf("\b\b\b\b\b\b\b\b\b%8d)",(unsigned int)_temp - (unsigned int)Buf);
		Delay(5000);
    }
    printf("\b\b\b\b\b\b\b\b\b%8d)]\n",(unsigned int)_temp - (unsigned int)Buf);

    rINTSUBMSK |= BIT_SUB_RXD1;
    rINTMSK  |= BIT_UART1;
    size = *(Buf + 0x2c) | *(Buf + 0x2d)<<8 | *(Buf + 0x2e)<<16 | *(Buf + 0x2f)<<24;
    size = (size>>1)<<1;	//for 44B0X
    fs   = *(Buf + 0x1c) | *(Buf + 0x1d)<<8 | *(Buf + 0x1e)<<16 | *(Buf + 0x1f)<<24;

    printf("Sample Size = %d\n",size/2);
    printf("Sampling Frequency = %d Hz\n",fs);
    printf("\n[ Now play the wave file .....]\n");
    printf("If you want to mute or no mute push the 'EIN0' key repeatedly\n");

 	
   

}

void Play_Iis(void)
{	
	//pISR_UART1 = (unsigned)Rx_IIS_Int;
    //pISR_DMA1  = (unsigned)DMA1_IISSDO_Done;
	
	printf("\n just only Play it.puhahahahah\n");
    
    
   // down_wav();
	IIS_Port_Init(); 
	Select_PCLK();
	//Select_IIS_Master_CLK();
	//IIS_Select_SamplingRate();
	//Init1341(RECORD_LineIn);
	//IIS_RecSound_DMA1(RECORD_LineIn, REC_LEN_IIS);
	
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, 464000);

	IIS_Port_Return();
	mute = 1;
}


//Record Sound via Line-In 
void RecordSound_ViaLineIn_Playit(void)
{	
	printf("\nRecord Sound via Line-In and Play it.\n");

	IIS_Port_Init(); 
//	Select_IIS_Master_CLK();

	Init1341(RECORD_LineIn);
	IIS_RecSound_DMA1(RECORD_LineIn, REC_LEN_IIS);
	
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, REC_LEN_IIS);

	IIS_Port_Return();
	mute = 1;
}

//Record Sound via MIC-In
void RecordSound_ViaMICIn_Playit(void)
{
	printf("\nRecord Sound via MIC-In and Play it.\n");

    	IIS_Port_Init(); 
  //  	Select_IIS_Master_CLK();
	
	Init1341(RECORD_MICIn);
	IIS_RecSound_DMA1(RECORD_MICIn, REC_LEN_IIS);
	
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf, REC_LEN_IIS);

	IIS_Port_Return();
	mute = 1;
}


void Record_Play_Simultaneously(void)
{
	printf("\nRecord and Play Simultaneously.\n");

	IIS_Port_Init(); 

	//Select_IIS_Master_CLK();

	Init1341(RECORD_LineIn);
	IIS_RecSound_DMA1(RECORD_LineIn, REC_LEN_IIS);

	Init1341(RECORD_PLAY_Simul);
	IIS_Paly_Rec_Simul(rec_buf, REC_LEN_IIS);
	
	Init1341(PLAY_IIS);
	IIS_PlayWave_DMA2(rec_buf1, REC_LEN_IIS);
		
	IIS_Port_Return();
}


//Sub-Routines  
//Setting Port related to IIS  
void IIS_Port_Init(void)
{
	save_GPE_CON = rGPECON;	 
	save_GPB_CON = rGPBCON;	 
   	
   	//----------------------------------------------------------
	//PORT B GROUP
	//Ports  :   GPB2         GPB4           GPB3  
	//Signal :  L3MODE     L3CLOCK    L3DATA
	//Setting:  OUTPUT     OUTPUT      OUTPUT 
	//	          [11:10]      [13:12]      [15:14]
	//Binary :  01             01              01 
	//----------------------------------------------------------    
    rGPBCON = rGPBCON & ~(0x3<<4) & ~(0x3<<6) & ~(0x3<<8); 
   	rGPBCON |= (0x1<<4) |(0x1<<6) |(0x1<<8); 
   
   	//-------------------------------------------------------------------------------
	//PORT E GROUP
	//Ports  :     GPE4    		 GPE3             GPE2           GPE1            GPE0 
	//Signal :    I2S DO           I2S DI         CDCLK        I2S CLK        I2S LRCLK
	//Binary :   10,                10,             10,              10,              10,            10    
	//-------------------------------------------------------------------------------
	rGPECON = rGPECON & ~(0x3ff) | 0x2aa;   

}



void IIS_Port_Return(void)
{
	rGPBCON = save_GPB_CON;
   	rGPECON = save_GPE_CON;

}

void Select_PCLK(void)
{
	rCLKSRC |= (1<<6);
	rCLKSRC |= (1<<11);
	rCLKDIVN &= ~(0xf<<24);	//12/1=12 MHz
	rCLKSRC |= (1<<15); 	//IIS Clock Source Selection: External Codec Clock  	
			
	//IIS Pre-scaler Setting
	rIISPSR &= 0;
	rIISPSR |= (1<<15) |(0<<8);  
		
	//In case PCLK = 50 MHz, IIS Codec CLK = 50/(5+1) = 8.34MHz
	printf("\nIIS Master CLK(PCLK) = %4.2f MHz", (float)PCLK/1000000);
	IIS_Codec_CLK = (float)PCLK/7;
	printf("\nIIS Codec CLK = %4.2f MHz", IIS_Codec_CLK/1000000);

	IIS_MasterClk_Sel = 0;
}



//Initialization of UDA1341 Audio Codec using L3 Interface 
void Init1341(int mode)
{
 	
	//----------------------------------------------------------
	//PORT B GROUP
	//Ports  :   GPB3  		GPB4  		GPB2
	//Signal :   L3DATA      L3CLOCK 	L3MODE 
	//Setting:  OUTPUT      OUTPUT 		OUTPUT
	//	          [7:6]		[9:8] 		[5:4] 
	//Binary :     01 	      01	      01
	//---------------------------------------------------------- 
    rGPBDAT = rGPBDAT & ~(L3M|L3C|L3D) |(L3M|L3C);  //Start condition : L3M=H, L3C=H
	rGPBCON = rGPBCON & ~(0x3<<4) & ~(0x3<<6) & ~(0x3<<8);  
   	rGPBCON |= (0x1<<4) |(0x1<<6) |(0x1<<8); 
 
	//L3 Interface
    _WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
 	_WrL3Data(0x50,0);	 //0,1,01, 000,0 : Status 0,Reset, 384fs,IIS-bus,no DC-filtering
	
	_WrL3Addr(0x14 + 2);     //STATUS (000101xx+10)
    _WrL3Data(0x81,0);	 //bit[7:0] => 1,0,0,0, 0,0,01 

	//Record Sound via MIC-In
    if(mode == 1)
    {
	  	_WrL3Addr(0x14 + 2);    //STATUS (000101xx+10)
		_WrL3Data(0xa2,0);	//bit[7:0] => 1,0,1,0,0,0,10
		
		_WrL3Addr(0x14 + 0);    //DATA0 (000101xx+00)
       	_WrL3Data(0xc2, 0);	//1100 0,010  : Extended addr(3bits), 010 
        _WrL3Data(0xf2, 0);	//111,100,10 : DATA0, MIC Amplifier Gain 21dB, input channel 2 select (input channel 1 off)              
    }
}

void IIS_RecSound_DMA1(int mode, unsigned int rec_size)
{

	pISR_DMA1 = (unsigned)DMA1_Rec_Done;
	ClearPending(BIT_DMA1);	
	//rSUBSRCPND=(BIT_DMA1);

	rIISCON = (0<<5)+(1<<4) + (1<<3) + (1<<1);	   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美酷刑日本凌虐凌虐| 日韩精品中文字幕在线一区| 首页国产欧美日韩丝袜| 精品欧美乱码久久久久久1区2区| 国产a级毛片一区| 一区二区三区四区中文字幕| 日韩午夜激情av| 99精品视频在线播放观看| 图片区小说区区亚洲影院| 欧美一区中文字幕| 成人av午夜影院| 日韩和欧美一区二区| 国产欧美日韩在线看| av高清久久久| 久久精品国产精品亚洲红杏| 亚洲人成网站影音先锋播放| 欧美mv和日韩mv国产网站| 91久久精品网| 久久综合综合久久综合| 一区二区三区在线观看动漫| 久久综合九色综合97婷婷女人| 在线观看一区二区视频| 日韩av在线免费观看不卡| 综合色天天鬼久久鬼色| 久久久亚洲精华液精华液精华液| 欧美亚洲国产一区二区三区| 国产超碰在线一区| 蜜桃一区二区三区四区| 亚洲成人av电影在线| 国产精品福利电影一区二区三区四区| 欧美日韩国产小视频| 91猫先生在线| 成人美女在线观看| 国产麻豆成人传媒免费观看| 亚洲成人动漫在线免费观看| 国产精品高潮呻吟| 国产精品视频一区二区三区不卡| 日韩三级视频中文字幕| 欧美日韩大陆一区二区| 欧美色图天堂网| 色又黄又爽网站www久久| 国产91精品入口| 国产激情一区二区三区四区 | 国产精品一区二区在线看| 日韩av一级片| 视频在线在亚洲| 亚洲高清免费视频| 亚洲丶国产丶欧美一区二区三区| 亚洲激情图片小说视频| 国产精品第四页| 国产精品国产三级国产三级人妇| 国产欧美va欧美不卡在线| 久久毛片高清国产| 久久久精品天堂| 欧美精彩视频一区二区三区| 国产亚洲一区二区三区| 国产亚洲欧美日韩俺去了| 欧美一区二区三区在线| 欧美一区二区三区免费大片| 制服丝袜亚洲网站| 欧美一级欧美三级在线观看| 日韩欧美卡一卡二| 精品国产91乱码一区二区三区| 欧美精品一区视频| 欧美一级在线视频| 欧美老人xxxx18| 日韩精品一区国产麻豆| 精品久久五月天| 中文字幕国产一区二区| 国产精品情趣视频| 一区二区高清视频在线观看| 亚洲小说欧美激情另类| 日韩va亚洲va欧美va久久| 麻豆国产精品一区二区三区 | 另类的小说在线视频另类成人小视频在线| 美腿丝袜亚洲三区| 91精品国产高清一区二区三区 | 色哟哟亚洲精品| 日韩欧美亚洲一区二区| 国产精品三级久久久久三级| 亚洲一卡二卡三卡四卡| 久久99国产精品免费网站| 成人app网站| 欧美一区二区久久久| 国产欧美一区二区三区在线看蜜臀| 亚洲精品成人少妇| 国产综合色精品一区二区三区| 91同城在线观看| 精品国产伦一区二区三区观看方式| 亚洲欧洲中文日韩久久av乱码| 蜜臀av一级做a爰片久久| 91麻豆国产香蕉久久精品| 欧美精品一区二区三区在线| 亚洲综合免费观看高清完整版在线 | 国产超碰在线一区| 欧美美女bb生活片| 17c精品麻豆一区二区免费| 久久精品999| 欧美日韩一卡二卡| 日韩一区日韩二区| 国产高清在线观看免费不卡| 在线综合亚洲欧美在线视频| 1024精品合集| 国产91在线|亚洲| 欧美成人国产一区二区| 亚洲线精品一区二区三区八戒| 成人高清伦理免费影院在线观看| 日韩亚洲欧美一区| 午夜久久电影网| 日本电影欧美片| 中文字幕精品综合| 蜜桃一区二区三区四区| 欧美日韩一区不卡| 亚洲制服丝袜av| 在线精品视频一区二区三四| 亚洲色大成网站www久久九九| 国产精品一区二区在线观看不卡| 日韩视频一区在线观看| 天天射综合影视| 欧美人与禽zozo性伦| 亚洲第一激情av| 欧美亚洲愉拍一区二区| 亚洲综合精品久久| 日韩理论在线观看| 成人午夜在线播放| 日本一区二区成人在线| 国产成人自拍高清视频在线免费播放| 日韩美女主播在线视频一区二区三区 | 国产精品午夜免费| 国产伦精品一区二区三区免费 | 国产福利91精品一区二区三区| 欧美一卡二卡三卡四卡| 美女一区二区久久| 欧美tickling网站挠脚心| 麻豆视频观看网址久久| 精品国产一区二区国模嫣然| 精品在线一区二区| 久久精品夜色噜噜亚洲aⅴ| 国产**成人网毛片九色| 日本一区免费视频| 97超碰欧美中文字幕| 亚洲精品国产一区二区三区四区在线| 99久久婷婷国产综合精品 | 首页综合国产亚洲丝袜| 91精品在线观看入口| 美女精品自拍一二三四| 久久久亚洲精华液精华液精华液| 国产高清成人在线| 国产精品欧美综合在线| 色婷婷av一区| 日韩国产欧美一区二区三区| 欧美成人国产一区二区| 国产91露脸合集magnet| 亚洲三级电影网站| 欧美日韩一区二区三区不卡| 美女一区二区三区| 中文字幕欧美区| 91蝌蚪porny| 性做久久久久久久免费看| 精品国产污网站| 日韩欧美一级片| 国产福利精品一区二区| 亚洲欧美在线高清| 337p亚洲精品色噜噜| 国产盗摄精品一区二区三区在线| 国产精品乱码妇女bbbb| 欧美三片在线视频观看 | 成人性生交大片免费看视频在线 | 亚洲码国产岛国毛片在线| 欧美日本韩国一区| 国产精品资源在线| 一区二区在线免费观看| 精品不卡在线视频| 91麻豆精品秘密| 极品美女销魂一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美午夜一区二区三区免费大片| 久久草av在线| 亚洲一区二区三区四区五区中文| 精品国产免费久久| 欧美亚日韩国产aⅴ精品中极品| 激情综合亚洲精品| 亚洲一级二级三级在线免费观看| 亚洲精品一区二区精华| 91福利在线免费观看| 国产精品77777| 奇米一区二区三区| 亚洲精品va在线观看| 国产日韩av一区二区| 欧美一区二区日韩| 色香蕉成人二区免费| 狠狠色2019综合网| 天天综合网天天综合色| 亚洲老妇xxxxxx| 日本一二三四高清不卡| 欧美电影免费观看高清完整版在线观看 | 免费成人小视频| 一区二区在线观看视频| 欧美高清在线一区二区| 日韩精品中午字幕|