📄 wm8746_reigncom.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 + -