原子哥:
我这里有个问题想请教您,我目前的项目用到了ARM F429做一个多路的音频设备。用到两路音频总线,一路用sai总结接了多个数字mic,一路用i2s接了你们历程里面的wm8978。wm8978这一路稍微和历程的配置有点不一样。我们用Rout1和Lout1做的。附件如下图所示:
用sai的那一路播放和录音都正常,但是wm8978这一路没有声音,我们量Rout1和Lout1引脚也没有电平,输入引脚mck bclk LRC和DACDATA的信号都正常,主时钟12.3M,帧时钟48k、位时钟1.536M,数据脚的数据也正常。
我是用iic配置wm8978,读写都正确。所以不太确定是不是配置的时候搞错了那个地方。我这边确认DAC和Lout、Rout都使能了。[mw_shl_code=applescript,true] //通用设置
//res = WM8978_Write_Reg(1,0X1B); //R1,BIASENé使能,VMIDSEL(5K)
//res = WM8978_Write_Reg(2,0X1B0); //R2,ROUT1,LOUT1êä3öê1Äü(¶ú»ú¿éòÔ1¤×÷),BOOSTENR,BOOSTENLê1Äü
//res = WM8978_Write_Reg(3,0X6C); //R3,LOUT2,ROUT2êä3öê1Äü(à®°è1¤×÷),RMIX,LMIXê1Äü
res = WM8978_Write_Reg(1,0X0B);
res = WM8978_Read_Reg(1); //确认iic写成功了
res = WM8978_Write_Reg(2,0X1b0);
res = WM8978_Read_Reg(2);
res = WM8978_Write_Reg(3,0X6f);
res = WM8978_Read_Reg(3);
res = WM8978_Write_Reg(6,0); //R6,MCLK外部提供
res = WM8978_Write_Reg(43,1<<4); //R43,INVROUT2驱动喇叭
res = WM8978_Write_Reg(47,1<<8); //R47 mic增益,可删除
res = WM8978_Write_Reg(48,1<<8); //R48
res = WM8978_Write_Reg(49,1<<1); //R49,TSDEN,过热保护
res = WM8978_Write_Reg(49,1<<2); //R49,SPEAKER BOOST,1.5x
res = WM8978_Write_Reg(10,1<<3); //R10,SOFTMUTE 关闭
res = WM8978_Write_Reg(14,1<<3); //R14,ADC 128x
//′ò¿aDAC
WM8978_ADDA_Cfg(1,0); //开ADC
WM8978_Input_Cfg(0,0,0);//关闭输入
WM8978_Output_Cfg(1,0); //开DAC [/mw_shl_code] |