⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wm8746_reigncom.c

📁 SAMSUNG 5009的源代码
💻 C
字号:
/******************************************************************************
 * File name   : PCM1742.c
 * Start date  : 2003.09.15
 * By          : Chongkun Lee
 * Contact     : bach1004@samsung.com
 * Description : PCM1742 Audio DAC control Low Level API
 * $Log:$
 ******************************************************************************
 */
#ifndef	_WM8746_C_
#define	_WM8746_C_


/******************************************************
 *       INCLUDES
 *****************************************************/

#include 	"WM8746.h"

/******************************************************************************
 *  Function name : WM8746_Control
 *  Arguments     :
 *       IN         register address, data
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : PCM1742 series audio dac control function.
 *
 *  Revisions     :
 ******************************************************************************
 */
VOID WM8746_Control(UCHAR idx,USHORT data)
{
	UCHAR 				count;
	UINT				datal;
	SysInterruptLevel_t oldlevel;

	datal = (UINT) data;
	//SysPrintf("\n PCM1742 Start[%x][%x]\n", idx, data);	

	WM8746_DataReset();
  
	/* Interrupt disable temporary */
	SysControlInterrupt( INTERRUPT_DISABLE, &oldlevel, 0 );

	WM8746_Enable();

	/* Send Register Address */
	for(count=0 ; count<7 ; count++)
	{
		WM8746_ClkLow();
		
		if(idx & 0x40)
			WM8746_DataHigh();
		else
			WM8746_DataLow();
		
		idx=idx<<1;
				
		WM8746_ClkHigh();
	}
	
	/* Send Data */
	for(count=0 ; count<9 ; count++)
	{
		WM8746_ClkLow();
				
		if(datal & 0x100)
			WM8746_DataHigh();
		else
			WM8746_DataLow();
		
		datal=datal<<1;

		WM8746_ClkHigh();		
	}
	
	WM8746_Disable();
	
	WM8746_ClkLow();
	
	WM8746_DataLow();
	
  	/* Interrupt enable */
	SysControlInterrupt( oldlevel, &oldlevel, 0 );
}

/******************************************************************************
 *  Function name : ADAC_Init
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC initialize function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Init( VOID )
{
	WM8746_Control(0x3, 0x21);
	WM8746_Control(0x8, 0x1ff);
}

/******************************************************************************
 *  Function name : ADAC_Mute
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC mute function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Mute( BOOL mute )
{
	int i;
			
	if( mute )
	{
		WM8746_Control(2, 1);
		for(i=0;i<0x10000;i++);
	}
	else
	{
		WM8746_Control(2, 0x120);
		rPDAT2 &= ~(1<<2);	/* HW Mute Off */
	}
}

VOID ADAC_Deemphasis( BOOL onoff, UINT fs )
{
}

/******************************************************************************
 *  Function name : ADAC_Volume
 *  Arguments     :
 *       IN         
 *       OUT
 *       INOUT
 *  Return        : VOID
 *  By            : Chongkun Lee
 *  Description   : DAC volume function
 *  Revisions     :
 ******************************************************************************
 */
VOID ADAC_Volume( UCHAR vol )
{
	UCHAR data;

	if( vol == 0 )
		data = 0;
	else
		data = (vol*2) + 195;

	
	WM8746_Control(8, 0x100|data);
} 
#endif
/* end of WM8746.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -