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

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

?? pcm.c

?? 三星 s3c6400測(cè)試代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
		PCM_CODEC_IICWrite(0x34, 0x7a, 0x00);	//Bias Control
		PCM_CODEC_IICWrite(0x34, 0x7e, 0x00);	//Additional Control
		
	#endif
}

void PCM_CodecExitPCMIn(void)
{
	#if (PCM_CODEC_NAME== AK2430)
		PCM_CODEC_IICWrite(0x9e, 0x05, 0x30);	//MIC Amp1, MIC Bias1 Off	
		Delay(1300);
		PCM_CODEC_IICWrite(0x9e, 0x0B, 0x00);	//sw_COI, sw_TX1 Open	
		PCM_CODEC_IICWrite(0x9e, 0x05, 0x00);	//TX SUM, PCM Codec Off
	#elif (PCM_CODEC_NAME== WM9713)
		AC97_CodecCmd(WRITE,0x3E, 0xffff);		//Disable LINE L/R output PGA's
		AC97_CodecCmd(WRITE,0x26, 0xff00);		//Disable I/P PGA's nad Mixers	
	#endif
}

void PCM_PCMInDMA(u32 uRecBufferAddr, u32 uPcmSize, PCM_CLKSRC ePcmClkSrc)
{
	u32 uSclkDiv, uSyncDiv, uSclkSel;
	u32 uTxMsbPos, uRxMsbPos;
	
	uPcmRecDone = 0;
	
	if(PCM_MODULE == PCM_MODULE0)
	{
		oPcm.m_uNumDma = NUM_DMA0;
		oPcm.m_eDmaId = eSEL_PCM0_RX;
		oPcm.m_eDmaUnit = DMA0;
		oPcm.m_eDmaCh = DMA_A;
		oPcm.m_uPcmRxFifoAddr = PCM0_BASE+rPCMRXFIFO;
		oPcm.m_eDreqSrc = DMA0_PCM0_RX;
	}
	else if(PCM_MODULE == PCM_MODULE1)
	{
		oPcm.m_uNumDma = NUM_DMA1;
		oPcm.m_eDmaId = eSEL_PCM1_RX;
		oPcm.m_eDmaUnit = DMA1;
		oPcm.m_eDmaCh = DMA_A;
		oPcm.m_uPcmRxFifoAddr = PCM1_BASE+rPCMRXFIFO;
		oPcm.m_eDreqSrc = DMA1_PCM1_RX;
	}

	if(PCM_MSB_POS == AFTER_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS1;
		uRxMsbPos = RX_MSB_POS1;	
	}
	else if(PCM_MSB_POS == DURING_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS0;
		uRxMsbPos = RX_MSB_POS0	;
	}
		
	//IRQ Setting
	INTC_SetVectAddr(oPcm.m_uNumDma, Isr_PCM_PCMIn_DMADone);
	INTC_Enable(oPcm.m_uNumDma);

	//DMA Setting
    SYSC_SelectDMA(oPcm.m_eDmaId, 1);
    DMAC_InitCh(oPcm.m_eDmaUnit , oPcm.m_eDmaCh, &oPcmDma);

    DMACH_ClearIntPending(&oPcmDma);
	DMACH_ClearErrIntPending(&oPcmDma);
	DMACH_Setup(oPcm.m_eDmaCh, 0x0, oPcm.m_uPcmRxFifoAddr, true, (u32)uRecBufferAddr, false, HWORD, uPcmSize/2, HANDSHAKE, oPcm.m_eDreqSrc, MEM, SINGLE, &oPcmDma);
      	
   	Disp("Supply Sound to PCM CODEC via MIC In Connector.\n");
    Disp("Press any key to record.\n");
    
    UART_Getc();
   	Disp("Recording...\n");

   	PCM_GetClkValAndClkDir(&uSclkDiv, &uSyncDiv, ePcmClkSrc);

   	if(ePcmClkSrc == PCM_PCLK)
		uSclkSel = 1<<18; 	
	else
		uSclkSel = 0<<18; 

   	Disp("uSclkDiv: 0x%x\n", uSclkDiv);
   	Disp("uSyncDiv: 0x%x\n", uSyncDiv);

    DMACH_Start(&oPcmDma);
      
	//Transfer data enable  
	PCMOutp32(rPCMCLKCTL, PCM_SCLK_EN | uSclkSel | (uSclkDiv<<9) | (uSyncDiv<<0)); 
	PCMOutp32(rPCMCTRL,  RXFIFO_DIPSTICK(0x20)|PCM_RX_DMA_EN |uTxMsbPos |uRxMsbPos|PCM_RXFIFO_EN |PCM_PCM_ENABLE);

	while(uPcmRecDone ==0)
    {
        Disp(".");
        Delay(3000);
    }

    uPcmRecDone = 0;
 
    DMACH_Stop(&oPcmDma);		// DMA stop
    INTC_Disable(oPcm.m_uNumDma);

    PCMOutp32(rPCMCTRL, 0);		
    PCMOutp32(rPCMCLKCTL , 0);	
   	
  	Delay(1000); 

  	Disp("\nEnd of Record!\n");
}


