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:不能处理I2C重复启动?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/576435/tlv320aic3101-doesn-t-handle-i2c-repeated-start

部件号:TLV320AIC3101

我的设计有TLV320AIC3101,我通过I2C总线从微控制器配置它。  如果写入作为单个完整的I2C事务发生,AIC3101寄存器将正确写入。  如果我写入寄存器地址,然后重复启动并写入数据,AIC3101寄存器将保持不变。

数据表中的第11.5 1节提到了重复启动,因此我希望它能够正常工作。  我想他们可能只考虑阅读,但这似乎很奇怪。

其他人有没有遇到这种情况?  我错过了什么吗?

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

    欢迎使用E2E,感谢您对我们产品的关注!

    重复启动也应该适合写入。 如数据表中所述,当总线处于活动状态时,主控制器可能会应用另一个启动条件。 这种重复启动是否适用于应用程序中的读取? 如果没有,您能否提供有关I2C线路的更多详细信息(I2C频率,示波器捕获)?

    谢谢你。

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

    您好,Luis,

    重复启动可用于读取,但不能用于写入。  时钟频率约为300kHz。

    以下是一个写事务(将0x01写入寄存器0)的跟踪,因为它在中间没有重复的开始:

    下面是同一个重复启动但不起作用(寄存器保持不变)的名称:

    感谢您提供的任何见解。

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

    这可能与页面选择有关。 寄存器0修改寄存器页。 因此,这可能会影响重复启动。 是否可以在不重复开始的情况下选择一个页面并尝试写入下一个寄存器?

    谢谢你。

    此致,
    Luis Fernando Rodríguez ñ o S.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Luis,

    虽然我上面提供的示例显示了对寄存器0的写入,但无论我使用哪个寄存器地址,我都看到完全相同的行为。 如果其他寄存器重复启动,那么页面选择寄存器是否仍然可以工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Eugene,

    如果此配置中涉及软件重置寄存器(第0页/寄存器1),则连续写入将不起作用。 此寄存器需要延迟,以确保所有寄存器都处于默认状态。

    我建议应用硬件重置和软件重置,以确保所有寄存器都处于默认状态。 然后,您是否可以尝试写入第0页/寄存器3-6。 您是否有相同的结果?

    此外,我建议验证IOVDD和DVDD电源。 这些电源与I2C写入有关。 请确保电源电压正确且稳定。

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

    您好,Luis,

    不涉及软件重置寄存器,所有电源都正确。

    简单地说,几年来,我一直在两种不同的产品中使用这种器件,使用完全的I2C写入,无需重复启动。  唯一让它停止工作的改变是将I2C写入分成两个部分,在这两个部分之间重复启动,这是我需要做的,以减少所连接的微控制器上的内存使用。

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

    希望这将说明问题与设备处理I2C之外的任何其他问题无关。  以下是从显示事务的单个捕获中提取的,该捕获同时显示了重复开始和不重复开始的事务。  尽管为清晰起见,它被分解,但这是连续图像之间I2C总线上没有活动的连续运行。

    首先,我们阅读Register 3,它包含记录的默认值0x10:

    然后,我们将0xFF值写入Register 3作为单个事务,不重复开始:

    之后,我们阅读了Register 3并看到0xFF的值写正确:

    然后,我们将0x00值写入Register 3,仍然使用不重复开始的单个事务:

    我们阅读Register 3 (注册3)并确认它现在包含0x00:

    接下来,我们再次将0xFF写入Register 3,这次在中间重复开始:

    我们读取了寄存器3,发现值 写入,且寄存器仍包含0x00:

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

    很抱歉,我的回复很晚。

    您能否告诉我,I2C标准模式和快速模式是否都出现了此问题?

    此外,当您应用重复启动时,您能否读取下一个寄存器值? 下一个寄存器是否具有正确的寄存器值?

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

    您好,Luis,

    100kHz时的行为相同,下一个寄存器也保持不变。

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

    在对编解码器进行了几次测试后,重复启动过程似乎不适用于写入。 我在你的所有条件下都得到了类似的结果。 重复启动程序似乎仅可用于读取。

    我建议使用连续写入来发送连续的寄存器值。 这可能有助于减少I2C命令。

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

    感谢您的确认。

    是否有任何机会将此问题提请从事音频编解码器工作的工程师或至少文档团队注意,以便将此问题纳入数据表?

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

    我将联系正确的工程师并通知此事。 这将避免此设备将来出现问题。

    此致,
    Luis Fernando Rodríguez ñ o S.