📄 wm8750.c
字号:
/*-------------------------------------------------------------------------*/
/* Additional Control 3 */
STATUS DEV_ADEC_AddiCtrl3_ADCLRM(unsigned char select)
{
switch(select)
{
case ADC_Word_Clock_Input : WM8750Regs[27] &=0xFE7F;
break;
case MCLK_Output : WM8750Regs[27] &=0xFEFF;
WM8750Regs[27] |=0x0080;
break;
case MCLK_55_Output : WM8750Regs[27] &=0xFF7F;
WM8750Regs[27] |=0x0100;
break;
case MCLK_6_Output : WM8750Regs[27] |=0x0180;
break;
}
return DEV_ADEC_WriteCmd(R27_Additional_Control3, WM8750Regs[27]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl3_VROI(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[27] |=0x0040;
else WM8750Regs[27] &=0xFFBF;
return DEV_ADEC_WriteCmd(R27_Additional_Control3, WM8750Regs[27]);
}
/*-------------------------------------------------------------------------*/
/* ADC Input Mode */
STATUS DEV_ADEC_AdcInputMode_DS(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[31] |=0x0100;
else WM8750Regs[31] &=0xFEFF;
return DEV_ADEC_WriteCmd(R31_ADC_Input_Mode, WM8750Regs[31]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AdcInputMode_MONOMIX(unsigned char select)
{
switch(select)
{
case Monomix_Stereo : WM8750Regs[31] &=0xFF3F;
break;
case Monomix_Left_ADC : WM8750Regs[31] &=0xFF7F;
WM8750Regs[31] |=0x0040;
break;
case Monomix_Right_ADC : WM8750Regs[31] &=0xFFBF;
WM8750Regs[31] |=0x0080;
break;
case Digital_Mono_Mix : WM8750Regs[31] |=0x00C0;
break;
}
return DEV_ADEC_WriteCmd(R31_ADC_Input_Mode, WM8750Regs[31]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AdcInputMode_RDCM(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[31] |=0x0010;
else WM8750Regs[31] &=0xFFEF;
return DEV_ADEC_WriteCmd(R31_ADC_Input_Mode, WM8750Regs[31]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AdcInputMode_LDCM(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[31] |=0x0008;
else WM8750Regs[31] &=0xFFF7;
return DEV_ADEC_WriteCmd(R31_ADC_Input_Mode, WM8750Regs[31]);
}
/*-------------------------------------------------------------------------*/
/* ADC Signal Path Control Left */
STATUS DEV_ADEC_AdclPath_LINSEL(unsigned char select)
{
switch(select)
{
case INPUT1 : WM8750Regs[32] &=0xFF3F;
break;
case INPUT2 : WM8750Regs[32] &=0xFF7F;
WM8750Regs[32] |=0x0040;
break;
case INPUT3 : WM8750Regs[32] &=0xFFBF;
WM8750Regs[32] |=0x0080;
break;
case LR_Differential : WM8750Regs[32] |=0x00C0;
break;
}
return DEV_ADEC_WriteCmd(R32_ADCL_Signal_Path, WM8750Regs[32]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AdclPath_LMICBOOST(unsigned char boost)
{
switch(boost)
{
case Boost_Off : WM8750Regs[32] &=0xFFCF;
break;
case Boost_13dB : WM8750Regs[32] &=0xFFDF;
WM8750Regs[32] |=0x0010;
break;
case Boost_20dB : WM8750Regs[32] &=0xFFEF;
WM8750Regs[32] |=0x0020;
break;
case Boost_29dB : WM8750Regs[32] |=0x0030;
break;
}
return DEV_ADEC_WriteCmd(R32_ADCL_Signal_Path, WM8750Regs[32]);
}
/*-------------------------------------------------------------------------*/
/* ADC Signal Path Control Right */
STATUS DEV_ADEC_AdcrPath_RINSEL(unsigned char select)
{
switch(select)
{
case INPUT1 : WM8750Regs[33] &=0xFF3F;
break;
case INPUT2 : WM8750Regs[33] &=0xFF7F;
WM8750Regs[33] |=0x0040;
break;
case INPUT3 : WM8750Regs[33] &=0xFFBF;
WM8750Regs[33] |=0x0080;
break;
case LR_Differential : WM8750Regs[33] |=0x00C0;
break;
}
return DEV_ADEC_WriteCmd(R33_ADCR_Signal_Path, WM8750Regs[33]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AdcrPath_RMICBOOST(unsigned char boost)
{
switch(boost)
{
case Boost_Off : WM8750Regs[33] &=0xFFCF;
break;
case Boost_13dB : WM8750Regs[33] &=0xFFDF;
WM8750Regs[33] |=0x0010;
break;
case Boost_20dB : WM8750Regs[33] &=0xFFEF;
WM8750Regs[33] |=0x0020;
break;
case Boost_29dB : WM8750Regs[33] |=0x0030;
break;
}
return DEV_ADEC_WriteCmd(R33_ADCR_Signal_Path, WM8750Regs[33]);
}
/*-------------------------------------------------------------------------*/
/* Left Mixer Control 1 */
STATUS DEV_ADEC_LeftOutMix1_LD2LO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[34] |=0x0100;
else WM8750Regs[34] &=0xFEFF;
return DEV_ADEC_WriteCmd(R34_Left_Out_Mix1, WM8750Regs[34]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftOutMix1_LI2LO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[34] |=0x0080;
else WM8750Regs[34] &=0xFF7F;
return DEV_ADEC_WriteCmd(R34_Left_Out_Mix1, WM8750Regs[34]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftOutMix1_LI2LOVOL(unsigned char vol)
{
USHORT volume, temp;
volume = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[34];
temp &= 0xFF8F;
WM8750Regs[34] = temp + volume;
return DEV_ADEC_WriteCmd(R34_Left_Out_Mix1, WM8750Regs[34]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftOutMix1_LMIXSEL(unsigned char select)
{
switch(select)
{
case INPUT1 : WM8750Regs[34] &=0xFFF8;
break;
case INPUT2 : WM8750Regs[34] &=0xFFF9;
WM8750Regs[34] |=0x0001;
break;
case INPUT3 : WM8750Regs[34] &=0xFFFA;
WM8750Regs[34] |=0x0002;
break;
case ADC_Input : WM8750Regs[34] &=0xFFFB;
WM8750Regs[34] |=0x0003;
break;
case Differentail_Input : WM8750Regs[34] &=0xFFFC;
WM8750Regs[34] |=0x0004;
break;
}
return DEV_ADEC_WriteCmd(R34_Left_Out_Mix1, WM8750Regs[34]);
}
/*-------------------------------------------------------------------------*/
/* Left Mixer Control 2 */
STATUS DEV_ADEC_LeftOutMix2_RD2LO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[35] |=0x0100;
else WM8750Regs[35] &=0xFEFF;
return DEV_ADEC_WriteCmd(R35_Left_Out_Mix2, WM8750Regs[35]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftOutMix2_RI2LO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[35] |=0x0080;
else WM8750Regs[35] &=0xFF7F;
return DEV_ADEC_WriteCmd(R35_Left_Out_Mix2, WM8750Regs[35]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftOutMix2_RI2LOVOL(unsigned char vol)
{
USHORT volume, temp;
volume = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[35];
temp &= 0xFF8F;
WM8750Regs[35] = temp + volume;
return DEV_ADEC_WriteCmd(R35_Left_Out_Mix2, WM8750Regs[35]);
}
/*-------------------------------------------------------------------------*/
/* Right Mixer Control 1 */
STATUS DEV_ADEC_RightOutMix1_LD2RO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[36] |=0x0100;
else WM8750Regs[36] &=0xFEFF;
return DEV_ADEC_WriteCmd(R36_Right_Out_Mix1, WM8750Regs[36]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightOutMix1_LI2RO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[36] |=0x0080;
else WM8750Regs[36] &=0xFF7F;
return DEV_ADEC_WriteCmd(R36_Right_Out_Mix1, WM8750Regs[36]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightOutMix1_LI2ROVOL(unsigned char vol)
{
USHORT volume, temp;
volume = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[36];
temp &= 0xFF8F;
WM8750Regs[36] = temp + volume;
return DEV_ADEC_WriteCmd(R36_Right_Out_Mix1, WM8750Regs[36]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightOutMix1_RMIXSEL(unsigned char select)
{
switch(select)
{
case INPUT1 : WM8750Regs[36] &=0xFFF8;
break;
case INPUT2 : WM8750Regs[36] &=0xFFF9;
WM8750Regs[36] |=0x0001;
break;
case INPUT3 : WM8750Regs[36] &=0xFFFA;
WM8750Regs[36] |=0x0002;
break;
case ADC_Input : WM8750Regs[36] &=0xFFFB;
WM8750Regs[36] |=0x0003;
break;
case Differentail_Input : WM8750Regs[36] &=0xFFFC;
WM8750Regs[36] |=0x0004;
break;
}
return DEV_ADEC_WriteCmd(R36_Right_Out_Mix1, WM8750Regs[36]);
}
/*-------------------------------------------------------------------------*/
/* Right Mixer Control 2 */
STATUS DEV_ADEC_RightOutMix2_RD2RO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[37] |=0x0100;
else WM8750Regs[37] &=0xFEFF;
return DEV_ADEC_WriteCmd(R37_Right_Out_Mix2, WM8750Regs[37]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightOutMix2_RI2RO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[37] |=0x0080;
else WM8750Regs[37] &=0xFF7F;
return DEV_ADEC_WriteCmd(R37_Right_Out_Mix2, WM8750Regs[37]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightOutMix2_RI2ROVOL(unsigned char vol)
{
USHORT volume, temp;
volume = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[37];
temp &= 0xFF8F;
WM8750Regs[37] = temp + volume;
return DEV_ADEC_WriteCmd(R37_Right_Out_Mix2, WM8750Regs[37]);
}
/*-------------------------------------------------------------------------*/
/* Mono Mixer Control 1 */
STATUS DEV_ADEC_MonoOutMix1_LD2MO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[38] |=0x0100;
else WM8750Regs[38] &=0xFEFF;
return DEV_ADEC_WriteCmd(R38_Mono_Out_Mix1, WM8750Regs[38]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_MonoOutMix1_LI2MO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[38] |=0x0080;
else WM8750Regs[38] &=0xFF7F;
return DEV_ADEC_WriteCmd(R38_Mono_Out_Mix1, WM8750Regs[38]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_MonoOutMix1_LI2MOVOL(unsigned char vol)
{
USHORT volume, temp;
vol = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[38];
temp &= 0xFF8F;
WM8750Regs[38] = temp + volume;
return DEV_ADEC_WriteCmd(R38_Mono_Out_Mix1, WM8750Regs[38]);
}
/*-------------------------------------------------------------------------*/
/* Mono Mixer Control 2 */
STATUS DEV_ADEC_MonoOutMix2_RD2MO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[39] |=0x0100;
else WM8750Regs[39] &=0xFEFF;
return DEV_ADEC_WriteCmd(R39_Mono_Out_Mix2, WM8750Regs[39]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_MonoOutMix2_RI2MO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[39] |=0x0080;
else WM8750Regs[39] &=0xFF7F;
return DEV_ADEC_WriteCmd(R39_Mono_Out_Mix2, WM8750Regs[39]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_MonoOutMix2_RI2MOVOL(unsigned char vol)
{
USHORT volume, temp;
vol = vol << 4;
volume = (USHORT)(vol & 0x70);
temp = WM8750Regs[39];
temp &= 0xFF8F;
WM8750Regs[39] = temp + volume;
return DEV_ADEC_WriteCmd(R39_Mono_Out_Mix2, WM8750Regs[39]);
}
/*-------------------------------------------------------------------------*/
/* LOUT2 Volume */
STATUS DEV_ADEC_LOUT2Vol_LO2VU(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[40] |=0x0100;
else WM8750Regs[40] &=0xFEFF;
return DEV_ADEC_WriteCmd(R40_LOUT2_Volume, WM8750Regs[40]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LOUT2Vol_LO2ZC(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[40] |=0x0080;
else WM8750Regs[40] &=0xFF7F;
return DEV_ADEC_WriteCmd(R40_LOUT2_Volume, WM8750Regs[40]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LOUT2Vol_LOUT2VOL(int vol)
{
USHORT volume, temp;
volume = (USHORT)(vol & 0x7F);
temp = WM8750Regs[40];
temp &= 0xFF80;
WM8750Regs[40] = temp + volume;
return DEV_ADEC_WriteCmd(R40_LOUT2_Volume, WM8750Regs[40]);
}
/*-------------------------------------------------------------------------*/
/* ROUT2 Volume */
STATUS DEV_ADEC_ROUT2Vol_RO2VU(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[41] |=0x0100;
else WM8750Regs[41] &=0xFEFF;
return DEV_ADEC_WriteCmd(R41_ROUT2_Volume, WM8750Regs[41]);
}
/*---------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -