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.

[参考译文] TLV320AIC23:推荐的寄存器启动序列/无 DIN DOUT 信号

Guru**** 2568565 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1072333/tlv320aic23-recommended-register-startup-sequence-no-din-dout-signals

部件号:TLV320AIC23

大家好,我目前正在将 TLVAIC23实施到高速音频解决方案中,使用 I2S 的 FS =48K,MCLK 12.28,BCLK =1.53。 研究数据表后,我找不到建议的启动顺序。 我发现另一篇帖子建议先设置重置寄存器,但仅此而已。 我想知道是否有任何有关此问题的文档。 此外,我正在使用线路电平输入和输出,我已经验证了线路输入上有音频信号,并且我的所有时钟都工作正常。 但是,我没有收到任何输出,也没有收到 DIN,DOUT 引脚上的信号。 是否有人知道这是注册表配置问题还是硬件问题,或者什么? 显然,假设缺乏 DIN/DOUT 是导致输出丢失的原因。

非常感谢您的帮助,谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    只需检查/设置几件事:

    • 确保您可以编写和读取 I2C 或 SPI 寄存器
    • 如果您将零件配置为从属零件,请确保粘结和粘结正确无误。 这已在寄存器7中设置
    • 以下是寄存器设置的示例:
      1. 重置寄存器(Reg. 0x0F)
      2. 设置时钟/采样率 (Reg. 0x08)
      3. 设置音频格式 (Reg. 0x07)
      4. 激活数字接口 (注册 0x09)
      5. 设置输入/输出音量 (Reg. 0x00至 Reg. 0x03)
      6. 设置模拟路径 (Reg. 0x04)
      7. 如果 需要,请设置数字路径(Reg. 0x05)
      8. 启用电源 (Reg. 0x06)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 我更改了周围的顺序,同时仔细查看了音频格式寄存器,发现我的 BCLK 不正确。 目前正在进行其他工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我意识到我的控制字节数发生了翻转(就像 reg 地址和 reg 数据翻转一样),我纠正了 DIN 后,DOUT 出现了! 我唯一的问题是我的线路输出插针仍然无法获得任何音频输出。

    这是我的当前配置,请注意,我只使用左行输入/左行输出:

        printf("resetting CODECs\n");
    
      /* Reset register (Address: 00011110) */
      /* bit[8:0] : Reset              : Set all to 0 for reset
      */                               //00000000
         i2c.write(TLV320_ADDR, bfr_res, 2, num_bytes_sent,1);
    
      /* Sample rate control (Address: 00010000) */
      /* bit[8]     : Reserved
       * bit[7]     : Clock output divider           : Clock output divider 0 = MCLK
       * bit[6]     : Clock input divider            : Clock input divider 0 = MCLK
       * bit[5:2]   : Sample rate control            : 0000 for 48Khz, 48Khz with MCLK/2 of 12.288Mhz
       * bit[1]     : Base oversampling rate         : Normal mode        0= 256*fs
       * bit[0]     : Clock mode select              : Clock mode select  0 = normal mode                                               
       */                                            //00000000
         i2c.write(TLV320_ADDR, bfr_samp_ctrl, 2, num_bytes_sent,1);
    
      /* Digital Audio Interface Format (Address: 00001110) */
      /* bit[8:7]   : Reserved
       * bit[6]     : Master/slave mode                  : Set to 0 for slave
       * bit[5]     : DAC left/right swap                : 0 = disable
       * bit[4]     : DAC left/right phase               : 0 = Right channel on, LRCIN high
       * bit[3:2]   : IWL[1:0] Input bit length          : 00 = 16 bit
       * bit[1:0]   : FOR[1:0] Data format               : 10 = I2S format                                              
       */                                                // 00000010
         i2c.write(TLV320_ADDR, bfr_DAI_frm, 2, num_bytes_sent,1);
    
      /* Digital Interface Activation (Address: 00010010) */
      /* bit[8:1] : Reserved
      *  bit[0] : Activate interface                    : 1 = Activate                             
      */                                                //00000001 
         i2c.write(TLV320_ADDR, bfr_DAI_act, 2, num_bytes_sent,1);
    
      /* Left line input channel volume control (Address: 00000000) */
      /* bit[8]     : Simultaneous update                   : 0 = Off
       * bit[7]     : Left line input mute                  : 0 = Unmute
       * bit[6:5]   : Reserved                              : 0
       * bit[4:0]   : Left line input volume control        : 10111 = 0 dB
       */                                                   //000010111
         i2c.write(TLV320_ADDR, Lline_vol, 2, num_bytes_sent,1);
    
      /* Left Channel Headphone Volume Contro (Address: 0000010) */
      /* bit[8] : Left/Right Simultaneous update     : 0 for enabled
       * bit[7] : Left-channel zero-cross detect     : 1 = enabled
       * bit[6:0] : Left Headphone volume control    : 1111111                                               
       */                                            //011111111
         i2c.write(TLV320_ADDR, left_hphone, 2, num_bytes_sent,1);
    
      /*   Analog Audio Path Control (Address: 0000100)     */
      /* bit[8:5]   : Added sidetone
       * bit[4]     : DAC on/off                    : 1 = on
       * bit[3]     : Bypass                        : 1 = enable
       * bit[2]     : Input select for ADC          : 0 = Line
       * bit[1]     : Mic mute                      : 0 = Normal
       * bit[0]     : Mic boost                     : 0 = no boost                                             
       */                                           //000011000
         i2c.write(TLV320_ADDR, audio_path, 2, num_bytes_sent,1);
    
      /* Power Control (Address: 00001100) */
        /* bit[8] : Reserved
         * bit[7] : Device power          : Set to 0 for on
         * bit[6] : Clock                 : Set to 0 for on
         * bit[5] : Oscillator            : Set to 0 for on
         * bit[4] : Outputs               : Set to 0 for on
         * bit[3] : DAC                   : Set to 0 for on
         * bit[2] : ADC                   : Set to 0 for on
         * bit[1] : Mic input             : Set to 0 for on
         * bit[0] : Line input            : Set to 0 for on                                
       */                                 //00000000
         i2c.write(TLV320_ADDR, bfr_pwr_on, 2, num_bytes_sent,1);
         

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    寄存器是一个9位数据,您是否只发送1个字节?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不抱歉,如果这是“NT Clear”,我将发送一个2字节的数组,其中 array[1]=位[7:0]是数据,array[0]=位[7:1]是控制寄存器地址,而位[0]=数据的 MSB。

    例如,激活数字音频接口地址=0001001, 数据=00000001

    因此 array[1]= 00000001, array[0]= 00010010。

    这不是正确的吗? 当我执行此写入操作时,我的 DIN/DOUT 变为活动状态,所以假设它执行正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,没错。

    我看到,在您的寄存器模拟音频路径中,您已启用旁路模式,该模式基本上将线路输入导出至线路输出,但也选择了 DAC。 尝试使用旁路模式并禁用 DAC 以检查是否可以看到线路输出。 请参阅第3.2.3节。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我实际上只是尝试了,但这并没有改变任何东西。 正如您可以猜测的那样,目前只是尝试使用旁路从线路输入直接转至线路输出来验证音频。 目前我正在检查两件事,1.你知道没有连接 BVDD (缓冲器电源输入电压)会导致此错误吗?

    或者2.我的线路上没有稳定的波形会导致这种情况。 再次感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我回复了你的另一篇帖子,你需要 BVDD 并将其与 DVDD 绑定。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,只是这样做,但仍然没有输出。 我唯一能看到硬件方面的问题是,我没有连接 HPVDD,但我没有使用信号输出插针,只是使用了线路输出,所以我认为这不是什么问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    切勿介意,必须在断电控制中禁用 DAC/ADC,并且能够获得旁路音频。 感谢所有的帮助!