WM8988 配置和注意事项

最近笔者在做声卡相关设备,既要满足优质的人声输入控制,也要有良好的输出调制,对比多家调试了多款Codec,最终选用了WM8988。因为配置比较复杂,这里笔者把一些关键部分提供给大家参考参考

先来看看WM8988内部结构框图,开发者可通过它和相关的几十个寄存器衔接起来做出适合的配置

下面贴下,初始化代码

#define WM8988_DEV0_ADDR  (0x1a) //   7~1 bit addr
#define WM8988_DEV1_ADDR  (0x1b) //   7~1 bit addr

#define WM8988_LINVOL    0x00
#define WM8988_RINVOL    0x01
#define WM8988_LOUT1V    0x02
#define WM8988_ROUT1V    0x03
#define WM8988_ADCDAC    0x05
#define WM8988_IFACE     0x07
#define WM8988_SRATE     0x08
#define WM8988_LDACVOL   0x0a
#define WM8988_RDACVOL   0x0b
#define WM8988_BASS      0x0c
#define WM8988_TREBLE    0x0d
#define WM8988_RESET     0x0f
#define WM8988_3D        0x10
#define WM8988_ALC1      0x11
#define WM8988_ALC2      0x12
#define WM8988_ALC3      0x13
#define WM8988_NGATE     0x14
#define WM8988_LADCVOL   0x15
#define WM8988_RADCVOL   0x16
#define WM8988_ADCTL1    0x17
#define WM8988_ADCTL2    0x18
#define WM8988_PWR1      0x19
#define WM8988_PWR2      0x1a
#define WM8988_ADCTL3    0x1b
#define WM8988_ADCIN     0x1f  //可配置输入MIX
#define WM8988_LADCIN    0x20  //MIC 相关配置
#define WM8988_RADCIN    0x21  //MIC 相关配置
#define WM8988_LOUTM1    0x22
#define WM8988_LOUTM2    0x23
#define WM8988_ROUTM1    0x24
#define WM8988_ROUTM2    0x25
#define WM8988_LOUT2V    0x28
#define WM8988_ROUT2V    0x29
#define WM8988_LPPB      0x43
#define WM8988_NUM_REG   0x44

#define wm8988_DVE0_write_reg(reg,data)         xBSP_Codec_Write(WM8988_DEV0_ADDR, (uint8_t)((reg<<1)|(data>>8)), (uint8_t)(data&0xff)) 

static void xSYS_WM8988_Config(void)
{
	//Data Reset
	wm8988_DVE0_write_reg(WM8988_RESET,0x00);

	//19h 1ah Power Management
	wm8988_DVE0_write_reg(WM8988_PWR1,0x01);
	wm8988_DVE0_write_reg(WM8988_PWR2,0x00);   //inactive

	//ADC LR Signal path: LRINSEL  LRMICBOOST  
	wm8988_DVE0_write_reg(WM8988_LADCIN,0x40);  //0x00  //0x40  选通 输入2  
	wm8988_DVE0_write_reg(WM8988_RADCIN,0x40);  //0x00	

	//Left out Mix 1/2  //这里只走DAC转换的数据
	wm8988_DVE0_write_reg(WM8988_LOUTM1,0x122);       //0x1a0 DAC 和 MIXSEL 都走这里
	wm8988_DVE0_write_reg(WM8988_LOUTM2,0x70);    //70

	//Right out Mix 1/2
	wm8988_DVE0_write_reg(WM8988_ROUTM1,0x70);    //70
	wm8988_DVE0_write_reg(WM8988_ROUTM2,0x122);

	//19h 1ah Power Management
	// wm8988_DVE0_write_reg(WM8988_PWR1,0x1fc);  //
	// wm8988_DVE0_write_reg(WM8988_PWR2,0x1f8);  //active·
	wm8988_DVE0_write_reg(WM8988_PWR1,0x17c);  //
	wm8988_DVE0_write_reg(WM8988_PWR2,0x1f0);  //active 三路输出

	//ADC and DAC Contrl
	wm8988_DVE0_write_reg(WM8988_ADCDAC,0x08);   //08 Mute	

	//LR Input volume
	wm8988_DVE0_write_reg(WM8988_LINVOL,0x117);  //197
	wm8988_DVE0_write_reg(WM8988_RINVOL,0x117);  

	//LR Out1 volume
	wm8988_DVE0_write_reg(WM8988_LOUT1V,0x100);  //0dB:179
	wm8988_DVE0_write_reg(WM8988_ROUT1V,0x100);  

	//LR OUT2 VOL
	wm8988_DVE0_write_reg(WM8988_LOUT2V,0x179);  //0dB
	wm8988_DVE0_write_reg(WM8988_ROUT2V,0x100);  //这个不输出 	

	//LR ADC Digital Vol
	wm8988_DVE0_write_reg(WM8988_LADCVOL,0x1c3);  //MIC 默认 0 dB
	wm8988_DVE0_write_reg(WM8988_RADCVOL,0x1c3);  	

	//LR DAC Volume
	wm8988_DVE0_write_reg(WM8988_LDACVOL,0x1ff);  //0dB  //0x1ff
	wm8988_DVE0_write_reg(WM8988_RDACVOL,0x1ff);  // 			
	
	//Audio Interface Format
	wm8988_DVE0_write_reg(WM8988_IFACE,0x0a);  //24bit I2s

    //Sample Rate
	wm8988_DVE0_write_reg(WM8988_SRATE,0x20);  	

	//Bass/Treble Control
	wm8988_DVE0_write_reg(WM8988_BASS,0x0f);  
	wm8988_DVE0_write_reg(WM8988_TREBLE,0x0f); 

	//3D enhance
	wm8988_DVE0_write_reg(WM8988_3D,0x00); 

	//ALG Ctrl 1/2/3
	wm8988_DVE0_write_reg(WM8988_ALC1,0x7B); 
	wm8988_DVE0_write_reg(WM8988_ALC2,0x00); 
	wm8988_DVE0_write_reg(WM8988_ALC3,0x32); 

	//Noise Gate
	wm8988_DVE0_write_reg(WM8988_NGATE,0x00); 

	//Additional ctrl 1/2/3			
	wm8988_DVE0_write_reg(WM8988_ADCTL1,0x00);
	wm8988_DVE0_write_reg(WM8988_ADCTL2,0x00); 	  
	wm8988_DVE0_write_reg(WM8988_ADCTL3,0x00); 

    //Low Power Playback
	wm8988_DVE0_write_reg(WM8988_LPPB,0x00); 

    //ADC input mode
	wm8988_DVE0_write_reg(WM8988_ADCIN,0x100);   //0x00

	//ADC and DAC Contrl
	wm8988_DVE0_write_reg(WM8988_ADCDAC,0x00);
}


如代码和上图寄存器图所示,可知道输入输出音量相关的寄存器就有十个左右,工程师需根据实际情况去做调节(模拟,数字均可调节);另外还有混合相关的寄存器值得注意。

电路设计可参考如下:

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值