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

📄 wm8750.c

📁 dm270 source code
💻 C
📖 第 1 页 / 共 5 页
字号:

/*-------------------------------------------------------------------------*/
/*	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 + -