void PCM_PCMOutDMA(u32 uRecBufferAddr, u32 uPcmSize, PCM_CLKSRC ePcmClkSrc)
{
	u8 uChar;
	u32 uSclkDiv, uSyncDiv, uSclkSel;
	u32 uTxMsbPos, uRxMsbPos;

	if(PCM_MODULE == PCM_MODULE0)
	{
		oPcm.m_uNumDma = NUM_DMA0;
		oPcm.m_eDmaId = eSEL_PCM0_TX;
		oPcm.m_eDmaUnit = DMA0;
		oPcm.m_eDmaCh = DMA_B;
		oPcm.m_uPcmRxFifoAddr = PCM0_BASE+rPCMTXFIFO;
		oPcm.m_eDreqSrc = DMA0_PCM0_TX;
	}
	else if(PCM_MODULE == PCM_MODULE1)
	{
		oPcm.m_uNumDma = NUM_DMA1;
		oPcm.m_eDmaId = eSEL_PCM1_TX;
		oPcm.m_eDmaUnit = DMA1;
		oPcm.m_eDmaCh = DMA_B;
		oPcm.m_uPcmRxFifoAddr = PCM1_BASE+rPCMTXFIFO;
		oPcm.m_eDreqSrc = DMA1_PCM1_TX;
	}

	if(PCM_MSB_POS == AFTER_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS1;
		uRxMsbPos = RX_MSB_POS1;	
	}
	else if(PCM_MSB_POS == DURING_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS0;
		uRxMsbPos = RX_MSB_POS0	;
	}

	//IRQ Setting
	INTC_SetVectAddr(oPcm.m_uNumDma, Isr_PCM_PCMOut_DMADone);
	INTC_Enable(oPcm.m_uNumDma);
	      
    //DMA Setting
    SYSC_SelectDMA(oPcm.m_eDmaId, 1);
    DMAC_InitCh(oPcm.m_eDmaUnit, oPcm.m_eDmaCh, &oPcmDma);

    DMACH_ClearIntPending(&oPcmDma);
	DMACH_ClearErrIntPending(&oPcmDma);
	DMACH_Setup(oPcm.m_eDmaCh, 0x0, (u32)uRecBufferAddr, false, oPcm.m_uPcmRxFifoAddr, true, HWORD, uPcmSize/2, HANDSHAKE, MEM, oPcm.m_eDreqSrc , SINGLE, &oPcmDma);
								
	Disp("\nListen to Sound via Speak Out Connector.\n");
	Disp("Press any key to play.\n");
    UART_Getc();
    Disp("\nIf you want to exit, Press the 'x' key.\n");

  	PCM_GetClkValAndClkDir(&uSclkDiv, &uSyncDiv, ePcmClkSrc);

  	if(ePcmClkSrc == PCM_PCLK)
		uSclkSel = 1<<18; 	
	else
		uSclkSel = 0<<18; 
  	
  	DMACH_Start(&oPcmDma);

	//PCM Clock Setting 
	PCMOutp32(rPCMCLKCTL, PCM_SCLK_EN|uSclkSel | (uSclkDiv<<9) | (uSyncDiv<<0));
	//Transfer data enable  
	PCMOutp32(rPCMCTRL, TXFIFO_DIPSTICK(0x8) |PCM_TX_DMA_EN |uTxMsbPos |uRxMsbPos |PCM_TXFIFO_EN |PCM_PCM_ENABLE);
 
    while(1)
    {
    	uChar = UART_Getc();

		if( (uChar == 'x') | (uChar == 'X')) 
		break;
    }        
    		
    DMACH_Stop(&oPcmDma);		// DMA stop
     
    INTC_Disable(oPcm.m_uNumDma);

    PCMOutp32(rPCMCTRL, 0);	
    PCMOutp32(rPCMCLKCTL , 0);	
 
  	Disp("\nEnd of Play!\n");

}


