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.

[参考译文] TLV320AIC3101:大功率输出无法正常工作

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1302645/tlv320aic3101-high-power-outputs-not-working

器件型号:TLV320AIC3101

大家好、我开发了一款托管 TLV320AIC3101音频编解码器的定制电路板、它通过 I2S 协议与核板(STM32)进行通信。 在此处找到电路板的原理图:

在第一次测试时、我的想法是实施回送、方法是读取音频数据、将其发送到 Nucleo 板、然后将其发送回编解码器、再在高功率线路上输出(HPLOUT 和 HPROUT 连接到原理图上的 J3)。 我设法将数据发送到 STM、因为我可以通过 UART 打印并使其可视化、但是输出是静默的。 我试着检查状态寄存器是否存在 ADC 和 DAC 溢出、并注意到当输入音量增加时、这两个寄存器都溢出、因此我认为这两个寄存器都已正确设置。  

我尝试了手动和使用 GUI 界面设置寄存器、但没有成功。 我正在 SE 模式下使用 IN1L/R、连接到 ADCL/R、PGA 增益0dB、无 HP 滤波器、无 AGC、 两个 DAC 都加电、DAC_L 和 DAC_R 连接到相应的输出线路、采用交流耦合的伪差分输出、启用 HPLOT/HPROUT、禁用 HPLCOM/HPRCOM。 在此处找到寄存器的值:

0x00、0x00
0x01、0x80
0x02、0x00
0x04、0x04
0x05、0x00
0x06、0x00
0x07、0x0A
0x08、0x00
0x09、0x00
0x0A、0x00
0x0B、0x01
0x0C、0x00
0x0D、0x00
0x0E、0x82
0x0F、0x00
0x10、0x00
0x11、0xFF
0x12、0xFF
0x13、0x04
0x14、0x78
0x15、0x78
0x16、0x04
0x17、0x78
0x18、0x78
0x19、0x00
0x1A、0x00
0x1B、0x7F
0x1C、0x00
0x1D、0x00
0x1E、0x7F
0x1F、0x00
0x20、0x00
0x21、0x00
0x22、0x00
0x23、0x00
0x24、0x00
0x25、0xE0
0x26、0x14
0x27、0x00
0x28、0x80
0x29、0xA0
0x2A、0x14
0x2B、0x00
0x2C、0x00
0x2D、0x00
0x2E、0x00
0x2F、0x80
0x30、0x00
0x31、0x00
0x32、0x00
0x33、0x9D
0x34、0x00
0x35、0x00
0x36、0x00
0x37、0x00
0x38、0x00
0x39、0x00
0x3A、0x04
0x3B、0x00
0x3C、0x00
0x3D、0x00
0x3E、0x00
0x3F、0x00
0x40、0x80
0x41、0x9D
0x42、0x00
0x43、0x00
0x44、0x00
0x45、0x00
0x46、0x00
0x47、0x00
0x48、0x04
0x49、0x00
0x4A、0x00
0x4B、0x00
0x4C、0x00
0x4D、0x00
0x4E、0x00
0x4F、0x02
0x50、0x00
0x51、0x00
0x52、0x80
0x53、0x00
0x54、0x00
0x55、0x00
0x56、0x99
0x57、0x00
0x58、0x00
0x59、0x00
0x5A、0x00
0x5B、0x00
0x5C、0x80
0x5D、0x99
0x5E、0x00
0x5F、0x00
0x60、0x00
0x61、0x00
0x62、0x00
0x63、0x00
0x64、0x00
0x65、0x01
0x66、0x02
0x67、0x00
0x68、0x00
0x69、0x00
0x6A、0x00
0x6B、0x00
0x6C、0x00
0x6D、0x00

为了彻底地尝试、我甚至认为输出驱动器在焊接过程中损坏、我尝试焊接一个新驱动器、但还是没有成功。  

提前感谢您投入宝贵的时间给予大力支持、

此致、  

