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.

[参考译文] Linux/TLV320ADC3101:配置为主服务器时无DOUT信号

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/710948/linux-tlv320adc3101-no-dout-signal-when-configured-as-master

部件号:TLV320ADC3101

工具/软件:Linux

您好,

我正在尝试将TLV320ADC3101设置为I2S总线上的主控制器。 我在4.0 MHz的引脚24上提供MCLK,并且只要我在第0页/注册29的D2中写入1,就能够在正确的频率下从芯片中获得BCLK和WCLK,而不会出现问题。 但是,我没有收到DOUT信号。 对我来说,这意味着我的编解码器已关闭-但我不确定接下来要尝试什么。 我正在使用PRB_R1处理块,预期针3上的DOUT应该已开始传送数据。 在示波器上查看信号线时,我只获得保持的高信号。

我把我的登记簿抄录如下。 我的ADC芯片位于地址0x18,寄存器和数据字节为十六进制。 我是否错过了一些简单的东西? 我的寄存器写入顺序是否不正确? 如有任何指导,将不胜感激。

#将注册页设置为0
i2cset -y -f 2 0x18 0x00 0x00
#软件重置为控制寄存器默认值
i2cset -y -f 2 0x18 0x01 0x01
#为PLL_CLKIN (MCLK)和CODEC _CLKIN (MCLK)配置时钟生成多路复用
i2cset -y -f 2 0x18 0x04 0x00
#为PLL时钟生成器创建K值(K = J.D)
#编程PLL的P (1)和R (1)值
i2cset -y -f 2 0x18 0x05 0x11
#编程PLL的J值(本例中为22)
i2cset -y -f 2 0x18 0x06 0x16
#编程PLL的D MSB值(本例为57)
i2cset -y -f 2 0x18 0x07 0x39
#编程PLL的D LSB值(本例中为92)
i2cset -y -f 2 0x18 0x08 0x5C
#打开PLL电源(并保留P和R设置)
i2cset -y -f 2 0x18 0x05 0x91


#允许PLL时间联机。
睡眠1


#编程NADC (8)并开机
i2cset -y -f 2 0x18 0x12 0x88
#编程mAdc (2)并开机
i2cset -y -f 2 0x18 0x13 0x82
#编程ASOR (128)
i2cset -y -f 2 0x18 0x14 0x80
#编程ADC音频接口控制#1
# I2S / 16位/ BCLK输出/ WCLK输出/ 3-表示DOUT已启用
i2cset -y -f 2 0x18 0x1b 0x0D
# ADC Interface Control #2 BCLK和WCLK处于活动状态
i2cset -y -f 2 0x18 0x1d 0x06
# BCLK N Divider (16)并已通电
i2cset -y -f 2 0x18 0x1E 0x90
# I2S TDM控制寄存器
#信道交换已禁用/左侧和信道均已启用
# Early _3-state enabled / Time_slot_mode_enabled
#i2cset -y -f 2 0x18 0x26 0x07
#对要使用的处理块进行编程(PRB_R1)
i2cset -y -f 2 0x18 0x3D 0x01
# DOUT控制(DOUT总线管理器已禁用/编解码器接口的主要DOUT输出)
#i2cset -y -f 2 0x18 0x35 0x02


#更改注册页面1
i2cset -y -f 2 0x18 0x00 0x01
# MICBIAS - 2V两者
i2cset -y -f 2 0x18 0x33 0x28
#右模拟PGA = 40dB增益
i2cset -y -f 2 0x18 0x3C 0x50
#左模拟PGA = 40dB增益
i2cset -y -f 2 0x18 0x3b 0x50
#左PGA的左ADC输入选择= IN1L (P)为单端
i2cset -y -f 2 0x18 0x34 0xFC
# Right ADC Input Selection for Right PGA = IN1R(M) as Single-ended (右PGA = IN1R(M)的右ADC输入选择为单端)
i2cset -y -f 2 0x18 0x37 0xFC

#将注册页面设置为0
i2cset -y -f 2 0x18 0x52 0x00
# ADC Digital -左右ADC通电
i2cset -y -f 2 0x18 0x51 0xC2
#取消两个ADC的静音
i2cset -y -f 2 0x18 0x52 0x00

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

    您好,Adam:

    欢迎来到E2E,感谢您对我们产品的关注!

    我查看了您的代码,正如您提到的,该行为表明设备已关闭,这意味着ADC已关闭。 从您的代码看,您似乎没有在最后部分更改为第0页,就在打开ADC之前,您正在写入第1页的寄存器0x51和0x52。

    请更正此错误并验证编解码器是否仍处于关闭状态。

    此致,

     -Diego Mel é ndez López ñ a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您在我的配置中发现该错误! 我现在正从芯片中正确获取DOUT。 但是,信号与音频不匹配,麦克风正在接收。 到新问题。 我已将此问题标记为已解决。 再次感谢你们的帮助!