工具/软件: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