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:从 TLV320AIC3104读取问题。

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1502574/tlv320aic3104-reading-issue-from-the-tlv320aic3104

器件型号:TLV320AIC3104

工具/软件:

我正在使用 TLV320AIC3104编解码器。 我正在使用 I2C 写入编解码器芯片中的寄存器、但无法读回相同的值。 这是预期的器件行为吗?

我已经附上了同样的屏幕截图

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

    尊敬的 Rutuja,

    此代码片段中的回读值在哪里? 您能否探测 I2C 线路以比较硬件中发生的情况?

    此致、
    Jeff McPherson

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

    您好、Jeff、

    在上面的屏幕截图中,我首先使用 i2cget 命令读取地址处的寄存器值 0x10。 然后、 0x11 使用 i2cset 命令写入同一寄存器。 然而,当我再次读取同一个寄存器时,它返回 0xFF 而不是 0x11。 我在许多寄存器中遇到同样的问题—我无法正确读回写入的值。
    我也尝试了使用 sSMBus 和 ioctl 函数进行相同的操作、但得到了相同的结果。 我想知道这是预期的硬件行为、还是驱动程序代码中可能存在问题?
    谢谢。此致、
    Rutuja.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rutuja,

    否、这不是预期行为。 常量0xFF 表示器件确认了 I2C 事务、但未返回任何数据。

    i2cget 读取地址
    处寄存器值的命令  0x10

    图片显示0x19是寄存器地址、而不是0x10。 这是一个拼写错误、还是我误解了计算?

    此外、是否有任何需要读取的寄存器? 您提到的许多寄存器都有问题、但这些都有问题吗?

    该器件还有一个问题、即它仅支持"重复启动"I2C 读取事务。 某些控制器将使用连续读取样式。 这将导致器件错误地返回地址+1的读取值。 因此、使用这种连续样式时、寄存器0x10会返回值0x11。 您可以在示波器上探测 I2C 事务、以查看是否出现这种情况。 您也可以写入值、然后从所需的寄存器地址-1读取、以查看结果是否匹配。

    此致、
    Jeff McPherson

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

    您好、Jeff、

    你是对的、这是一个拼写错误。 正确的寄存器地址应为0x19、而不是0x10。 感谢您的参与!

    我已经检查了需要读取响应的寄存器、但还没有收到预期的结果。
    正如您提到的、我还尝试从所需寄存器以及从其上方和下方的一个地址(+1和-1)读取、但仍然没有获得预期的输出。

    在上面的屏幕截图中、寄存器0x16的值为0x78。 我正尝试将该寄存器更新为0x20。 然而、当我从寄存器0x16读回时、我仍然得到0x78、这不是预期的结果。

    我还尝试读取寄存器0x15和0x17、但结果也不符合预期。

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

    尊敬的 Rutuja,

    是否有任何预期读取的寄存器、这不是0x7F 或0x00等微不足道的结果?

    此外、您是否可以仔细检查软件报告的值与使用示波器在硬件上显示的值相同? 举一个例子就足够了

    谢谢、
    Jeff McPherson