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.

[参考译文] TLV320AIC3104:I2S TDMS配置和BCLK作为PLL-Source不起作用

Guru**** 2396075 points
Other Parts Discussed in Thread: TLV320AIC3104, TLV320AIC33

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/680894/tlv320aic3104-i2s-tdms-configuration-and-bclk-as-pll-source-doesn-t-work

部件号:TLV320AIC3104
主题: TLV320AIC33中讨论的其它部件

您好,

我在Telit LE910模块和AIC3104编解码器之间遇到有关I2S的通信问题。

i2c配置接口,也是LINE1LP到LEFT_LOP的环回配置,工作正常。

我的目标是从LINE1LP到I2S-Interface,以及从I2S-Interface到LEFT_LOP单端读取单声道信号。

LE910-Master的I2S配置为:

模式:TDM

BCLK:4096 kHz

采样率:16 kHz

WCLK:16 kHz高脉冲,用于1个BCLK时钟,每帧256个时钟。

每样本位数:16

信号电平为1.8V

我 尝试了以下配置

#!/bin/bash

# I2C-Busse suchen
modprobe i2c-dev

#寄存器1:软件重置寄存器
i2cset -y 7 0x18 0x01 0x80

睡眠1

#寄存器102:时钟生成控制寄存器:CLKDIV_In使用BCLK,PLLCLK _In使用BCLK
i2cset -y 7 0x18 0x66 0x62


#########################################################################################################################################################################################################################################################
#高速模式:BCLK * 1 => J=24,D=0,R=1,P=1 (从4096kHz BCLK生成1.2288万 kHz内部时钟,fsref=48kHz,FS=16kHz)

# Page 0/Register 2:编解码器采样率选择寄存器(Sample-rate FS=fsref/3)
i2cset -y 7 0x18 0x02 0x44

#第0页/注册3:PLL编程寄存器A (PLL启用,P=1,Q=16)
i2cset -y 7 0x18 0x03 0x81

#第0页/寄存器4:PLL编程寄存器B (J=24)
i2cset -y 7 0x18 0x04 0x60

#第0页/寄存器5:PLL编程寄存器C (D=0)
i2cset -y 7 0x18 0x05 0x00

#第0页/寄存器6:PLL编程寄存器D (D=0)
i2cset -y 7 0x18 0x06 0x00

#第0页/注册11:PLL编程(R=1)
i2cset -y 7 0x18 0x0B 0x01

# Page 0/Register 9:音频串行数据接口控制寄存器B DSP-模式,256位,ADC-,DAC- Resync)
i2cset -y 7 0x18 0x09 0x4E

#########################################################################################################################################################################################################################################################

#第0/Register 19页:MIC1LP/LINE1LP到左ADC控制寄存器
i2cset -y 7 0x18 0x13 0x04

# Page 0/寄存器15:左ADC PGA增益控制寄存器(取消静音左PGA,将增益设置为0 dB)
i2cset -y 7 0x18 0x0F 0x00

# Page 0/注册7:编解码器数据路径设置寄存器(将左侧数据路由至左侧DAC)
i2cset -y 7 0x18 0x07 0x08

# Page 0/Register 37:DAC电源和输出驱动器控制寄存器(加电左DAC)
#? HPLCOM是否配置为独立单端输出? 0xA0
i2cset -y 7 0x18 0x25 0x80

# Page 0/Register 41: DAC Output Switching Control Register (左DAC输出选择DAC_L1路径至左线路输出驱动器)。
i2cset -y 7 0x18 0x29 0x00

# Page 0/寄存器43:左DAC数字音量控制(取消左数字音量控制静音,将增益设置为0 dB)
i2cset -y 7 0x18 0x2B 0x00

# Page 0/Register 82:DAC_L1至LEFT LOP/M音量控制寄存器(将左DAC输出路由至左侧线路输出)
i2cset -y 7 0x18 0x52 0x80

# Page 0/Register 86: LEFT输出电平控制寄存器(0dB增益左线路输出,LEFT LOP通电)
i2cset -y 7 0x18 0x56 0x09

结果是,我既没有从输入中获取样品,也没有从左侧_LOP的DIN中找到样品。

编解码器的示意图:

我的配置有什么问题?

此致

格雷戈

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

    Gregor,  

    您的配置没有出现任何问题。  

    一些建议:

    1. 关于PLL配置, 首先对所有系数进行编程,然后启用PLL。  (寄存器3应该编程为系数, PLL未通电, 然后所有其他PLL系数都应编程,最后Reg 3可以再次写入, 从而为PLL通电) 这可能不是问题的原因, 但这是我们建议的顺序。

    2.您是否可以检查您的一些状态记录?   

    I2C状态reg - 107

    ADC标志-第36条

    模块电源状态—Reg 94

    此致,  

    -Steve Wilson

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

    您好Steve:

    感谢你的帮助。

     

    我现在尝试了以下短剧:

     

    # I2C-Busse suchen

    modprobe i2c-dev

     

    #寄存器1:软件重置寄存器

    i2cset -y 7 0x18 0x01 0x80

     

    睡眠1

     

    #寄存器102:时钟生成控制寄存器:CLKDIV_In使用BCLK,PLLCLK _In使用BCLK

    i2cset -y 7 0x18 0x66 0x62

     

     

    #########################################################################################################################################################################################################################################################

    #高速模式:BCLK * 1 => J=24,D=0,R=1,P=1 (从4096kHz BCLK生成1.2288万 kHz内部时钟,fsref=48kHz,FS=16kHz)

     

    # Page 0/Register 2:编解码器采样率选择寄存器(Sample-rate FS=fsref/3)

    i2cset -y 7 0x18 0x02 0x44

     

    # Page 0/Register 3:PLL编程寄存器A (PLL禁用,P=1,Q=2)

    i2cset -y 7 0x18 0x03 0x11

     

    #第0页/寄存器4:PLL编程寄存器B (J=24)

    i2cset -y 7 0x18 0x04 0x60

     

    #第0页/寄存器5:PLL编程寄存器C (D=0)

    i2cset -y 7 0x18 0x05 0x00

     

    #第0页/寄存器6:PLL编程寄存器D (D=0)

    i2cset -y 7 0x18 0x06 0x00

     

    #第0页/注册11:PLL编程(R=1)

    i2cset -y 7 0x18 0x0B 0x01

     

    #第0页/注册3:PLL编程寄存器A (PLL启用,P=1,Q=2)

    i2cset -y 7 0x18 0x03 0x91

     

    # Page 0/Register 9:音频串行数据接口控制寄存器B DSP-模式,256位,ADC-,DAC- Resync)

    i2cset -y 7 0x18 0x09 0x4E

     

    #########################################################################################################################################################################################################################################################

     

    #第0/Register 19页:MIC1LP/LINE1LP到左ADC控制寄存器

    i2cset -y 7 0x18 0x13 0x04

     

    # Page 0/寄存器15:左ADC PGA增益控制寄存器(取消静音左PGA,将增益设置为0 dB)

    i2cset -y 7 0x18 0x0F 0x00

     

    # Page 0/注册7:编解码器数据路径设置寄存器(将左侧数据路由至左侧DAC)

    i2cset -y 7 0x18 0x07 0x08

     

    # Page 0/Register 37:DAC电源和输出驱动器控制寄存器(加电左DAC)

    #? HPLCOM是否配置为独立单端输出? 0xA0

    i2cset -y 7 0x18 0x25 0x80

     

    # Page 0/Register 41: DAC Output Switching Control Register (左DAC输出选择DAC_L1路径至左线路输出驱动器)。

    i2cset -y 7 0x18 0x29 0x00

     

    # Page 0/寄存器43:左DAC数字音量控制(取消左数字音量控制静音,将增益设置为0 dB)

    i2cset -y 7 0x18 0x2B 0x00

     

    # Page 0/Register 82:DAC_L1至LEFT LOP/M音量控制寄存器(将左DAC输出路由至左侧线路输出)

    i2cset -y 7 0x18 0x52 0x80

     

    # Page 0/Register 86: LEFT输出电平控制寄存器(0dB增益左线路输出,LEFT LOP通电)

    i2cset -y 7 0x18 0x56 0x09

     

    与以前相同的结果。

     

    我读回以下值:

     

    寄存器102:时钟生成控制寄存器:CLKDIV_In使用BCLK,PLLCLK _In使用BCLK,soll:0x62

    0x62

    第0/Register 3页:PLL编程寄存器A (PLL启用,P=1,Q=2),Soll:0x91

    0x91

    第0/Register 4页:PLL编程寄存器B (J=8),soll:0x20

    0x60

    第0/Register 5页:PLL编程寄存器C (D=0),soll:0x00

    0x00

    第0/Register 6页:PLL编程寄存器D (D=0),soll:0x00

    0x00

    第0/Register 11页:PLL编程(R=1),soll:0x01

    0x01

    第0/Register 9页:音频串行数据接口控制寄存器B DSP-模式,soll:0x40

    0x4e

    #########################################################################################################################################################################################################################################################

    第0/Register 19页:MIC1LP/LINE1LP到左ADC控制寄存器,soll:0x04

    0x04

    第0/Register 15页:左ADC PGA增益控制寄存器(取消静音左PGA,将增益设置为0 dB),soll:0x00

    0x00

    第0/Register 7页:编解码器数据路径设置寄存器(将左数据路由到左DAC),soll:0x08

    0x08

    第0/Register 37页:DAC电源和输出驱动器控制寄存器(加电左DAC),soll:0x80

    0x80

    第0/Register 41页: DAC输出开关控制寄存器(左DAC输出选择DAC_L3路径到左线路输出驱动器),soll:0x40

    0x00

    第0页/寄存器43:左DAC数字音量控制(取消左数字音量控制静音,将增益设置为0 dB),解压:0x00

    0x00

    第0页/寄存器82:DAC_L1至LEFT _LOP/M音量控制寄存器(将左DAC输出路由至左侧线路输出)

    0x80

    第0页/寄存器86: LEFT_LOP/M输出电平控制寄存器(0dB增益左侧线路输出),soll:0x09

    0x0B

    第0/Register 36页:ADC标志寄存器,soll:0xC0

    0x40

    第0/Register 94页:模块电源状态寄存器,soll:0x90

    0x90

    第0/Register 107页: 新的可编程ADC数字路径和I2C,soll:0xC0

    0x00

    第0/Register 95页:输出驱动器短路检测状态寄存器,soll:0x00

    0x00

    第0/Register 96页:Sticky Interrupt Flags Register,soll:0x00

    0x00

    第0/Register 97页:实时中断标志寄存器,soll:0x00

    0x00

     

    BCLK只能在电话呼叫过程中运行,这是否是一个问题?

    因此,到目前为止,我在BCLK期间进行配置,而WCLK不运行。

    但我现在也测试开始一个电话呼叫(BCLK和WCLK运行),然后进行配置和回读寄存器值。

    结果完全相同。

    这是因为,左LOP的DC偏移值是2.5 V,在评估板中是1.4V。

    在配置过程中,它以2.5V开始,然后在1.2s期间缓慢下降,直至1V,然后跳回2.5V (在C75编解码器侧测量)。

     

    以下信号提供给编解码器:

     

    通道1:WCLK

    通道2:BCLK

     

    通道 1:WCLK

    通道2:DIN (16位/样品)

     

     通道 1:WCLK

    通道2:DIN (16位/样品,整个周期)

     在评估板上,如果在开始时配置了寄存器R101,R102,则会产生不同的结果,如以下脚本代码中所示,或者在配置PLL之后。 在第二种情况下,输出LEFT_LOP和输入LINE1LP都不起作用。

    i i2cfast
    #R7:软件重置
    W 30 07 80
    延迟1s
    延迟1000
    #BCLK=28224MHz,FSref=44,1 kHz,16位,I2S
    #R102: PLLCLK _In使用BCLK
    W 30 66 22.
    #R101:CODEC_CLKIN使用PLLDIV_OUT
    W 30 65 01
    #R3-R6:PLL禁用,Q=2,P=1,J=32,D=0000
    W 30 03 11 80 00 00
    #R11:R=1
    W 30 0B 01
    #R3:PLL启用,Q=2,P=1
    W 30 03 91
    #R19:LINE1LP als ADC输入,0dB
    W 30 13 04.
    #R15: 左ADC PGA未静音,0dB
    W 30 0F 00
    #R9:非RMG I2S,16位,连续,偏移= 0,BCLK=输入,WCLK=输入
    W 30 09 00
    #R7: 非RMG,FS(ref)= 44.1 kHz,左DAC数据路径播放左通道输入数据
    W 30 07 88
    #R37: 左DAC通电
    W 30 25 80
    #R43:左DAC通道未静音,0dB
    W 30 2B 00
    #R41:  左DAC输出选择DAC_L3路径到左行输出驱动器。
    W 30 29 40.
    #R86: LEFT LOP/M未静音,0dB, LEFT LOP/M已完全通电
    W 30 56 09.
    #回读
    #R3-R6:PLL启用,Q=2,P=1,J=32,D=0000
    R 30 03 4.
    #R11:R=1
    R 30 0B 1.
    #R19:LINE1LP als ADC输入,0dB
    r 30 13
    #R15: 左ADC PGA未静音,0dB
    R 30 0F 1.
    #R9:非RMG,I2S,16位,Continuus,offset=0,BCLK=in, WCLK=英寸
    R 30 09 1.
    #R101:CODEC_CLKIN使用PLLDIV_OUT
    R 30 65 1
    #R102: PLLCLK _In使用BCLK
    R 30 66 1.
    #R7: 非RMG,FS(ref)= 44.1 kHz,左DAC数据路径播放左通道输入数据
    R 30 07 1.
    #R37: 左DAC通电
    r 30 25
    #R43:左DAC通道未静音,0dB
    R 30 2B 1.
    #R41:  左DAC输出选择DAC_L3路径到左行输出驱动器。
    r 30 29
    #R86: LEFT LOP/M未静音,0dB, LEFT LOP/M已完全通电
    r 30 56

    此致

     

    格雷戈

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

    您使用的是什么处理器? 我们是否可以将编解码器的模式切换为主模式,将处理器切换为从模式? 您的配置中没有明显的弹出内容。

    左侧LOP上的共模电压应与1.4V类似。 我不知道为什么你会测量这么高的电压,但这可能解释了为什么你听不到任何声音。


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

    您好Steve:

    自昨天起,编解码器就开始工作。

    问题是,在寄存器R102中,CLKDIV_In的输入被配置为MCLK,并且该信号是打开的(oszillator未填充)。

    我将寄存器值更改为0xA2。 现在CLKDIV_In已连接到BCLK。

    我在数据表上没有找到任何提示,信号CLKDIV_In必须提供时钟。

    我还有一些问题:

    1.在数据表章节10.3 中,4.4 “音频DAC数字音量控制”是所述的软步进功能。 但我在寄存器中只找到ADC-PGA R19,R22和高功率输出R40的设置。在哪里可以找到DAC的软步进设置?

    2. R9的重新同步功能的含义是什么?

    此致

    格雷戈

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

    很抱歉,我应该看到这一点。 我的印象是您正在使用PLL,但现在我可以看到,您选择CLK_DIV进行编解码器输入。这就是为什么没有任何功能起作用。 如果您选择PLL_DIVOUT,则一切正常。 如果您要使用CLK_DIV,应关闭PLL电源,这将降低功耗。
    数据表并不表示需要为CLK_DIV提供时钟,因为它是隐式的。如果您没有时钟分隔器的输入,您就不能真正划分任何内容。

    关于您的问题:

    1.第40号登记册的名称可能令人误解。 它使人们相信,此寄存器控制的软步进仅用于HP输出。 但情况并非如此,寄存器40中的软步进控件与数字音量控件有关。

    2.我要检查一下这一个的设计。数据表中的措辞肯定不清楚。 我会跟你说,但可能要到星期一才会回来。

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

    好的,我听到了我们设计团队的反馈。
    关于Resync,当器件通电时,有一个内部固定功能DSP,它处理插值滤波,双四通路滤波器,hpf等,并且基于DSP帧的处理被WCLK相锁定。如果wclk频率受到干扰或出现故障, 这种锁定会受到干扰,进而导致处理混乱,导致数据丢失/重复,从而导致性能问题。 因此,如果指令计数器和wclk漂移超过1/4帧,则会导致DAC (或ADC)重新同步。

    我必须更正数据表中的措辞以进行澄清。因为当前的措辞不清楚。

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

    您好Steve:

    使用CLKDIV_In而不是PLLDIV_In是我的错。

    我现在将  寄存器101更改为0x00,并在0xA2处保持寄存器102不变。

    这种情况下工作正常,听起来比以前的版本更好,因为CODEC _CLK现在具有12.29 MHz的直接值,而不是错误的4.096 MHz。

    现在我的看法是,我们不需要CLKDIV_In,所以我将寄存器102更改为0x22 (CLKDIV_IN= MCLK (静态),PLL_IN=BCLK)。

    但此版本也不起作用。

    原因可能是什么?

    它似乎应该在信号CLKDIV_In处有一个时钟,我也使用PLLDIV_OUT。

    重新同步:要获得稳定的功能,最好是否在寄存器9中永久设置“DAC重新同步”和“ADC重新同步”?

    此致

    格雷戈

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

    不应该是这样。 CLKDIV不应要求输入。我记得我确实在EVM上测试过此操作。

    如果选择PLLDIV_OUT作为CODECOD_CLKIN的源,则不管CLKDIV设置为什么,您是否可以发布更新后的配置?

    DAC和ADC重新同步功能不一定会使编解码器更加稳定,但如果在外部出现故障,您可以在DAC和ADC尝试重新同步时将其设置为软静音。这有助于减少因信号丢失而产生的任何点击/弹出。 以及来自不同步DSP和DAC/ADC的任何噪声/伪影

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

    您好Steve:

    我在BCLK (SW2 USB_I2S=Hi)和MCLK (SW2 USB_MCK=HI)期间配置编解码器的接缝未应用。

    我在使用此配置的评估板时试用了它:

    i i2cfast
    #R1:软件重置
    W 30 01 80
    延迟1s
    延迟1000
    #BCLK=28224MHz,FSref=44,1 kHz,16位,I2S
    #R102:  CLKDIV_In使用MCLK,PLLCLK _In使用BCLK
    W 30 66 22.
    #R101:CODEC_CLKIN使用PLLDIV_OUT
    W 30 65 00
    #R3-R6:PLL禁用,Q=2,P=1,J=32,D=0000
    W 30 03 11 80 00 00
    #R11:R=1
    W 30 0B 01
    #R3:PLL启用,Q=2,P=1
    W 30 03 91
    #R19:LINE1LP als ADC输入,0dB
    W 30 13 04.
    #R15: 左ADC PGA未静音,0dB
    W 30 0F 00
    #R9:非RMG I2S,16位,连续,偏移= 0,BCLK=输入,WCLK=输入
    W 30 09 00
    #R7: 非RMG,FS(ref)= 44.1 kHz,左DAC数据路径播放左通道输入数据
    W 30 07 88
    #R37: 左DAC通电
    W 30 25 80
    #R43:左DAC通道未静音,0dB
    W 30 2B 00
    #R41:  左DAC输出选择DAC_L3路径到左行输出驱动器。
    W 30 29 40.
    #R86: LEFT LOP/M未静音,0dB, LEFT LOP/M已完全通电
    W 30 56 09.

    配置后,低通滤波器之前的LEFT LOP+显示高频。

    这些停留也打开了BCLK (SW2 USB_I2S=LO)。

    当我打开MCLK (SW2 USB_MCK=LO)时,只要短时间内,编解码器就能正常工作。

    如果我改为配置:

    i i2cfast
    #R1:软件重置
    W 30 01 80
    延迟1s
    延迟1000
    #BCLK=28224MHz,FSref=44,1 kHz,16位,I2S
    #R102:  CLKDIV_In使用BCLK,PLLCLK _In使用BCLK
    W 30 66 A2
    #R101:CODEC_CLKIN使用PLLDIV_OUT
    W 30 65 00
    #R3-R6:PLL禁用,Q=2,P=1,J=32,D=0000
    W 30 03 11 80 00 00
    #R11:R=1
    W 30 0B 01
    #R3:PLL启用,Q=2,P=1
    W 30 03 91
    #R19:LINE1LP als ADC输入,0dB
    W 30 13 04.
    #R15: 左ADC PGA未静音,0dB
    W 30 0F 00
    #R9:非RMG I2S,16位,连续,偏移= 0,BCLK=输入,WCLK=输入
    W 30 09 00
    #R7: 非RMG,FS(ref)= 44.1 kHz,左DAC数据路径播放左通道输入数据
    W 30 07 88
    #R37: 左DAC通电
    W 30 25 80
    #R43:左DAC通道未静音,0dB
    W 30 2B 00
    #R41:  左DAC输出选择DAC_L3路径到左行输出驱动器。
    W 30 29 40.
    #R86: LEFT LOP/M未静音,0dB, LEFT LOP/M已完全通电
    W 30 56 09.

    尽管MCLK处于关闭状态,但它仍然工作。

    因此,编解码器需要CLKDIV_In的信号才能在配置后开始工作。

    新小数:

    1.要将LETD_LOP用作单端输出,没有特殊的配置。
    我只需使用基于AGND的LET_LOP,这是否可以?

    2.如果使用第二个配置执行此操作,则低通前的信号LEFT LOP+会很安静(噪声小于20 mVss)。

    在我第一次使用Windows声卡驱动程序的测试音后,噪音升至300 mVss。 两种频率均为1 MHz。
    这是否正常?
    在评估板的低通滤波器之后,信号正常。
    BCLK和MCLK的I开关仍然发出噪音。

    此致

    格雷戈

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

    Gregor,

    i已更正。  我会询问设计团队为什么会出现这种情况。  

    关于您关于噪音的问题 ,是的, 这种带外噪音是正常的。  请查看以下应用报告:   

    音频编解码器的带外噪声测量问题  -本报告重点介绍TLV320AIC33, 但TLV320AIC3104使用了大多数相同的模块。但增加了路由灵活性和更多的数字功能。  该报告包括播放音乐前后输出的FFT图解, 适用于各种配置,包括向输出添加系列电阻和不同的滤波器配置。   

    音频编解码器中的常见噪音问题 -第2.4 节重点介绍了在连接到D类放大器输入时的带外噪音及其影响。  

    此致,  

    -Steve Wilson