Luca.

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

    更新了:我之前复制的寄存器设置来自 GUI、但是通过将它们与实际数据表进行比较发现了一些错误。 这些是我现在设置的寄存器:

    //(1)软件复位

    Status = Codec_Write (Scodec、0x01、0b10000000);

    HAL_DELAY (10);

    //(2)编解码器 ADC/DAC 采样率

    Status = Codec_Write (SCDEC、0x02、0b00000000);

    //(3)我们需要 FS_ref=48kHz,MCLK = 50MHz,12.288MHz,其中 CODEC_CLK = MCLK*2/Q -> Q=8 -> 12.5MHz

    Status = Codec_Write (Scodec、0x03、0b01000000);

    //(7) fs=48kHz、ADC-DAC 双速率关闭、左 DAC 数据路径播放左通道输入数据、右 DAC 数据路径播放右通道输入数据

    Status = Codec_Write (SCDEC、0x07、0b00001010);

    //(12)输入 HP 滤波器已禁用,DAC 滤波器已旁路

    Status = Codec_Write (SCDICODEC、0x0c、0b00000000);

    //(14)高功率输出交流耦合驱动器配置、伪差动

    Status = Codec_Write (SCDICODEC、0x0E、0b10001000);

    //(15)使左 ADC PGA 取消静音

    Status = Codec_Write (SCDICODEC、0x0F、0b00000000);

    //(16)右侧 ADC PGA 取消静音

    Status = Codec_Write (CODEC、0x10、0b00000000);

    //让我们使用插孔 CH2进行测试!

    //(17) MIC2L 连接至左侧 ADC (0dB),MIC2R 未连接至左侧 ADC

    Status = Codec_Write (SCDEC、0x11、0b00001111);

    //(18) MIC2R 连接至 RIGTH ADC (0dB),MIC2L 未连接至右侧 ADC

    Status = Codec_Write (SCDEC、0x12、0b11110000);

    //(19)打开左侧 ADC -禁用 PGA 软步进

    Status = Codec_Write (Scodec、0x13、0b01111111);

    //(22)打开右侧 ADC -禁用 PGA 软步进

    Status = Codec_Write (SCCODEC、0x16、0b01111111);

    //(37)打开左右 DAC、HPLCOM 设置为独立 SE 输出

    Status = Codec_Write (Scodec、0x25、0b11100000);

    //(38) HPRCOM 设置为独立的 SE 输出、通过电流限制激活短路保护

    状态= Codec_Write (SCodec、0x26、0b00010100);

    //(40)输出共模电压= 1.35V -每个 FS 的输出软步进

    Status = Codec_Write (CODEC、0x28、0b00000000);

    //(41)设置 DAC 路径、DAC_L2设置为左侧高功率、DAC_R2设置为右侧高功率、右侧 DAC 音量跟随左侧 DAC 音量

    Status = Codec_Write (codec、0x29、0b10100001);

    //如果添加了注释,则 DAC_L1/DAC_R1用于 HPLOUT、HPROUT

    //(42)杂音抑制寄存器、分压器

    状态= Codec_Write (C2000c 编解码器,0x2a,0b00010100);

    //(43)使左侧 DAC 取消静音

    Status = Codec_Write (CODEC、0x2b、0b00000000);

    //(44)右侧 DAC 取消静音

    Status = Codec_Write (CODEC、0x2C、0b00000000);

    //(46) PGA_L 至 HPLOUT 关闭、音量控制0dB

    Status = Codec_Write (SCDICODEC、0x2e、0b00000000);

    //(47) DAC_L1至 HPLOUT 开启、音量控制0dB

    //status = Codec_Write (codec, 0x2F, 0b10000000);

    //(51)使 HPLOUT 取消静音、9dB、断电时高阻抗、HPLOUT 完全通电

    Status = Codec_Write (CODEC、0x33、0b10011101);

    //(58)使 HPLCOM 静音、断电时具有高阻抗、HPLCOM 完全通电

    //status = Codec_Write (codec, 0x3A, 0b00000100);

    //(63) PGA_R 至 HPROUT 关闭、音量控制0dB

    Status = Codec_Write (SCDICODEC、0x3f、0b00000000);

    //(64) DAC_R1至 HPROUT 开启、音量控制0dB

    //status = Codec_Write (codec, 0x3f, 0b00000000);

    //(65)使 HPROUT 取消静音、9dB、断电时高阻抗、HPROUT 完全通电

    Status = Codec_Write (Scodec, 0x41, 0b10011101);

    //(72)使 HPRCOM 取消静音、断电时具有高阻抗、HPRCOM 完全通电

    //status = Codec_Write (codec, 0x48, 0b00000100);

    //(101) CLK 源选择、CLKDIV_OUT

    Status = Codec_Write (SCDEC、0x65、0b00000001);

    但是、我仍然没有音频输出。

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

    尊敬的 Luca:

    似乎您的代码已将命令注释为0x2F、以将左侧 DAC 输出连接到 HP 驱动器、右侧也是如此。 是故意的吗? 这可能是您看不到输出的原因。

    此致、
    J·麦克弗森

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

    尊敬的 Jeff:  

    谢谢你的答复。 该行被注释掉、因为我的想法是将 DAC_L2和 DAC_R2路径连接起来、而不是将 DAC_L1和 DAC_R1连接到 HP 输出端。 我一直都在努力,但现在还没有。

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

    尊敬的 Luca:

    下面的脚本对我有用。 我不知道您的时钟设置如何、但既然您说 ADC 端的记录正确、那么您可能可以将您的时钟寄存器替换为我使用的寄存器。 为了便于参考、我的 BCLK 为12.288MHz、fs = 48kHz、没有 MCLK、因为 BCLK 被视为 CLKDIV 的输入:

    w 30 07 0A //48K ref、单速率、L/R DAC -> L/R 数据
    W 30 66 A0 // CLKDIV_IN & PLLCLK_IN 使用 BCLK
    w 30 29 A2 //LDAC->HPL、RDAC ->HPR、RDAC 卷遵循 LDAC
    W 30 2B 00 //LDAC 未静音0dB (也称为 RDAC)
    W 30 25 D0 //L/R DAC 上电、HPLCOM 恒定
    W 30 26 20 // HPRCOM 作为反馈
    W 30 33 0D //输出电平0dB、HPLOUT 取消静音、静音时高阻态、应用所有增益、上电
    W 30 41 0D //输出电平0dB、HPROUT 取消静音、静音时高阻态、应用所有增益、上电

    BTW 在尝试将注释加载到 EVM GUI 中之前、先删除这些注释。 请告诉我它是如何为您效劳的、
    J·麦克弗森

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

    尊敬的 Jeff:

    首先感谢您的宝贵支持-我使输出工作、现在可以回放音频。 然而、我面临着一个挑战、即音量极低、几乎听不到。 我已经检查并达到所有音量设置的最大值、DAC 似乎偶尔溢出(寄存器11)。 考虑到增益设置为9dB、我怀疑输出驱动器可能是问题所在。

    我还注意到、寄存器95的读数为0b11111100、表示在所有通道上检测到短路。 这可能是错误的寄存器设置损坏驱动器导致的结果吗?

    再次感谢、

    卢卡

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

    尊敬的 Luca:

    寄存器配置不太可能会导致器件损坏。 根据数据表中的第11.3.9节、默认情况下、器件将限制其电流输出并在发生过流时触发标志(寄存器95)。 当这种情况发生时、您必须关闭输出驱动器并再次开启、以清除标志。 这能解决音量关闭后的问题吗?

    此致、
    J·麦克弗森