void PCM_PCMInInt(u32 uRecBufferAddr, u32 uPcmSize, PCM_CLKSRC ePcmClkSrc)
{
	u32 uSclkDiv, uSyncDiv, uSclkSel;
	u32 uTxMsbPos, uRxMsbPos;
		
	if(PCM_MODULE == PCM_MODULE0)
	{
		oPcm.m_uNumInt = NUM_PCM0;
	}
	else if(PCM_MODULE == PCM_MODULE1)
	{
		oPcm.m_uNumInt = NUM_PCM1;
	}

	if(PCM_MSB_POS == AFTER_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS1;
		uRxMsbPos = RX_MSB_POS1;	
	}
	else if(PCM_MSB_POS == DURING_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS0;
		uRxMsbPos = RX_MSB_POS0	;
	}
		
	uPcmRecDone =0;

	uPcmRecBuffer = (u16 *) uRecBufferAddr;
	uPcmEndRecBuffer = uPcmRecBuffer + uPcmSize;
    
	//IRQ Initialization
	INTC_ClearVectAddr();
	INTC_SetVectAddr(oPcm.m_uNumInt, Isr_PCM_PCMIn);
	INTC_Enable(oPcm.m_uNumInt);

	Disp("Supply Sound to PCM CODEC via MIC In Connector.\n");
    Disp("Press any key to record.\n");
    UART_Getc();
   	Disp("Recording...\n");

	PCM_ClearInt();
	PCM_EnableInt(RX_FIFO_ALMOST_FULL);

	PCM_GetClkValAndClkDir(&uSclkDiv, &uSyncDiv, ePcmClkSrc);

	if(ePcmClkSrc == PCM_PCLK)
		uSclkSel = 1<<18; 	
	else
		uSclkSel = 0<<18; 	

	//PCM Clock Setting 
	PCMOutp32(rPCMCLKCTL, PCM_SCLK_EN | uSclkSel | (uSclkDiv<<9) | (uSyncDiv<<0));
	//Transfer data enable  
	PCMOutp32(rPCMCTRL,  RXFIFO_DIPSTICK(0x20)| uTxMsbPos | uRxMsbPos | PCM_RXFIFO_EN  |PCM_PCM_ENABLE);

	while(1)
	{
	    if(uPcmRecDone)
		break;	
	}
   	
    PCMOutp32(rPCMCTRL, 0);		
	PCMOutp32(rPCMCLKCTL , 0);	
	
	INTC_Disable(oPcm.m_uNumInt);
	PCM_DisableInt();

	Disp("\nEnd of Record!\n");
}


void PCM_PCMOutInt(u32 uRecBufferAddr, u32 uPcmSize, PCM_CLKSRC ePcmClkSrc)
{
	u32 uSclkDiv, uSyncDiv, uSclkSel;
	u32 uTxMsbPos, uRxMsbPos;
	
	if(PCM_MODULE == PCM_MODULE0)
	{
		oPcm.m_uNumInt = NUM_PCM0;
	}
	else if(PCM_MODULE == PCM_MODULE1)
	{
		oPcm.m_uNumInt = NUM_PCM1;
	}

	if(PCM_MSB_POS == AFTER_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS1;
		uRxMsbPos = RX_MSB_POS1;	
	}
	else if(PCM_MSB_POS == DURING_PCMSYNC_HIGH)
	{
		uTxMsbPos = TX_MSB_POS0;
		uRxMsbPos = RX_MSB_POS0	;
	}
	
	uPcmPlayDone =0;

	uPcmRecBuffer = (u16 *) uRecBufferAddr;
	uPcmEndRecBuffer = uPcmRecBuffer + uPcmSize;
    
	//IRQ Initialization
	INTC_ClearVectAddr();
	INTC_SetVectAddr(oPcm.m_uNumInt, Isr_PCM_PCMOut);
	INTC_Enable(oPcm.m_uNumInt);

	Disp("\nListen to Sound via Speak Out Connector.\n");
	Disp("Press any key to play.\n");
    UART_Getc();
  
	PCM_ClearInt();
	PCM_EnableInt(TXFIFO_ALMOST_EMPTY);

	PCM_GetClkValAndClkDir(&uSclkDiv, &uSyncDiv, ePcmClkSrc);

	if(ePcmClkSrc == PCM_PCLK)
		uSclkSel = 1<<18; 	
	else
		uSclkSel = 0<<18; 	

	//PCM Clock Setting 
	PCMOutp32(rPCMCLKCTL, PCM_SCLK_EN |uSclkSel |(uSclkDiv<<9) |(uSyncDiv<<0));
	//Transfer data enable  
	PCMOutp32(rPCMCTRL,  TXFIFO_DIPSTICK(0x8) |uTxMsbPos |uRxMsbPos |PCM_TXFIFO_EN|PCM_PCM_ENABLE);

	while(1)
	{
	    if(uPcmPlayDone)
		break;	
	}
   	
    PCMOutp32(rPCMCTRL, 0);		
	PCMOutp32(rPCMCLKCTL , 0);	
	
	INTC_Disable(oPcm.m_uNumInt);
	PCM_DisableInt();

	Disp("\nEnd of Play!\n");
}


