📄 wm8750.c
字号:
WM8750Regs[19] = temp + volume;
return DEV_ADEC_WriteCmd(R19_ALC3, WM8750Regs[19]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_ALC3_ATK(unsigned char time)
{
USHORT volume, temp;
volume = (USHORT)(time & 0x0F);
temp = WM8750Regs[19];
temp &= 0xFFF0;
WM8750Regs[19] = temp + volume;
return DEV_ADEC_WriteCmd(R19_ALC3, WM8750Regs[19]);
}
/*-------------------------------------------------------------------------*/
/* Noise Gate Control */
STATUS DEV_ADEC_NoiseGate_NGTH(unsigned char level)
{
USHORT volume, temp;
level = level << 3;
volume = (USHORT)(level & 0xF8);
temp = WM8750Regs[20];
temp &= 0xFF07;
WM8750Regs[20] = temp + volume;
return DEV_ADEC_WriteCmd(R20_Noise_Gate, WM8750Regs[20]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_NoiseGate_NGG(unsigned char type)
{
switch(type)
{
case PGA_Gain_Held_Constant : WM8750Regs[20] &=0xFFF9;
break;
case Mute_ADC_Output : WM8750Regs[20] &=0xFFFB;
WM8750Regs[20] |=0x0020;
break;
/* case Reserved_Donot_Use : WM8750Regs[20] |=0x0600;
break; */
}
return DEV_ADEC_WriteCmd(R20_Noise_Gate, WM8750Regs[20]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_NoiseGate_NGAT(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[20] |=0x0001;
else WM8750Regs[20] &=0xFFFE;
return DEV_ADEC_WriteCmd(R20_Noise_Gate, WM8750Regs[20]);
}
/*-------------------------------------------------------------------------*/
/* Left ADC Digital Volume */
STATUS DEV_ADEC_LeftAdcVol_LAVU(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[21] |=0x0100;
else WM8750Regs[21] &=0xFEFF;
return DEV_ADEC_WriteCmd(R21_Left_ADC_Volume, WM8750Regs[21]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_LeftAdcVol_LADCVOL(unsigned char vol)
{
USHORT volume, temp;
volume = (USHORT)(vol & 0xFF);
temp = WM8750Regs[21];
temp &= 0xFF00;
WM8750Regs[21] = temp + volume;
return DEV_ADEC_WriteCmd(R21_Left_ADC_Volume, WM8750Regs[21]);
}
/*-------------------------------------------------------------------------*/
/* Right ADC Digital Volume */
STATUS DEV_ADEC_RightdcVol_RAVU(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[22] |=0x0100;
else WM8750Regs[22] &=0xFEFF;
return DEV_ADEC_WriteCmd(R22_Right_ADC_Volume, WM8750Regs[22]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_RightdcVol_RADCVOL(unsigned char vol)
{
USHORT volume, temp;
volume = (USHORT)(vol & 0xFF);
temp = WM8750Regs[22];
temp &= 0xFF00;
WM8750Regs[22] = temp + volume;
return DEV_ADEC_WriteCmd(R22_Right_ADC_Volume, WM8750Regs[22]);
}
/*-------------------------------------------------------------------------*/
/* Additional Control 1 */
STATUS DEV_ADEC_AddiCtrl1_TSDEN(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[23] |=0x0100;
else WM8750Regs[23] &=0xFEFF;
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl1_VSEL(unsigned char avdd)
{
switch(avdd)
{
case AVDD_18V : WM8750Regs[23] &=0xFF3F;
break;
case AVDD_25V : WM8750Regs[23] &=0xFF7F;
WM8750Regs[23] |=0x0040;
break;
case AVDD_33V : WM8750Regs[23] |=0x00C0;
break;
}
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl1_DMONOMIX(unsigned char select)
{
switch(select)
{
case DMONOMIX_Stereo : WM8750Regs[23] &=0xFFCF;
break;
case MONO_DACL : WM8750Regs[23] &=0xFFDF;
WM8750Regs[23] |=0x0010;
break;
case MONO_DACR : WM8750Regs[23] &=0xFFEF;
WM8750Regs[23] |=0x0020;
break;
case DACL_DACR : WM8750Regs[23] |=0x0030;
break;
}
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl1_DATSEL(unsigned char select)
{
switch(select)
{
case LLRR : WM8750Regs[23] &=0xFFF3;
break;
case LLRL : WM8750Regs[23] &=0xFFF7;
WM8750Regs[23] |=0x0004;
break;
case LRRR : WM8750Regs[23] &=0xFFFB;
WM8750Regs[23] |=0x0008;
break;
case LRRL : WM8750Regs[23] |=0x000C;
break;
}
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl1_DACINV(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[23] |=0x0002;
else WM8750Regs[23] &=0xFFFD;
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl1_TOEN(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[23] |=0x0001;
else WM8750Regs[23] &=0xFFFE;
return DEV_ADEC_WriteCmd(R23_Additional_Control1, WM8750Regs[23]);
}
/*-------------------------------------------------------------------------*/
/* Additional Control 2 */
STATUS DEV_ADEC_AddiCtrl2_OUT3SW(unsigned char select)
{
switch(select)
{
case OUT3_VREF : WM8750Regs[24] &=0xFE7F;
break;
case ROUT1_Signal : WM8750Regs[24] &=0xFEFF;
WM8750Regs[24] |=0x0080;
break;
case MONOOUT : WM8750Regs[24] &=0xFF7F;
WM8750Regs[24] |=0x0100;
break;
case Right_Mixer_Output : WM8750Regs[24] |=0x0180;
break;
}
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_HPSWEN(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0040;
else WM8750Regs[24] &=0xFFBF;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_HPSWPOL(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0020;
else WM8750Regs[24] &=0xFFDF;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_ROUT2INV(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0010;
else WM8750Regs[24] &=0xFFEF;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_TRI(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0008;
else WM8750Regs[24] &=0xFFF7;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_LRCM(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0004;
else WM8750Regs[24] &=0xFFFB;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_ADCOSR(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0002;
else WM8750Regs[24] &=0xFFFD;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_AddiCtrl2_DACOSR(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[24] |=0x0001;
else WM8750Regs[24] &=0xFFFE;
return DEV_ADEC_WriteCmd(R24_Additional_Control2, WM8750Regs[24]);
}
/*-------------------------------------------------------------------------*/
/* Power Menagement 1 */
STATUS DEV_ADEC_PwrMgmt1_VMIDSEL(unsigned char select)
{
switch(select)
{
case Vmid_Off : WM8750Regs[25] &=0xFE7F;
break;
case Divider_50k_ohm : WM8750Regs[25] &=0xFEFF;
WM8750Regs[25] |=0x0080;
break;
case Divider_500k_ohm : WM8750Regs[25] &=0xFF7F;
WM8750Regs[25] |=0x0100;
break;
case Divider_5k_ohm : WM8750Regs[25] |=0x0180;
break;
}
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_VREF(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0040;
else WM8750Regs[25] &=0xFFBF;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_AIN(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0030;
else WM8750Regs[25] &=0xFFCF;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_AINL(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0020;
else WM8750Regs[25] &=0xFFDF;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_AINR(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0010;
else WM8750Regs[25] &=0xFFEF;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_ADC(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x000C;
else WM8750Regs[25] &=0xFFF3;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_ADCL(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0008;
else WM8750Regs[25] &=0xFFF7;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_ADCR(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0004;
else WM8750Regs[25] &=0xFFFB;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_MICB(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] |=0x0002;
else WM8750Regs[25] &=0xFFFD;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt1_DIGENB(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[25] &=0xFFFE;
else WM8750Regs[25] |=0x0001;
return DEV_ADEC_WriteCmd(R25_PWR_MGMT1, WM8750Regs[25]);
}
/*-------------------------------------------------------------------------*/
/* Power Menagement 2 */
STATUS DEV_ADEC_PwrMgmt2_DAC(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0180;
else WM8750Regs[26] &=0xFE7F;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_DACL(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0100;
else WM8750Regs[26] &=0xFEFF;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_DACR(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0080;
else WM8750Regs[26] &=0xFF7F;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_OUT1(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0060;
else WM8750Regs[26] &=0xFF9F;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_LOUT1(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0040;
else WM8750Regs[26] &=0xFFBF;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_ROUT1(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0020;
else WM8750Regs[26] &=0xFFDF;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_OUT2(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0018;
else WM8750Regs[26] &=0xFFE7;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_LOUT2(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0010;
else WM8750Regs[26] &=0xFFEF;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_ROUT2(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0008;
else WM8750Regs[26] &=0xFFF7;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_MONO(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0004;
else WM8750Regs[26] &=0xFFFB;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
/*-------------------------------------------------------------------------*/
STATUS DEV_ADEC_PwrMgmt2_OUT3(BOOL trueorfalse)
{
if(trueorfalse) WM8750Regs[26] |=0x0002;
else WM8750Regs[26] &=0xFFFD;
return DEV_ADEC_WriteCmd(R26_PWR_MGMT2, WM8750Regs[26]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -