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.

[参考译文] TLV320AIC3110EVM-U:驱动 DIN 数据时、WCLK 输出损坏

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1409840/tlv320aic3110evm-u-wclk-output-gets-corrupted-when-din-data-is-driven

器件型号:TLV320AIC3110EVM-U

工具与软件:

您好!

我正在开发用于 SoC 芯片的 I2S 驱动器、并根据 TLV320AIC3110EVM-U 对其进行测试
当我将 AIC3110设置为主控器件时、即 BCLK 和 WCLK 设置为输出时、我会看到一些奇怪的行为。

每当该 SoC 芯片驱动器 DIN 数据出现时、来自 AIC3110EVM-U 的 WCLK 就会中断、如下所示。
好像 ADC 和 DAC 尝试同时驱动 WCLK。
但我不明白只有当对等器件使用某个非零信号驱动 DIN 时如何才能这样做。



如果我从 AIC3110 EVM 物理移除 DAC 信号、则不会损坏 WCLK。



WCLK 输出会如何受到这样的 DIN 数据的影响?

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

    这就是我从 SoC 中通过 I2C 控制 AIC3110所使用的命令。

    i2cm 初始化1

    /*初始条件。
    w 18 00 00 #选择第0页。
    W 18 01 01 #软件复位。
    S 1 #等待一秒钟。
    */

    i2cm txbuf 0x00 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x01 0x01
    i2cm TX 0x18 2 100

    /*
    E 为6 MHz MCLK 源设置 PLL、输入98.304 MHz 输出(对于48kHz 采样率)

    w 18 04 03 #设置 PLL_CLKin=MCLK 和 CODEC_CLKin=PLL_CLK
    w 18 05 92 #在 P=1、R=2的情况下为 PLL 上电
    W 18 06 08 # PLL J=8 (J.D=8.1920)

    W 18 07 07 07 07 # PLL D (MSB)=0x07
    w 18 08 80 # PLL D (lsb)=0x80
    D 18 05 08 #转储 PLL 设置。
    */

    //i2cm txbuf 0x04 0x03 0x92 0x08 0x07 0x80
    //i2cm TX 0x18 6 100

    /*
    E 为6 MHz MCLK 源设置 PLL、输入90.3168 MHz 输出(对于44.1kHz 采样率)

    w 18 04 03 #设置 PLL_CLKin=MCLK 和 CODEC_CLKin=PLL_CLK
    w 18 05 92 #在 P=1、R=2的情况下为 PLL 上电
    W 18 06 07 # PLL J=8 (J.D=7.5264)

    W 18 07 14 # PLL D (MSB)=0x14
    w 18 08 90 # PLL D (lsb)=0x90
    D 18 05 08 #转储 PLL 设置。
    */

    i2cm txbuf 0x04 0x03 0x92 0x07 0x14 0x90
    i2cm TX 0x18 6 100

    /*
    e 设置时钟分频器。
    w 18 1B 0d # Mode=I2S、字长=16、BCLK、WCLK 是编解码器的输出、DOUT Hi-Z。
    w 18 1D 07 # BCLK 和 WCLK 有效、编解码器断电、BDIV_CLKIN = ADC_MOD_CLK
    W 18 1E 84 # BCLK N 分频器上电、N = 4
    W 18 0B 84 # NDAC 已上电并设置为4
    W 18 0C 84 # MDAC 已上电并设置为4
    W 18 0D 00 # DOSR=136、DOSR (9:8)=0
    W 18 0E 80 # DOSR (7:0)=128
    D 18 0B 0E #转储分频器寄存器值。
    W 18 12 84 # NADC 已上电并设置为4
    W 18 13 84 # mAdc 已上电并设置为4
    W 18 14 80 # AOSR=128
    */
    i2cm txbuf 0x1b 0x0d
    i2cm TX 0x18 2 100
    i2cm txbuf 0x1d 0x07 0x84
    i2cm TX 0x18 3 100
    i2cm txbuf 0x0B 0x84 0x00 0x80
    i2cm TX 0x18 5 100
    i2cm txbuf 0x12 0x84 0x80
    i2cm TX 0x18 4 100

    /*
    E 设置 PRB 和数据路径(其作用是什么?)
    W 18 3C 01 # DAC PRB 设置为 PRB_P1。
    W 18 3D 04 # ADC PRB 设置为 PRB_R4。
    w 18 3F D6 #设置 DAC 数据路径。
    */

    i2cm txbuf 0x3c 0x01 0x04
    i2cm TX 0x18 3 100
    i2cm txbuf 0x3f 0xd6
    i2cm TX 0x18 2 100

    /*
    w 18 00 01 #选择第1页。
    W 18 21 46 #去 POP 音、驱动器接通时间=600ms、步进时间=4ms
    w 18 1F C6 #打开 HP 驱动程序电源
    R 18 1F #检查 b0中是否存在短路标志。
    */

    i2cm txbuf 0x00 0x01
    i2cm TX 0x18 2 100
    i2cm txbuf 0x21 0x46
    i2cm TX 0x18 2 100
    i2cm txbuf 0x1f 0xc6
    i2cm TX 0x18 2 100

    /*
    W 18 23 88 # DAC_L 路由至 HPL、DAC_R 路由至 HPR
    W 18 28 0F # HPL 驱动器已取消静音且增益设置为1dB
    W 18 29 0F # HPR 驱动器已取消静音且增益设置为1dB
    w 18 24 00 #模拟音量控制增益设置为0dB (用于 HPL)
    w 18 25 00 #模拟音量控制增益设置为0dB (用于 HPR)
    W 18 2E 0b # MICBIAS=AVDD
    W 18 2F 92 #启用 PGA、最大 也是如此
    w 18 30 40 # MIC、Rin=10k
    w 18 31 40 # CM、Rin=10k
    */

    i2cm txbuf 0x23 0x88
    i2cm TX 0x18 2 100
    i2cm txbuf 0x28 0x0F 0x0F
    i2cm TX 0x18 3 100
    i2cm txbuf 0x24 0x00 0x00
    i2cm TX 0x18 3 100
    i2cm txbuf 0x2e 0x0B
    i2cm TX 0x18 2 100
    i2cm txbuf 0x2F 0x92
    i2cm TX 0x18 2 100
    i2cm txbuf 0x30 0x40 0x40
    i2cm TX 0x18 3 100

    /*
    e 静音设置
    w 18 00 00 #选择第0页。 应用手册中没有此内容!
    w 18 40 00 # DAC 取消静音、独立的音量控制。
    W 18 51 80 #功率 ADC 通道
    w 18 52 00 #使 ADC 通道取消静音
    W 18 53 14 # ADC 数字音量10dB
    */

    i2cm txbuf 0x00 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x40 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x51 0x80 0x00
    i2cm TX 0x18 3 100

    /*
    W 18 41 30 # LDAC 增益24dB
    W 18 42 30 # RDAC 增益24 dB
    D 18 41 42 #转储 DAC 增益设置
    */

    i2cm txbuf 0x41 0x30 0x30
    i2cm TX 0x18 3 100

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

    尊敬的 Jin:

    您如何将 SoC 连接到 EVM?

    此致、
    Jeff McPherson

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

    我们的 SoC 具有5个用于 I2S、I2S_ADC_DATA、I2S_LRCLK、I2S_DAC_DATA、I2S_BCLK、 和 I2S_MCLK。
    我按如下方式将这些引脚连接到 AIC3110EVM-U 上的 TP:

    配置               AIC3110EVM-U
    I2S_ADC_DATA     TP6 (DOUT)
    I2S_LRCLK         TP7 (WCLK)
    I2S_DAC_DATA     TP4 (DIN)
    I2S_BCLK          TP5 (BCLK)
    I2S_MCLK (12MHz) TP13 (GPIO1)

    如果我将 SoC 设置为 I2S 主设备、并将 AICE3110设置为从设备、一切似乎没有问题。

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

    实际上、我发现我的原始寄存器设置与以下条件不符、因为 PLL_CLKIN 为6MHz、P 为1。



    因此、我将 PLL_CLKIN 更改为 GPIO1、GPIO1 连接到输出12MHz 时钟的 SoC MCLK 引脚。

    我的新寄存器设置如下:

    i2cm 初始化1

    /*初始条件。
    w 18 00 00 #选择第0页。
    W 18 01 01 #软件复位。
    S 1 #等待一秒钟。
    */

    i2cm txbuf 0x00 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x01 0x01
    i2cm TX 0x18 2 100

    /*
    E 为12 MHz 设置 PLL GPIO1源、86.016 MHz 输出(对于48kHz 采样率)

    w 18 04 0b #设置 PLL_CLKin=GPIO1和 CODEC_CLKin=PLL_CLK
    w 18 05 91 #在 P=1、R=1时为 PLL 上电
    W 18 06 07 # PLL J=7 (J.D=7.1680)

    W 18 07 06 # PLL D (MSB)=0x06
    w 18 08 90 # PLL D (lsb)=0x90
    D 18 05 08 #转储 PLL 设置。

    e 设置时钟分频器。
    W 18 0B 82 # NDAC 已上电并设置为2
    W 18 0C 87 # MDAC 上电并设置为7
    W 18 0D 00 # DOSR=128、DOSR (9:8)=0
    W 18 0E 80 # DOSR (7:0)=128
    D 18 0B 0E #转储分频器寄存器值。
    W 18 12 87 # NADC 已上电并设置为7
    W 18 13 82 # mAdc 已上电并设置为2
    W 18 14 80 # AOSR=128
    */

    i2cm txbuf 0x04 0x0B 0x91 0x07 0x06 0x90
    i2cm TX 0x18 6 100
    i2cm txbuf 0x0B 0x82 0x87 0x00 0x80
    i2cm TX 0x18 5 100
    i2cm txbuf 0x12 0x87 0x82 0x80
    i2cm TX 0x18 4 100

    /*
    E 为12 MHz MCLK 源设置 PLL、输入90.720 MHz 输出(对于44.1kHz 采样率)

    w 18 04 0b #设置 PLL_CLKin=GPIO1和 CODEC_CLKin=PLL_CLK
    w 18 05 91 #在 P=1、R=1时为 PLL 上电
    W 18 06 07 # PLL J=7 (J.D=7.0560)

    W 18 07 02 # PLL D (MSB)=0x02
    w 18 08 30 # PLL D (lsb)=0x30
    D 18 05 08 #转储 PLL 设置。

    e 设置时钟分频器。
    W 18 0B 85 # NDAC 已上电并设置为5
    W 18 0C 83 # MDAC 已上电并设置为3
    W 18 0D 00 # DOSR=128、DOSR (9:8)=0
    W 18 0E 80 # DOSR (7:0)=128
    D 18 0B 0E #转储分频器寄存器值。
    W 18 12 85 # NADC 已上电并设置为5
    W 18 13 83 # mAdc 已上电并设置为3
    W 18 14 80 # AOSR=128
    */

    //i2cm txbuf 0x04 0x0B 0x91 0x07 0x02 0x30
    //i2cm TX 0x18 6 100
    //i2cm txbuf 0x0B 0x85 0x83 0x00 0x80
    //i2cm TX 0x18 5 100
    //i2cm txbuf 0x12 0x85 0x83 0x80
    //i2cm TX 0x18 4 100

    /*
    E 设置模式、字长和 BCLK N 分频器。
    w 18 1B 0d # Mode=I2S、字长=16、BCLK、WCLK 是编解码器的输出、DOUT Hi-Z。
    w 18 1D 07 # BCLK 和 WCLK 有效、编解码器断电、BDIV_CLKIN = ADC_MOD_CLK
    W 18 1E 84 # BCLK N 分频器上电、N = 4
    */
    i2cm txbuf 0x1b 0x0d
    i2cm TX 0x18 2 10
    i2cm txbuf 0x1d 0x07 0x84
    i2cm TX 0x18 3 100

    /*
    E 设置 PRB 和数据路径(其作用是什么?)
    W 18 3C 01 # DAC PRB 设置为 PRB_P1。
    W 18 3D 04 # ADC PRB 设置为 PRB_R4。
    w 18 3F D6 #设置 DAC 数据路径。
    */

    i2cm txbuf 0x3c 0x01 0x04
    i2cm TX 0x18 3 100
    i2cm txbuf 0x3f 0xd6
    i2cm TX 0x18 2 100

    /*
    w 18 00 01 #选择第1页。
    W 18 21 46 #去 POP 音、驱动器接通时间=600ms、步进时间=4ms
    w 18 1F C6 #打开 HP 驱动程序电源
    R 18 1F #检查 b0中是否存在短路标志。
    */

    i2cm txbuf 0x00 0x01
    i2cm TX 0x18 2 100
    i2cm txbuf 0x21 0x46
    i2cm TX 0x18 2 100
    i2cm txbuf 0x1f 0xc6
    i2cm TX 0x18 2 100

    /*
    W 18 23 88 # DAC_L 路由至 HPL、DAC_R 路由至 HPR
    W 18 28 0F # HPL 驱动器已取消静音且增益设置为1dB
    W 18 29 0F # HPR 驱动器已取消静音且增益设置为1dB
    w 18 24 00 #模拟音量控制增益设置为0dB (用于 HPL)
    w 18 25 00 #模拟音量控制增益设置为0dB (用于 HPR)
    W 18 2E 0b # MICBIAS=AVDD
    W 18 2F 92 #启用 PGA、最大 也是如此
    w 18 30 40 # MIC、Rin=10k
    w 18 31 40 # CM、Rin=10k
    */

    i2cm txbuf 0x23 0x88
    i2cm TX 0x18 2 100
    i2cm txbuf 0x28 0x0F 0x0F
    i2cm TX 0x18 3 100
    i2cm txbuf 0x24 0x00 0x00
    i2cm TX 0x18 3 100
    i2cm txbuf 0x2e 0x0B
    i2cm TX 0x18 2 100
    i2cm txbuf 0x2F 0x92
    i2cm TX 0x18 2 100
    i2cm txbuf 0x30 0x40 0x40
    i2cm TX 0x18 3 100

    /*
    e 静音设置
    w 18 00 00 #选择第0页。 应用手册中没有此内容!
    w 18 40 00 # DAC 取消静音、独立的音量控制。
    W 18 51 80 #功率 ADC 通道
    w 18 52 00 #使 ADC 通道取消静音
    W 18 53 14 # ADC 数字音量10dB
    */

    i2cm txbuf 0x00 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x40 0x00
    i2cm TX 0x18 2 100
    i2cm txbuf 0x51 0x80 0x00
    i2cm TX 0x18 3 100

    /*
    W 18 41 30 # LDAC 增益24dB
    W 18 42 30 # RDAC 增益24 dB
    D 18 41 42 #转储 DAC 增益设置
    */

    i2cm txbuf 0x41 0x30 0x30
    i2cm TX 0x18 3 100

    但在本例中、我遇到了另一个问题。
    现在、Fs 是24kHz、而不是48kHz。



    我确认再次使用 SoC 的12MHz 时钟馈送 GPIO1。
    然后、  
    FS =(PLL_CLKIN *(R * J. D)/P)/(NADC * mAdc * AOSR)
       =(12000000 *(1 * 7.1680)/1)/(7 * 2 * 128)
       = 48,000

    实际上、这些值来自于数据表中所示的示例、即表7-42。

    为什么我得到半个 FS?

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

    你好、Jin Won、

    我注意到在您的脚本中有两组 PLL 配置。 您的第一个设置是示例中的设置(48kHz)、但您的第二个设置会覆盖第一个设置、并产生44.1kHz 设置。 我会一次只使用其中的、并尽量不要让两者都在同一个脚本中。

    还要仔细检查 EVM 上的 TAS1020B 是否尝试输出任何 I2S 时钟? 通常在插入 USB 并打开 EVM 之后、TAS1020B 控制器充当 I2S 主机。 如果它仍在输出时钟、则可能会产生一些冲突。

    此致、
    Jeff McPherson

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

    我发现 IO 电压与我的 SoC 不兼容。 这可能是因为 TLV320AIC3110EVM-U 本身上已经存在 MCU。