void PCM_ClearInt(void)
{
	u32 uPcmClrInt;

	uPcmClrInt = 0x1;
		
	PCMOutp32(rPCMCLRINT, uPcmClrInt);
}

void PCM_EnableInt(PCM_INT ePcmInt)
{
	u32 uInt;
    
    if(ePcmInt == TRANSFER_DONE)				uInt = 1<<12;
	else if (ePcmInt == TXFIFO_EMPTY)			uInt = 1<<11;
	else if (ePcmInt == TXFIFO_ALMOST_EMPTY)	uInt = 1<<10;
	else if (ePcmInt == TXFIFO_FULL)			uInt = 1<< 9;
	else if (ePcmInt == TXFIFO_ALMOST_FULL)		uInt = 1<< 8;
	else if (ePcmInt == TXFIFO_ERROR_STARVE)	uInt = 1<< 7;
	else if (ePcmInt == TXFIFO_ERROR_OVERFLOW)    uInt = 1<< 6;
		
	else if (ePcmInt == RXFIFO_EMPTY)			uInt = 1<< 5;
	else if (ePcmInt == RXFIFO_ALMOST_EMPTY)	uInt = 1<< 4;
	else if (ePcmInt == RX_FIFO_FULL)			uInt = 1<< 3;
	else if (ePcmInt == RX_FIFO_ALMOST_FULL)	uInt = 1<< 2;
	else if (ePcmInt == RXFIFO_ERROR_STARVE)	uInt = 1<< 1;
	else if (ePcmInt == RXFIFO_ERROR_OVERFLOW)	uInt = 1<< 0;
		
	PCMOutp32(rPCMIRQCTL, uInt|1<<14);
}

void PCM_DisableInt(void)
{		
	PCMOutp32(rPCMIRQCTL, 0x0);
}


