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

📄 wm8750.c

📁 dm270 source code
💻 C
📖 第 1 页 / 共 5 页
字号:
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_ROUT1Vol_RO1ZC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[3] |=0x0080;
	else			WM8750Regs[3] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R3_ROUT1_Volume, WM8750Regs[3]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_ROUT1Vol_ROUT1VOL(int vol)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(vol& 0x7F);
	temp = WM8750Regs[3];
	temp &= 0xFF80;
	WM8750Regs[3] = temp + volume;
	return	DEV_ADEC_WriteCmd(R3_ROUT1_Volume, WM8750Regs[3]);
}

/*-------------------------------------------------------------------------*/
/*	ADC DAC Control	*/
STATUS	DEV_ADEC_AdcDacCtrl_ADCDIV2(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[5] |=0x0100;
	else			WM8750Regs[5] &=0xFEFF;
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_DACDIV2(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[5] |=0x0080;
	else			WM8750Regs[5] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_ADCPOL(unsigned char polarity)
{
	switch(polarity)
	{
		case	Polarity_Not_Inverted	:	WM8750Regs[5] &=0xFF9F;
				break;
		case	L_Polarity_Invert		:	WM8750Regs[5] &=0xFFBF;
											WM8750Regs[5] |=0x0020;
				break;
		case	R_Polarity_Invert		:	WM8750Regs[5] &=0xFFDF;
											WM8750Regs[5] |=0x0040;
				break;
		case	L_And_R_Polarity_Invert	:	WM8750Regs[5] |=0x0060;
				break;
	}
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_HPOR(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[5] |=0x0010;
	else			WM8750Regs[5] &=0xFFEF;
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_DACMUTE(BOOL trueorfalse)
{	
	if(trueorfalse)	WM8750Regs[5] |=0x0008;
	else			WM8750Regs[5] &=0xFFF7;
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_DEEMPH(unsigned char sample_rate_select)
{	
	switch(sample_rate_select)	
	{
		case	NO_DEEMP			:	WM8750Regs[5] &=0xFFF9;
				break;
		case	R5_Sample_Rate_32k	:	WM8750Regs[5] &=0xFFFB;
										WM8750Regs[5] |=0x0002;
				break;
		case	R5_Sample_Rate_44k	:	WM8750Regs[5] &=0xFFFD;
										WM8750Regs[5] |=0x0004;
				break;
		case	R5_Sample_Rate_48k	:	WM8750Regs[5] |=0x0006;
				break;
	}
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AdcDacCtrl_ADCHPD(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[5] |=0x0001;
	else			WM8750Regs[5] &=0xFFFE;
	return	DEV_ADEC_WriteCmd(R5_ADC_DAC_Control, WM8750Regs[5]);
}

/*-------------------------------------------------------------------------*/
/*	Audio Interface	*/
STATUS	DEV_ADEC_AudioInterface_BCLKINV(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[7] |=0x0080;
	else			WM8750Regs[7] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AudioInterface_MS(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[7] |=0x0040;
	else			WM8750Regs[7] &=0xFFBF;
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AudioInterface_LRSWAP(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[7] |=0x0020;
	else			WM8750Regs[7] &=0xFFDF;
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AudioInterface_LRP(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[7] |=0x0010;
	else			WM8750Regs[7] &=0xFFEF;
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AudioInterface_WL(unsigned char bits)
{
	switch(bits)	
	{
		case	Bits_16	:	WM8750Regs[7] &=0xFFF3;
				break;
		case	Bits_20	:	WM8750Regs[7] &=0xFFF7;
							WM8750Regs[7] |=0x0004;
				break;
		case	Bits_24	:	WM8750Regs[7] &=0xFFFB;
							WM8750Regs[7] |=0x0008;
				break;
		case	Bits_32	:	WM8750Regs[7] |=0x000C;
				break;
	}
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_AudioInterface_FORMAT(unsigned char select)
{
	switch(select)	
	{
		case	Right_Justified	:	WM8750Regs[7] &=0xFFFC;
				break;
		case	Left_Justified	:	WM8750Regs[7] &=0xFFFD;
									WM8750Regs[7] |=0x0001;
				break;
		case	I2S_Format		:	WM8750Regs[7] &=0xFFFE;
									WM8750Regs[7] |=0x0002;
				break;
		case	DSP_Mode		:	WM8750Regs[7] |=0x0003;
				break;
	}
	return	DEV_ADEC_WriteCmd(R7_Audio_Interface, WM8750Regs[7]);
}

/*-------------------------------------------------------------------------*/
/*	Clocking and Sample Rate Control	*/
STATUS	DEV_ADEC_SampleRate_CLKDIV2(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[8] |=0x0040;
	else			WM8750Regs[8] &=0xFFBF;
	return	DEV_ADEC_WriteCmd(R8_Sample_Rate, WM8750Regs[8]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_SampleRate_SR(unsigned char sample_rate)
{
	USHORT	s_rate, temp;
	
	sample_rate = sample_rate << 1;
	s_rate = (USHORT)(sample_rate & 0x3E);
	temp = WM8750Regs[8];
	temp &= 0xFFC1;
	WM8750Regs[8] = temp + s_rate;
	return	DEV_ADEC_WriteCmd(R8_Sample_Rate, WM8750Regs[8]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_SampleRate_USB(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[8] |=0x0001;
	else			WM8750Regs[8] &=0xFFFE;
	return	DEV_ADEC_WriteCmd(R8_Sample_Rate, WM8750Regs[8]);
}

/*-------------------------------------------------------------------------*/
/*	Left Channel Digital volume	*/
STATUS	DEV_ADEC_LeftDacVol_LDVU(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[10] |=0x0100;
	else			WM8750Regs[10] &=0xFEFF;
	return	DEV_ADEC_WriteCmd(R10_Left_DAC_Volume, WM8750Regs[10]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_LeftDacVol_LDACVOL(unsigned char vol)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(vol& 0xFF);
	temp = WM8750Regs[10];
	temp &= 0xFF00;
	WM8750Regs[10] = temp + volume;
	return	DEV_ADEC_WriteCmd(R10_Left_DAC_Volume, WM8750Regs[10]);
}

/*-------------------------------------------------------------------------*/
/*	Right Channel Digital volume	*/
STATUS	DEV_ADEC_RightDacVol_RDVU(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[11] |=0x0100;
	else			WM8750Regs[11] &=0xFEFF;
	return	DEV_ADEC_WriteCmd(R11_Right_DAC_Volume, WM8750Regs[11]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_RightDacVol_RDACVOL(unsigned char vol)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(vol& 0xFF);
	temp = WM8750Regs[11];
	temp &= 0xFF00;
	WM8750Regs[11] = temp + volume;
	return	DEV_ADEC_WriteCmd(R11_Right_DAC_Volume, WM8750Regs[11]);
}

/*-------------------------------------------------------------------------*/
/*	Bass Control	*/
STATUS	DEV_ADEC_BassCtrl_BB(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[12] |=0x0080;
	else			WM8750Regs[12] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R12_Bass_Control, WM8750Regs[12]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_BassCtrl_BC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[12] |=0x0040;
	else			WM8750Regs[12] &=0xFFBF;
	return	DEV_ADEC_WriteCmd(R12_Bass_Control, WM8750Regs[12]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_BassCtrl_BASS(unsigned char vol)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(vol& 0x0F);
	temp = WM8750Regs[12];
	temp &= 0xFFF0;
	WM8750Regs[12] = temp + volume;
	return	DEV_ADEC_WriteCmd(R12_Bass_Control, WM8750Regs[12]);
}

/*-------------------------------------------------------------------------*/
/*	Treble Control	*/
STATUS	DEV_ADEC_TrebleCtrl_TC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[13] |=0x0040;
	else			WM8750Regs[13] &=0xFFBF;
	return	DEV_ADEC_WriteCmd(R13_Treble_Control, WM8750Regs[13]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_TrebleCtrl_TRBL(unsigned char vol)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(vol& 0x0F);
	temp = WM8750Regs[13];
	temp &= 0xFFF0;
	WM8750Regs[13] = temp + volume;
	return	DEV_ADEC_WriteCmd(R13_Treble_Control, WM8750Regs[13]);
}

/*-------------------------------------------------------------------------*/
/*	Reset	*/
STATUS	DEV_ADEC_Reset(void)
{
	return DEV_ADEC_WriteCmd( R15_Audio_Reset, 0 );
}

/*-------------------------------------------------------------------------*/
/*	3D Control	*/
STATUS	DEV_ADEC_3dCtrl_MODE3D(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[16] |=0x0080;
	else			WM8750Regs[16] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R16_A3D_Control, WM8750Regs[16]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_3dCtrl_3DUC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[16] |=0x0040;
	else			WM8750Regs[16] &=0xFFBF;
	return	DEV_ADEC_WriteCmd(R16_A3D_Control, WM8750Regs[16]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_3dCtrl_3DLC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[16] |=0x0020;
	else			WM8750Regs[16] &=0xFFDF;
	return	DEV_ADEC_WriteCmd(R16_A3D_Control, WM8750Regs[16]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_3dCtrl_3DDEPTH(unsigned char depth)
{
	USHORT	volume, temp;
	
	depth = depth << 1;
	volume = (USHORT)(depth& 0x1E);
	temp = WM8750Regs[16];
	temp &= 0xFFE1;
	WM8750Regs[16] = temp + volume;
	return	DEV_ADEC_WriteCmd(R16_A3D_Control, WM8750Regs[16]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_3dCtrl_3DEN(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[16] |=0x0001;
	else			WM8750Regs[16] &=0xFFFE;
	return	DEV_ADEC_WriteCmd(R16_A3D_Control, WM8750Regs[16]);
}

/*-------------------------------------------------------------------------*/
/*	ALC Control 1	*/
STATUS	DEV_ADEC_ALC1_ALCSEL(unsigned char select)
{
	switch(select)	
	{
		case	ALC_Off				:	WM8750Regs[17] &=0xFE7F;
				break;
		case	Right_Channel_Only	:	WM8750Regs[17] &=0xFEFF;
										WM8750Regs[17] |=0x0080;
				break;
		case	Left_Channel_Only	:	WM8750Regs[17] &=0xFF7F;
										WM8750Regs[17] |=0x0100;
				break;
		case	ACLSEL_Stereo		:	WM8750Regs[17] |=0x0180;
				break;
	}
	return	DEV_ADEC_WriteCmd(R17_ALC1, WM8750Regs[17]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_ALC1_MAXGAIN(unsigned char gain)
{
	USHORT	volume, temp;
	
	gain = gain << 4;
	volume = (USHORT)(gain& 0x70);
	temp = WM8750Regs[17];
	temp &= 0xFF8F;
	WM8750Regs[17] = temp + volume;
	return	DEV_ADEC_WriteCmd(R17_ALC1, WM8750Regs[17]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_ALC1_ALCL(unsigned char level)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(level & 0x0F);
	temp = WM8750Regs[17];
	temp &= 0xFFF0;
	WM8750Regs[17] = temp + volume;
	return	DEV_ADEC_WriteCmd(R17_ALC1, WM8750Regs[17]);
}

/*-------------------------------------------------------------------------*/
/*	ALC Control 2	*/
STATUS	DEV_ADEC_ALC2_ALCZC(BOOL trueorfalse)
{
	if(trueorfalse)	WM8750Regs[18] |=0x0080;
	else			WM8750Regs[18] &=0xFF7F;
	return	DEV_ADEC_WriteCmd(R18_ALC2, WM8750Regs[18]);
}
/*-------------------------------------------------------------------------*/
STATUS	DEV_ADEC_ALC2_HLD(unsigned char time)
{
	USHORT	volume, temp;
	
	volume = (USHORT)(time & 0x0F);
	temp = WM8750Regs[18];
	temp &= 0xFFF0;
	WM8750Regs[18] = temp + volume;
	return	DEV_ADEC_WriteCmd(R18_ALC2, WM8750Regs[18]);
}

/*-------------------------------------------------------------------------*/
/*	ALC Control 3	*/
STATUS	DEV_ADEC_ALC3_DCY(unsigned char time)
{
	USHORT	volume, temp;
	
	time = time << 4;
	volume = (USHORT)(time & 0xF0);
	temp = WM8750Regs[19];
	temp &= 0xFF0F;

⌨️ 快捷键说明

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