//WM8978 MIC增益设置(不包括BOOST的20dB,MIC-->ADC输入部分的增益) //gain:0~63,对应-12dB~35.25dB,0.75dB/Step void WM8978_MIC_Gain(u8 gain) { }
//WM8978 L2/R2(也就是Line In)增益设置(L2/R2-->ADC输入部分的增益) //gain:0~7,0表示通道禁止,1~7,对应-12dB~6dB,3dB/Step void WM8978_LINEIN_Gain(u8 gain) {
u16 regval; gain&=0X07;
regval=WM8978_Read_Reg(47); //读取R47 regval&=~(7<<4);
//清除原来的设置
gain&=0X3F;
WM8978_Write_Reg(45,gain);
//R45,左通道PGA设置
WM8978_Write_Reg(46,gain|1<<8); //R46,右通道PGA设置
WM8978_Write_Reg(47,regval|gain<<4);//设置R47
regval=WM8978_Read_Reg(48); //读取R48 regval&=~(7<<4);
//清除原来的设置
WM8978_Write_Reg(48,regval|gain<<4);//设置R48 }
//WM8978 AUXR,AUXL(PWM音频部分)增益设置(AUXR/L-->ADC输入部分的增益) //gain:0~7,0表示通道禁止,1~7,对应-12dB~6dB,3dB/Step void WM8978_AUX_Gain(u8 gain)
16
{
u16 regval; gain&=0X07;
regval=WM8978_Read_Reg(47); //读取R47 regval&=~(7<<0);
//清除原来的设置
WM8978_Write_Reg(47,regval|gain<<0);//设置R47
regval=WM8978_Read_Reg(48); //读取R48 regval&=~(7<<0);
//清除原来的设置
WM8978_Write_Reg(48,regval|gain<<0);//设置R48 }
//设置I2S工作模式
//fmt:0,LSB(右对齐);1,MSB(左对齐);2,飞利浦标准I2S;3,PCM/DSP; //len:0,16位;1,20位;2,24位;3,32位; void WM8978_I2S_Cfg(u8 fmt,u8 len) {
fmt&=0X03;
len&=0X03;//限定范围
WM8978_Write_Reg(4,(fmt<<3)|(len<<5)); //R4,WM8978工作模式设置
}
//设置耳机左右声道音量 //voll:左声道音量(0~63) //volr:右声道音量(0~63)
void WM8978_HPvol_Set(u8 voll,u8 volr)
17
{
voll&=0X3F;
volr&=0X3F;//限定范围
if(voll==0)voll|=1<<6;//音量为0时,直接mute if(volr==0)volr|=1<<6;//音量为0时,直接mute WM8978_Write_Reg(52,voll);
//R52,耳机左声道音量设置
WM8978_Write_Reg(53,volr|(1<<8)); //R53,耳机右声道音量设置,同步更新(HPVU=1)
}
//设置喇叭音量
//voll:左声道音量(0~63) void WM8978_SPKvol_Set(u8 volx) {
volx&=0X3F;//限定范围
if(volx==0)volx|=1<<6;//音量为0时,直接mute
//R54,喇叭左声道音量设置
WM8978_Write_Reg(54,volx);
WM8978_Write_Reg(55,volx|(1<<8)); //R55,喇叭右声道音量设置,同步更新(SPKVU=1)
}
//设置3D环绕声
//depth:0~15(3D强度,0最弱,15最强) void WM8978_3D_Set(u8 depth) {
depth&=0XF;//限定范围
WM8978_Write_Reg(41,depth); //R41,3D环绕设置
18
}
//设置EQ/3D作用方向 //dir:0,在ADC起作用 // 1,在DAC起作用(默认) void WM8978_EQ_3D_Dir(u8 dir) {
u16 regval;
regval=WM8978_Read_Reg(0X12); if(dir)regval|=1<<8; else regval&=~(1<<8);
WM8978_Write_Reg(18,regval);//R18,EQ1的第9位控制EQ/3D方向 }
//设置EQ1
//cfreq:截止频率,0~3,分别对应:80/105/135/175Hz //gain:增益,0~24,对应-12~+12dB void WM8978_EQ1_Set(u8 cfreq,u8 gain) {
u16 regval;
cfreq&=0X3;//限定范围 if(gain>24)gain=24; gain=24-gain;
regval=WM8978_Read_Reg(18); regval&=0X100;
regval|=cfreq<<5; //设置截止频率
19
相关推荐: