新手入门
- 积分
- 19
- 金钱
- 19
- 注册时间
- 2019-5-2
- 在线时间
- 6 小时
|
1金钱
STM32F407的板子外接WM8978模块,打算用L2和R2输入(3.5mm接口),使用LOOPBACK功能将AD的数据直接传给DA(为了使用内置的均衡器),然后经LOUT1和ROUT1输出(耳机)。按照这个思路有了以下的配置代码,对WM8978寄存器的进行配置以后OUT1完全没有输出,不知道是哪里配置错了,求助各位大大,感激不尽!!!
(以下的寄存器都进行了宏定义,看看注释)
[mw_shl_code=c,true]
//软复位
WM8978_Write_Reg(RST,0x000);
/*使能*/
//Vmin电阻选择5k(快速启动)/开启模拟电路偏置/未使用输出封锁
WM8978_Write_Reg(PWR_M1,VMIN_SEL_5K|BIAS_EN|BUF_IO_EN);
//ADC使能/输出1使能/推子使能
WM8978_Write_Reg(PWR_M2,ADC_EN_L|ADC_EN_R|LOUT1_EN|ROUT1_EN|BOOST_EN_L|BOOST_EN_R);
//DAC使能/混音器使能
WM8978_Write_Reg(PWR_M3,DAC_EN_L|DAC_EN_R|MIX_EN_L|MIX_EN_R);
/*信号路径*/
/*模拟输入*/
//PGA输入选择:无
WM8978_Write_Reg(IN,0);
//PGA增益:关闭
WM8978_Write_Reg(IN_L_GAIN,INP_PGA_MUTE);
WM8978_Write_Reg(IN_R_GAIN,INP_PGA_MUTE);
//推子 2 R2 +0db
WM8978_Write_Reg(ADC_L_BOOST,PGA_BOOST|(5<<OF_LR2_2_BOOST_VOL));
WM8978_Write_Reg(ADC_R_BOOST,PGA_BOOST|(5<<OF_LR2_2_BOOST_VOL));
/*ADC*/
//过采样x128,高通滤波
WM8978_Write_Reg(ADCC,ADC_OSR|HPF_EN);
//+0db
WM8978_Write_Reg(ADC_L_VOL,255);
WM8978_Write_Reg(ADC_R_VOL,255|ADC_VU);
//开启环回
WM8978_Write_Reg(CMP,LOOPBACK);
/*DAC*/
//过采样x128
WM8978_Write_Reg(DACC,DAC_OSR);
//+0db
WM8978_Write_Reg(DAC_L_VOL,255);
WM8978_Write_Reg(DAC_R_VOL,255|DAC_VU);
/*模拟输出*/
//过热保护使能
WM8978_Write_Reg(OUT,TSD_EN);
//混音器输入选择:DAC
WM8978_Write_Reg(MIX_L,DAC_2_MIX);
WM8978_Write_Reg(MIX_R,DAC_2_MIX);
//OUT1 +0db
WM8978_Write_Reg(OUT1_L_VOL,0x39|OUTx_ZC);
WM8978_Write_Reg(OUT1_R_VOL,0x39|OUTx_ZC|OUTx_VU);
[/mw_shl_code]
|
|