OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6031|回复: 1

请教,WM8978 AUX输入问题

[复制链接]

11

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2014-10-10
在线时间
68 小时
发表于 2019-3-12 16:26:54 | 显示全部楼层 |阅读模式
1金钱
STM32F429的开发板,板上WM8978用AUX输入,在录音前端AUX输入录音正常。我现在想混音到后端的LMIX和RMIX 中,同时和LDAC和RDAC混音通过LOUT1和LOUT2输出
LDAC和RDAC输出现在已经弄好了。现在就AUX混音一直没声音
驱动基本用的原子哥的驱动
u8 WM8978_Init(void)
{
        u8 res;
        IIC_Init();                 //初始化IIC接口
        res=WM8978_Write_Reg(0,0);        //软复位WM8978
        if(res)return 1;                        //发送指令失败,WM8978异常
        //以下为通用设置        0X1B
        WM8978_Write_Reg(1,0X1F);        //R1,MICEN设置为1(MIC使能),BIASEN设置为1(模拟器工作),VMIDSEL[1:0]设置为:11(5K)
        WM8978_Write_Reg(2,0X1B0);        //R2,ROUT1,LOUT1输出使能(耳机可以工作),BOOSTENR,BOOSTENL使能
        WM8978_Write_Reg(3,0X6C);        //R3,LOUT2,ROUT2输出使能(喇叭工作),RMIX,LMIX使能       
        WM8978_Write_Reg(6,0);                //R6,MCLK由外部提供
        WM8978_Write_Reg(43,1<<4);        //R43,INVROUT2反向,驱动喇叭
        WM8978_Write_Reg(47,1<<8);        //R47设置,PGABOOSTL,左通道MIC获得20倍增益
        WM8978_Write_Reg(48,1<<8);        //R48设置,PGABOOSTR,右通道MIC获得20倍增益
        WM8978_Write_Reg(49,1<<1);        //R49,TSDEN,开启过热保护
        WM8978_Write_Reg(49,1<<2);        //R49,SPEAKER BOOST,1.5x
        WM8978_Write_Reg(10,1<<3);        //R10,SOFTMUTE关闭,128x采样,最佳SNR
        WM8978_Write_Reg(14,1<<3);        //R14,ADC 128x采样率
        return 0;
}


这个是AUX 后端混音开关的寄存器说明
  
R50 Left channel output mixer control
  
0
DACL2LMIX
1
左DAC输出到左输出混合器
  
0=不选通
  
1=选通
1
BYPL2LMIX
0
左旁路到左输出混合器
  
0=不选通
  
1=选通
4:2
BYPLMIXVOL
000
左旁路音量控制到输出通道混合器
  
000=-15dB
  
001=-12dB
  
  
110=+3dB
  
111=+6dB
5
AUXL2LMIX
0
左辅助输入到左输出混合器
  
0=不选通
  
1=选通
8:6
AUXLMIXVOL
000
辅助左通道输入到左混合器音量控制
  
000=-15dB
  
001=-12dB
  
  
110=+3dB
  
111=+6dB


  
R51 Right channel output mixer control
  
0
DACR2RMIX
1
右DAC输出到右输出混合器
  
0=不选通
  
1=选通
1
BYPR2RMIX
0
右旁路到右输出混合器
  
0=不选通
  
1=选通
4:2
BYPRMIXVOL
000
右旁路音量控制到输出通道混合器
  
000=-15dB
  
001=-12dB
  
  
101=0dB
  
110=+3dB
  
111=+6dB
5
AUXR2RMIX
0
右辅助输入到右输出混合器
  
0=不选通
  
1=选通
8:6
AUXRMIXVOL
000
辅助右通道输入到右混合器音量控制
  
000=-15dB
  
001=-12dB
  
  
101=0dB
  
110=+3dB
  
111=+6dB


我自己写的后端的AUX混音开关代码
void WM8978_AUX_MIX(u8 gain)
{
        u16 regval;
        regval = WM8978_Read_Reg(50);        //读取R50

        if(gain)
       {
                regval |= (1<<5);
                regval |= (gain<<6) ;
        }else{
                regval        &= ~(1<<5);
        }
        WM8978_Write_Reg(50,regval);

        regval = WM8978_Read_Reg(51);        //读取R51
        if(gain)
       {
                regval |= (1<<5);
                regval |= (gain<<6) ;
        }else{
                regval        &= ~(1<<5);
        }
        WM8978_Write_Reg(51,regval);
}

下面是芯片的初始化过程
          WM8978_Init();
          WM8978_ADDA_Cfg(1,1);          //开启DAC、ADC

           WM8978_Input_Cfg(1,0,0);   //开启输入通道(MIC&LINE IN)
           WM8978_MIC_Gain(10);       //MIC增益设置     
           WM8978_AUX_MIX(7);                  

           WM8978_Output_Cfg(1,0);         //开启DAC输出 ,关闭BYPASS输出   
          WM8978_HPvol_Set(63,63);


WM8978_Input_Cfg(1,0,0);   如果这句第三个参数改1之后,前端的录音数据中有AUX的混音。
请高手帮忙看看,哪个地方还有问题,

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2176

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14140
金钱
14140
注册时间
2018-8-3
在线时间
1143 小时
发表于 2019-3-12 18:12:01 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 03:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表