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.

[参考译文] TLV320AIC3254:MCLK/BCLK/WCLK 和数据正常、但没有声音

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1399661/tlv320aic3254-mclk-bclk-wclk-and-data-is-ok-but-no-sound

器件型号:TLV320AIC3254

工具与软件:

MCLK (12.288MHz)/BCLK (1.536MHz)/WCLK (48kHz)由 imx8mp (NXP)供电并且数据传输到编解码器、 但播放时没有声音。

所有时钟和数据信号均正常。

我们不使用外部 AVDD 和 DVDD (GND)、而是仅使用 IOVDD 1.8V 和 LDOIN 3.3V。  当然、LDO_SELECT 引脚为高电平(1.8V)。

请参阅 TLV320AIC3254应用参考指南((SLAA408A)中的4.0.2。

对于使用内部 AVDD 和 DVDD 而不是外部的电路、 必须更改哪个寄存器值?  

除以下寄存器之外、是否有其他任何寄存器需要设置?

 - b[3]=0在页1/寄存器1

 - b[0]=1在页1/寄存器2

 - b[3]=1、b[0:1]=1、在页1/寄存器0x0a 中

 - b[3]=1在第1页/寄存器0x33用于捕获,不回放

谢谢。

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

    尊敬的 Kevin:

    您能否共享完整的脚本以便能够看到写入序列中的位置?

    谢谢!
    Jeff McPherson

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

    我使用 speaker-test -t wav 命令在 aic32x4_MUTE 功能中对其进行了测试(采样率=48000、通道=1、S16_LE)。

    乙醚 HP 或线路输出没有信号。  该脚本参考  文档 SLAA408A 中的示例设置4.0.2。

    static int aic32x4_mute (struct sd_soc_dai * dai、int mute、int direction)

    struct snd_soc_component *component = dai -> component;

    /*启用 HP 检测(默认值=0x00)
    B[7]=启用
    b[5:6]=只读:01=strearo detect, 11=streao+cell
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (0、0x43)、0x80);

    /*软件复位(默认值=0x00)
    B[0]:自清除软件复位
    */
    //在 aic32x4_probe ()中重置 s/w
    // snd_soc_component_write (component、AIC32X4_REG (0、0x01)、0x01);

    /*时钟设置寄存器6和7 (默认值=0x01)
    B[7]:NDAC/MDAC 分频器上电
    B[0:6]:NDAC/MDAC 值
    */
    SND_SoC_COMPONSE_WRITE (分量、AIC32X4_REG (0、0x0B)、0x81);// NDAC
    SND_SoC_COMPONENTARY_WRITE (分量、AIC32X4_REG (0、0x0c)、0x84);// MDAC

    /* DAC OSR 设置*/
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (0、0x0d)、0x00);// MSB (默认值=0x00)
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (0、0x0E)、0x40);// LSB (默认值=0x80)

    /* DAC 信号处理块控制(默认值=0x01):PRB_P1
    B[0:4]:DAC 信号处理块 PRB_Px
    */
    SND_SoC_component_write (component、AIC32X4_REG (0、0x3c)、0x08);

    /*功率配置寄存器
    b[3]:使用外部或内部 AVDD(default=00)
    0 =内部 AVDD
    1=外部 AVDD (禁用 AVDD 与 DVDD 的弱连接)
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x01)、0x00);

    /* LDO 控制(默认值=0x08)
    b[3]:模拟块电源控制、(WRANING) 1=禁用
    B[0]:AVDD LDO 上电
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x02)、0x01);

    /*基准上电寄存器(默认值=0x00)、b[0:2]
    0 =当模拟块上电时缓慢上电
    1=当模拟块上电时、上电时间为40ms
    */
    SND_SoC_component_write (component、AIC32X4_REG (1、0x7B)、0x01);


    /*耳机驱动器启动控制(默认值=0x00)、
    B[6:7]
    - 00:软路由步骤时间为0ms (*)
    - 01:软路由步长为50ms
    - 10:软路由步长为100ms
    - 11:软路由步长为200ms
    B[2:5]
    - 0000:禁用耳机放大器缓慢上电
    - 1001: 1001:耳机在5.0时间常数中缓慢地斜升功率(*)
    B[0:1]
    - 00:耳机斜升加电时间由25k 电阻决定
    - 01:耳机斜升加电时间由6k 电阻确定(*)
    - 10:耳机斜升上电时间由2k 电阻决定
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x14)、0x25);


    /*(警告)内部 AVDD/DVDD 使用 LDOIN 3.3V、不使用外部 AVDD/DVDD (默认值=0x00)
    B[6]
    0:全芯片共模为0.9V
    - 1:全芯片共模为0.75V
    B[4:5]
    - 00 : HPL 和 HPR 的输出共模与全芯片共模相同
    - 01:HPL 和 HPR 的输出共模为1.25V
    - 10: HPL 和 HPR 的输出共模为1.5V
    - 11:HPL 和 HPR 的输出共模是1.65V (如果 D6 = 0)、1.5V (如果 D6 = 1)
    B[3]=1:LOL/R 为1.65V 并由 LDOIN 供电
    B[1]=1:HPL/R 由 LDOIN 供电
    B[0]=1:LDOIN 3.3V (1.8V ~ 3.36)、0=1.5V~1.95V
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x0a)、0x0B);


    /* HPL/R 路由*/
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x0c)、0x08);
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x0d)、0x08);

    /*播放配置寄存器(默认值=0x00)
    B[6:7]
    - 00 = LDAC 路由到 HPL 使用 AB 类驱动程序
    - 11= LDAC 路由到 HPL 使用 D 类驱动程序
    B[2:4]:左 DAC PTM (Power Tune 模式)控制
    - 000 =左 DAC 处于 PTM_P3、PTM_P4模式
    - 001 =让 DAC 处于 PTM_P2模式
    - 010 =左 DAC 处于 PTM_P1模式
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x03)、0x08);// LDAC 处于 PTM_P1模式
    SND_SoC_component_write (component、AIC32X4_REG (1、0x04)、0x08);// RDAC 处于 PTM_P1模式


    /* HP/线路输出静音控制
    b[6]= 1 (defull)->静音
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x10)、0x00);// HPL
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x11)、0x00);// HPR
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x12)、0x00);// LOL
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (1、0x13)、0x00);// LOR

    /* HPL/R 和 LOL/R 上电(默认值=0x00)
    B[4:5]:HPL/R 上电
    B[2:3]:LOL/R 加电
    B[1]:MAL(左混频放大器)上电
    B[0]:MAR (右侧混频放大器)上电
    */
    SND_SoC_COMPONSET_WRITE (分量、AIC32X4_REG (1、0x09)、0x3F/* 0x3C*/);

    /* LOL/R 路由*/
    SND_SoC_component_WRITE(component, AIC32X4_REG(1, 0x0E)、0x0a/*0x08*/);// LDAC 路由到 LOL:0x0a=带 MAL
    SND_SoC_component_write (component、AIC32X4_REG (1、0x0F)、0x0a/* 0x08*/);// RDAC 路由到 Lor:0xA=使用 MAR

    /* DAC 通道设置1:电源控制(默认值=0x14)
    B[7]:LDAC 上电、默认值=0 (断电)
    B[6]:RDAC 声波器启动、默认值=0 (断电)
    b[4:5]:LDAC 数据路径控制(defullat=01:LDAC -> L 通道)
    b[2:3]:RDAC 数据路径控制(默认值=01:RDAC -> R 信道)
    B[0:1]:软步进音量控制(默认值=00)
    */
    SND_SoC_COMPONENT_WRITE (分量、AIC32X4_REG (0、0x3f)、0xd6);

    /* DAC 通道设置2:DAC 静音控制
    B[4:6]: DAC 自动静音控制
    B[3]:LDAC MUTE=1 (默认值)
    b[2]:RDAC MUTE=1 (默认值)
    */
    SND_SoC_component_write (component、AIC32X4_REG (0、0x40)、0x00);// 0x0C (静音)
    }

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

    即使您通过参考数据表2.9.1.1.1待机模式(3.3V 运行)将第1页寄存器0x7B 更改为5、结果也是相同的。

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

    尊敬的 Kevin:

    我注意到的一点是、DAC 已断电、而 DAC 已静音、这就是没有获得任何输出的原因之一。

    我已经从4.0.2编辑了脚本、以适应内部 LDO 电源。 我在 EVM 上验证了此特性、并使用 I2S 输入信号从耳机输出发出音调。

    # Initialize to Page 0
    w 30 00 00
    # Initialize the device through software reset
    w 30 01 01
    # Power up the NDAC divide with value 1
    w 30 0b 81
    # Power up the MDAC divider with value 4
    w 30 0c 84
    # Program the OSR of DAC to 64
    w 30 0d 00
    w 30 0e 40
    # Set the DAC Mode to PRB_P8
    w 30 3c 08
    # Select Page 1
    w 30 00 01
    # Disable Internal Crude AVdd in presence of external AVdd supply or before
    # powering up internal AVdd LDO
    w 30 01 08
    # Power Up AVDD LDO and Enable Master Analog Block Power
    w 30 02 01
    # Set the REF charging time to 40ms
    w 30 7b 01
    # HP soft stepping settings for optimal pop performance at power up
    # Rpop used is 6k with N = 6 and soft step = 20usec. This should work with 47uF coupling
    # capacitor. Can try N=5,6 or 7 time constants as well. Trade-off delay vs “pop” sound.
    w 30 14 25
    # Set the Input Common Mode to 0.9V and Output Common Mode for Headphone to
    # Input Common Mode
    w 30 0a 00
    # Route Left DAC to HPL
    w 30 0c 08
    # Route Right DAC to HPR
    w 30 0d 08
    # Set the DAC PTM mode to PTM_P1
    w 30 03 08
    w 30 04 08
    # Set the HPL gain to 0dB
    w 30 10 00
    # Set the HPR gain to 0dB
    w 30 11 00
    # Power up HPL and HPR drivers
    w 30 09 30
    # Wait for 2.5 sec for soft stepping to take effect
    # Else read Page 1, Register 63d, D(7:6). When = “11” soft-stepping is complete
    # Select Page 0
    w 30 00 00
    # Power up the Left and Right DAC Channels with route the Left Audio digital data to
    # Left Channel DAC and Right Audio digital data to Right Channel DAC
    w 30 3f d6
    # Unmute the DAC digital volume control
    w 30 40 00
    

    此致、
    Jeff McPherson  

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

    尊敬的 Jeff:

    结果是相同的、即没有单到 HPL/R 的输出
    当我与文档(SLAA408A)进行比较时、只有页1/寄存器2从0x00更改为0x01、用于 AVDD LDO 上电。
    我们使用外部 LDOIN 3.3V 而不是外部1.8V、并有一些问题。

    1.对于外部的 LDOIN 3.3V、 仅更改页1/寄存器2是否足够? 不 需要更改页1/寄存器0x0a b[0:1]?

    2.我在第0页/寄存器0x43中检查了 HP 检测。 值为0x80。 我想我们的电路板有一些硬件问题。 无论如何、如果无法检测到 HP、那么编解码器会在内部禁用 HP 输出?

    3.我将使用页1/寄存器0x0E 和0x0F (而不是0x0c 和0x0d)更改并测试从 HP 到 Lineout 的路由路径。 使用页1/寄存器9进行 LOL/R 上电的范围为0x30至0x0C。 对于线性输出(而不是 HP)是否足够?

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

    附了音频编解码器的原理图。

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

    将第1/页寄存器0x12和0x13设置为0x00以撤消 LOL/R 的静音

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

    尊敬的 Kevin:

    1) 1页寄存器0x0A [1:0]仅在您要将 LDOIN 电源用于耳机输出时才需要更改。 默认情况下使用 AVDD 电源、在本例中是 LDO 生成的内部 AVDD。

    2)编解码器不会对耳机检测做出反应。 只有标志会在寄存器映射中设置。 该器件旨在使 SoC 监控这些标志、一旦检测到耳机、所需的寄存器将被写入编解码器(例如、为 HP 驱动程序加电)。

    3) 3)是的、您基本上只需要将 DAC 滤波器输出连接到线路输出而不是 HP 输出、外加加电和取消 LOL/R 驱动器静音。

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

    尊敬的 Jeff:

    我使用 alsa 实用程序命令进行了测试、即 speaker-test [-Dplughw:X,Y]-t wav。 我尝试了一次环回测试、使用页0/寄存器29设为0x20来验证来自 AP (imx8mp)的 I2S 数据。 总之、没有信号给 HP 的原因似乎是噪声从 AP 传输并由音频编解码器内的内部 miniDSP 进行过滤。 如果将选项从-t wav 更改为-t sine、则声音正常、因此此问题已解决。

    我将检查 SAI (串行音频接口)部分以找出播放 wav 文件时为什么会发出噪音。

    再次感谢。

    BR、
    Kevin Kim

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

    尊敬的 Jeff:

    我使用 alsa 实用程序命令进行了测试、即 speaker-test [-Dplughw:X,Y]-t wav。 我尝试了一次环回测试、使用页0/寄存器29设为0x20来验证来自 AP (imx8mp)的 I2S 数据。 总之、没有信号给 HP 的原因似乎是噪声从 AP 传输并由音频编解码器内的内部 miniDSP 进行过滤。 如果将选项从-t wav 更改为-t sine、则声音正常、因此此问题已解决。

    我将检查 SAI (串行音频接口)部分以找出播放 wav 文件时为什么会发出噪音。

    仅供参考、如果将输出更改为线路输出、 即使播放一个 wav 文件、声音也正常。

    因此,我怀疑 hp-det 零件首先。

    BR、
    Kevin Kim