原子哥:
我这里有个问题想请教您,我目前的项目用到了
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都使能了。[AppleScript]
纯文本查看 复制代码
//通用设置//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);//R48res = 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//′ò¿aDACWM8978_ADDA_Cfg(1,0);//开ADCWM8978_Input_Cfg(0,0,0);//关闭输入WM8978_Output_Cfg(1,0);//开DAC