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.

[参考译文] TAS5722L:从错误模式中恢复

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/983243/tas5722l-recover-from-error-mode

器件型号:TAS5722L

大家好、

我们将板上的 TAS5722与运行 Linux4.19和 ALSA 的 ApolloLake SOC 一起使用。 我们很少观察到在播放声音期间 Linux 重新启动、并且在新的启动后没有声音播放的情况。 甚至重置 ApolloLake 也没有帮助。 只有循环通电功能才有用、但这在我们的应用中是不可接受的

现在、我得到了这个错误情况。 我看到的内容:

  • I2S 信号正常
  • PowerControl 寄存器包含0xFD (IC 不处于睡眠模式、也不处于关断模式)
  • FaultsConfigAndErrorStatus 寄存器包含0x08 (SAIF 时钟错误存在)
  • FAULTZ 引脚具有短的低尖峰:每350uS 低10us

当我在 PowerControl 寄存器中写入0xFC 到 PowerControl 寄存器时、FAULTZ 变为高电平、当写入0xFD 时、FAULTZ 每350us 再次变为低电平。 数据表描述了仅在关断模式下 FAULTZ 上的低电平短接。 但我们显然不是这样:

我们如何从该模式中恢复 IC?

谢谢、

此致、

Sergey

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

    电源 未附加屏幕截图:

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

    您好 Sergey、

    您能否提供 I2S 信号的波形以及这些波形的频率。 您能否还提供系统原理图?

    此致、

    Luis

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

    您好、Luis、

    当然。 下面是原理图的一部分:


    和运行系统的波形。 通道1为 LRCLK、通道2为 BCLK、通道3为 SDI。 最后、您会看到测量的 BCLK 频率约为3、075MHz

    在我的测试用例中、我使用的是器件和一个 PCB。 我昨天(当 PCB 中发生错误时)介绍的具有通道1 BCLK 和通道2的系统图片为 FAULTZ。 其他信号也正常:

    误差很少发生。 在测试中、我们每分钟都在运行 Linux 系统的重新引导。 该夜间错误发生在器件中。 我只能读取寄存器、不能检查信号。 以下是寄存器:

    我尝试将某些寄存器(0x13、0x01、0x08)设置为默认值、但它没有帮助。 声音在播放后无法播放:

    希望这对您有所帮助。 我将再次尝试获取 PCB 中的误差

    谢谢、

    此致、

    Sergey

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

    您好、Luis、
    我周末开始了器件和 PCB 测试。 PCB 仍然正常工作、但器件存在误差。 我从器件读取寄存器。 它们的值也与上周相同。 然后、对于器件:
       •我使用默认值设置数据表寄存器中所述的所有值、但它没有帮助
       •复位 ApolloLake SOC、也没有帮助
       •在地址0x07的未记录寄存器中写入0x00值、因为它是在正常运行的 PCB 中。 声音开始了(!)

    地址0x07处的该寄存器的用途是什么?

    谢谢、
    此致、
    Sergey

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

    您好 Sergey、

    我将查看0x07寄存器。 但是、我注意到您违反了我们数据表中的一些建议、并且在 Vcom、Vreg 和 GVDD 中使用100nF 电容而不是1uF 去耦电容。 应该是不相关的、但我会更正它以确保器件稳定性。 此外、BST 电容器为100nF 而不是220nF、这可能会导致器件出现问题、应予以纠正。

    您是否有 TAS5722LEVM、我建议您尝试使用来自 EVM 的 I2S 信号、以查看电容更改后是否出现相同的问题。

    此致、

    Luis

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

    您好、Luis、

    感谢您提供有关错误容量值的信息。 我将此案例报告给硬件开发、他们将调整下一代硬件的容量。 但我也不认为,这是目前问题的原因。

    我没有 EVM。 但是、昨天我在测试中额外获得了两块 PCB。 现在、我有3个 PCB 和一个测试中的器件。 在我的测试中、我每分钟运行一次 Linux 重启。 今天晚上3、这些测试单元的编解码器出现了错误。 有趣的是、在 PCB 上的一个中、地址0x13和0x14的寄存器具有错误的值。 当我将默认值写入0x13时、它开始播放。 另外2个 PCB 的情况与昨天相同:几乎所有寄存器都有奇怪的值、当我在其中写入默认值时、它没有帮助、当我将0x00写入地址0x07的寄存器时、它开始起作用。 我不知道为什么。 不幸的是,您的网站上的内容发生了变化,我现在无法附加屏幕截图来说明它是如何变化的。

    但无论如何、我现在的想法是:我看到 Linux 内核驱动程序在开始时不会将默认值写入寄存器、 它启动计时器以每200ms 在地址0x08轮询寄存器、如果驱动程序识别0x08中的锁存错误、则它通过在地址0x01的寄存器中写入值来唤醒编解码器。 怀疑是:如果 I2C 传输由于我们的 Linux 系统复位而在中间中断、那么编解码器将进入任何错误状态、我现在看到了这一点。 这将有助于在每次驱动程序启动时将默认值写入寄存器、并将0x00写入此0x07寄存器。 但没有记录该0x07寄存器。 我突然发现它很有用。 如果您可以检查它的用途、那将非常棒。 您是否可以更好地了解如何使系统在不出现此错误的情况下运行。

    谢谢、

    此致、

    Sergey

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

    您好、Sergey、

    感谢您的想法、我们的专家正在处理您的问题、  我们将会解决这个问题。

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

    您好 Sergey、

    该寄存器不应与此问题相关。 如果放大器未正确加电、您可以看到  FAULTZ 引脚的这种行为具有短的低尖峰:每350uS 为10us 低电平。 如果 BST 电容器不正确、就像系统中的电容器一样、这可能会导致放大器无法正常工作、并会拉取大量电流、这可能会导致放大器无法正常上电。

    您能否在看到此误差的启动序列期间测量电压轨的电流消耗。

    此致、

    Luis

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

    您好、Luis、

    >您是否可以在此启动序列期间测量电压轨的电流消耗,此时您会看到此错误。

    我想这几乎是不可能的。 误差极少出现。 只需了解:我们仅为器件供电一次。 在测试用例中、我们每分钟运行一次 Linux 系统重启(而不是重启)。 在昨天的测试日,我开始了5个这样的测试设备,一整晚都在测试。 早上发现只有一个测试单元出现错误。 对于其他测试单元、工作正常

     

    >如果 BST 电容不正确,就像系统中的电容一样,可能导致放大器无法正常工作,并且会拉大电流,这可能使放大器无法正常上电。

    好的、好主意。 我将在测试单元中焊接正确的容量并尝试它。 但这将需要几天的时间。 我将结果通知您

    谢谢、

    此致、

    Sergey

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

    您好 Sergey、

    我将等待您的测试结果。

    此致、

    Luis

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

    您好、Luis、

    我获得了具有正确值的电容器、以检查您的想法。 但在另一侧、一周多前、我在 Linux 内核驱动程序中实现了默认寄存器值设置、并在开始时将0值写入地址0x07的寄存器。 之后、我再也看不到编解码器问题了。 在本例中、我对中断 I2C 传输和编解码器行为的想法是正确的。 我想我们可以关闭此通信

    感谢您的大力支持、

    此致、

    Sergey