This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AIC3104 ADC的数据不能让后面HPLOUT发出声音

Other Parts Discussed in Thread: TLV320AIC3104

你好,

我在配置tlv320aic3104时,打算用MIC2L连到left ADC,然后再通过DAC_L1给到HPLOUT。发现HPLOUT没有声音。

当用PGA_L直接连到HPLOUT就有声音。我的mclk 是外部12MHz时钟,代码如下:

        //PLL  48KHz//
        I2C1_Write(3,0x81);            //PLL_EN=1(D7),PLL_Q=0(D6-D3),PLL_P=1(D2-D0)    
        I2C1_Write(8,0xd0);            //BCLK&WCLK output
        I2C1_Write(4,0x20);            //PLL_J=8(D7-D2)
        I2C1_Write(5,0x1e);            //PLL_D_MSB(D7-D0) D=1920-----48k
        I2C1_Write(6,0x00);            //PLL_D_LSB(D7-D2)
        I2C1_Write(11,0x01);        //PLL_R=1(D2-D0)
        delay_ms(100);

        I2C1_Write(2,0x00);            //Fs = Fs(ref)
        I2C1_Write(12,0x44);        //Left-ADC high-pass filter frequency = 0.0045 Fs,Left-DAC de-emphasis filter enabled
        I2C1_Write(17,0x0f);        //route Mic2L to the Left ADC, 0dB,
        I2C1_Write(19,0x7c);        //Left-ADC channel is powered up
        I2C1_Write(15,0x28);        //unmute Left PGA, set gain to 20 dB
        
        I2C1_Write(7,0x0A);            //Left-DAC data path plays left-channel input data
        I2C1_Write(37,0x80);        //Left DAC is powered up, HPLCOM configured as differential of HPLOUT        
        I2C1_Write(43,0x00);        //The left-DAC channel is not muted,0db
       
        I2C1_Write(47,0x80);        //DAC_L1 is routed to HPLOUT,0db
        I2C1_Write(14,0x80);        //Programs high-power outputs for ac-coupled driver configuration
        I2C1_Write(51,0x0f);        //HPLOUT is not muted,HPLOUT is fully powered up,0db

  • 有没有验证一下 ADC 的工作情况, 正常否

  • 你好,我看你代码里:I2C1_Write(17,0x0f);        //route Mic2L to the Left ADC, 0dB,

    17写0f手册里写的是没有连接到left ADC.

    请详细解释一下你这里的系统配置思路,谢谢!

  • 你好Alix ,

    您红色圈出的部分是说寄存器17低4位,如果全1是断开MIC2R。我没有用MIC2R,用的MIC2L。

    整体连接思路是MIC2L--->Left ADC---->Left DAC---->HPLOUT,但是没有声音。

  • 你好 Airwill ,

    您能说下怎么验证ADC是否正常吗?我查过WCLK/DOUT信号,正常。

  • Hi Jason,

    很抱歉,我们芯片内部不支持直接配置:MIC2L--->Left ADC---->Left DAC---->HPLOUT. 请参考如下内部原理图:

    MIC2L没有直接到达left ADC的路径:

            建议你根据系统要求,基于上图的信号数据链路,选取符合要求的方案。因为不清楚你的需求,这里举个简单例子,比如:MIC2L--->DOUTR,然后再通过外部输入DINL再进入到Left DAC--> HPLOUT. 

            如果我的回答解决了你的问题,请点击采纳,谢谢!

  • Hi Alix,

    多谢您解答。上图中左上角是MIC2L,到HPLOUT的链路应该是有的(抱歉,半天没能把截图上传上来)。但是中间经过一个开关SW-D1,如果它不闭合那么ADC_L的数据必然走不过去,HPLOUT也就没有声音了。资料里说只有DAC_L/DAC_R都关闭时才会让SW-D1断开DAC,而我是使能了DAC_L的,仍然很疑惑。

  • 我把SPI数据线接上DSP数据正常,现在能肯定的是ADC正常工作了,问题应该在DAC!

  • Hi Jason,

    很抱歉,回复延迟。请问如下理解是否正确:

    1. 你实际想要配置的详细信号路径是:MIC2L-->PGA-->ADC-->SW-D1-->effects-->volume control-->DAC_L-->HPLOUT。 也就是说,信号不是经过ADC后直接经过Dout输出到片外,然后经过处理器处理后经过DIN再送回到DACL,最后在HPLOUT输出。请问对吗?

    2. 你说把SPI的数据线接上DSP数据正常,请问你是通过外部处理器(例如DSP )从可以配置成left- or right-justified, I2S, DSP, 或者TDM模式的Audio data serial interface来读取数据,从而排除ADC的问题的是吗?

    3. 如果你定位问题可能在DAC,那么请问,你有尝试过使用外部处理器直接从DIN给DACL灌入信号来测试DACL是否有问题呢?

    麻烦您回复上述问题,我们会进一步协助解决问题。谢谢!

  • Hi Alix,

    下面是对您的回复:

    1. 你实际想要配置的详细信号路径是:MIC2L-->PGA-->ADC-->SW-D1-->effects-->volume control-->DAC_L-->HPLOUT。 也就是说,信号不是经过ADC后直接经过Dout输出到片外,然后经过处理器处理后经过DIN再送回到DACL,最后在HPLOUT输出。请问对吗?

    ——是的。我这个案子正常是不连接外部DSP的,只想利用一下芯片内部音效单元;模拟进,模拟出。DSP是我debug时连接的。

    2. 你说把SPI的数据线接上DSP数据正常,请问你是通过外部处理器(例如DSP )从可以配置成left- or right-justified, I2S, DSP, 或者TDM模式的Audio data serial interface来读取数据,从而排除ADC的问题的是吗?

    ——没错,就是把接口和外部dsp对接后,读到adc数据正常,从而判断adc正常。

    3. 如果你定位问题可能在DAC,那么请问,你有尝试过使用外部处理器直接从DIN给DACL灌入信号来测试DACL是否有问题呢?

    ——还没做

  • Alix,

    第3点,我用外部MCU给芯片数据DAC没有输出,所以问题很可能在DAC

  • Hi Jason,

    我们器件不支持:SW-D1-->effects-->volume control-->DAC_L-->HPLOUT. 也就是说,实际上我们芯片时没有内部路径可以让ADC的输出直接连接到DAC的。你必须经过serial interface。

    原因是SW-D2是数字信号处理record的一部分。如果需要使用effect,那么需要使用到 D2 和 D1一起处于闭合。此时DAC就必须关闭。 

    我们建议你讲DIN和DOUT连接到一起实现你的目的,同时还可以测试DAC。

    当然,既然你用MCU单独给DIN输入数据,发现DAC还是没有输出,那么可能是这块芯片DAC有问题,请尝试换一颗尝试。

    Thanks & best regards.

  • 请问MIC2R-->R PGA-->R ADC-->RDOUT 配置后DSP没有数据。
    aic3104_register_write(7, 0x00);
    aic3104_register_write(37, 0x00);

    aic3104_register_write(82, 0x00);
    aic3104_register_write(86, 0x02);

    aic3104_clear_bits(37, 0x40);
    aic3104_register_write(18, 0xF0);
    aic3104_register_write(22, 0x7C);
    请问MIC2R-->L PGA-->L ADC-->LDOUT 配置后DSP有数据。
    aic3104_register_write(7, 0x00);
    aic3104_register_write(37, 0x00);

    aic3104_register_write(82, 0x00);
    aic3104_register_write(86, 0x02);

    aic3104_clear_bits(37, 0x80);
    aic3104_register_write(17, 0xF0);
    aic3104_register_write(19, 0x7C);
    这个是为什么呢?
x 出现错误。请重试或与管理员联系。