////////////////////////////////////////////////////////////////
void PCM_CODEC_IICWrite(u32 uSlaveAddr, u32 uAddr, u8 uData)
{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲免费视频| 色哟哟国产精品免费观看| 伊人开心综合网| 中文字幕亚洲电影| 亚洲欧洲韩国日本视频| 国产精品免费视频一区| 久久久.com| 欧美视频一区二| 岛国av在线一区| 国产91在线|亚洲| 国产自产v一区二区三区c| 偷拍一区二区三区| 三级亚洲高清视频| 婷婷开心激情综合| 麻豆精品视频在线观看视频| 日韩av网站在线观看| 蜜桃久久精品一区二区| 国产又粗又猛又爽又黄91精品| 另类小说图片综合网| 激情成人综合网| 成人丝袜高跟foot| 91黄色免费网站| 欧美精品1区2区3区| 欧美xxxx老人做受| 久久精品欧美一区二区三区不卡| 久久久九九九九| 亚洲欧洲精品一区二区三区| 亚洲动漫第一页| 日韩国产欧美在线视频| 国产麻豆精品视频| 色综合中文字幕| 欧美一区二区三区视频在线观看| 久久夜色精品国产欧美乱极品| 国产精品人成在线观看免费 | 亚洲电影中文字幕在线观看| 亚洲第一成年网| 国产盗摄女厕一区二区三区| 91免费视频观看| 日韩精品在线一区二区| 国产精品卡一卡二| 国产精品天天摸av网| 午夜不卡在线视频| 成人涩涩免费视频| 日韩一区二区免费在线观看| 国产精品三级av在线播放| 日韩激情在线观看| eeuss鲁一区二区三区| 欧美伊人久久大香线蕉综合69 | 国产一区二区三区免费观看| 成人精品鲁一区一区二区| 欧美精品xxxxbbbb| 自拍av一区二区三区| 国产在线视频一区二区| 欧美视频日韩视频| 中文字幕日韩精品一区| 七七婷婷婷婷精品国产| 欧美怡红院视频| 亚洲激情在线播放| 激情文学综合网| 91视频免费播放| 国产精品乱人伦一区二区| 久久疯狂做爰流白浆xx| 欧美日韩国产另类一区| 亚洲欧美激情小说另类| 成人激情动漫在线观看| 精品国产一区二区三区av性色 | 日韩一区二区三区免费看| 亚洲欧美偷拍另类a∨色屁股| 激情久久五月天| 56国语精品自产拍在线观看| 亚洲国产精品精华液2区45| 美女免费视频一区二区| 日韩欧美国产一区二区在线播放 | 亚洲素人一区二区| 国产a视频精品免费观看| 欧美大片在线观看| 久久精品久久精品| 3atv一区二区三区| 亚洲国产wwwccc36天堂| 欧美亚洲动漫另类| 亚洲欧美日韩在线播放| 国产高清亚洲一区| 久久噜噜亚洲综合| 韩国午夜理伦三级不卡影院| 欧美r级在线观看| 精油按摩中文字幕久久| 精品日产卡一卡二卡麻豆| 美女视频黄久久| 26uuu精品一区二区| 国产激情精品久久久第一区二区| 久久精品视频免费观看| 国产一区在线观看麻豆| 久久精品人人做人人爽97| 懂色av一区二区三区免费观看| 欧美激情艳妇裸体舞| 懂色av一区二区三区蜜臀| 中文字幕欧美日本乱码一线二线| 久久成人av少妇免费| 久久久精品影视| 成人污视频在线观看| 亚洲人成网站精品片在线观看| 欧美日韩中文字幕精品| 久久狠狠亚洲综合| 中文字幕不卡在线| 欧美性感一区二区三区| 蜜桃精品视频在线观看| 国产欧美一区二区三区网站| 色综合久久久久综合体| 亚洲va天堂va国产va久| 久久久不卡网国产精品二区| 91性感美女视频| 青青草国产精品97视觉盛宴| www成人在线观看| 色成年激情久久综合| 看片网站欧美日韩| 成人免费在线视频| 欧美α欧美αv大片| 色就色 综合激情| 青青草97国产精品免费观看无弹窗版 | 美女看a上一区| 综合亚洲深深色噜噜狠狠网站| 欧美一区二区三区人| 国产suv一区二区三区88区| 视频一区二区三区中文字幕| 国产精品免费av| 在线播放中文字幕一区| 91浏览器入口在线观看| 韩国av一区二区三区四区| 一区二区高清免费观看影视大全| 日韩欧美国产不卡| 欧美色男人天堂| 国产最新精品免费| 亚洲国产成人av网| 国产精品二区一区二区aⅴ污介绍| 欧美精品第1页| 色综合天天视频在线观看| 国产一区二区免费看| 日韩不卡一区二区| 一区二区三区精品在线观看| 中国av一区二区三区| 欧美日韩国产乱码电影| 免费国产亚洲视频| 婷婷激情综合网| 亚洲综合免费观看高清完整版 | 婷婷六月综合亚洲| 亚洲高清免费视频| 亚洲毛片av在线| 26uuu亚洲| 欧美一区二区三区系列电影| 欧美三级蜜桃2在线观看| 色琪琪一区二区三区亚洲区| 91香蕉视频黄| 欧美在线播放高清精品| 91国内精品野花午夜精品| eeuss鲁片一区二区三区在线看| 国产成人av自拍| 成人美女视频在线看| 成人网页在线观看| 国产黄色成人av| www.视频一区| aaa欧美日韩| 91蝌蚪porny九色| 99久久er热在这里只有精品66| 国产成人精品亚洲午夜麻豆| 成人小视频免费在线观看| voyeur盗摄精品| 成人免费视频网站在线观看| 日韩欧美高清dvd碟片| 亚洲午夜久久久久久久久久久| 亚洲成人自拍一区| 亚洲欧洲www| 国产精品视频一二三区| 欧美大片国产精品| 欧美日韩一区二区三区不卡 | 五月婷婷激情综合网| 欧美卡1卡2卡| 欧美日韩高清不卡| 在线免费精品视频| 91小视频在线| 91丨九色丨国产丨porny| 国产精品88888| 国产一区二区网址| 另类成人小视频在线| 一区二区三区国产豹纹内裤在线 | 九九久久精品视频| 亚洲成人资源在线| 亚洲r级在线视频| 亚洲一二三四久久| 亚洲精品一二三区| 亚洲欧美一区二区三区久本道91| 欧美精品一区二区久久久| 欧美精品免费视频| av亚洲精华国产精华精华| 99久久精品免费看| 一本一道久久a久久精品| 色先锋aa成人| 欧美片在线播放| 欧美一卡二卡在线| 精品国产三级电影在线观看| 久久久99久久|