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.

[参考译文] LM51772:LM51772RHAR–在连续 I²C 更新期间是否安全写入保留寄存器 0x0B?

Guru**** 2782485 points

Other Parts Discussed in Thread: LM51772

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1619544/lm51772-lm51772rhar-is-writing-to-reserved-register-0x0b-safe-during-sequential-i2c-update

器件型号: LM51772

您好:

我正在使用 LM51772RHAR 并且在正常运行期间通过 I²C μ s 定期更新以下寄存器:

  • 0x0A–ILIM_THRESHOLD

  • 0x0C–VOUT_TARGET1_LSB

  • 0x0D–VOUT_TARGET1_MSB

I²C UART 转 I ² C 桥接器访问器件。 I²C UART 命令延迟和事务开销、每个单独的 μ s 事务都会引入明显的延迟。 因此、在更新这些参数时、我希望尽量减少 I²C μ s 事务数。

理想情况下、我会从地址 0x0A 开始执行单次顺序写入。 但是、由于自动增量寻址、这也会将一个字节写入地址 0x0B、该地址未在寄存器映射中列出并看起来是保留的。

我希望澄清以下几点:

  1. 对于整个器件修订版本、寄存器地址 0x0B 是否保证忽略写入操作(即无功能影响)?

  2. 如果无法保证写入 0x0B 是安全的:
    是否可以在启动时读取 0x0B 一次、并在后续顺序更新期间始终写回该值?

  3. 如果不建议写入 0x0B、是否有官方支持的方法来在更新 0x0A 和 0x0C/0x0D 时尽可能减少事务计数(例如,影子寄存器机制,写入时锁存行为或建议的更新序列)?

I²C 以默认速度运行。 更新会在运行期间定期进行(不仅是在启动时)、而参数转换期间的确定行为对于应用非常重要。

I²C 目标是在保持完全支持和安全的器件运行的同时、降低 UART 到 1 μ s 的电桥延迟。

感谢您的支持。

此致、
Luca.

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

    尊敬的 Luca:

    请注意、地址的 LSB 定义了访问方向(读取或写入)。

    因此,当您按顺序写入时,您会写入)x01、0x0C、...

    此致、

     Stefan

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

    感谢您的快速答复。

    为了澄清一下、我的问题不是关于 I²C R/W 位、而是关于 LM51772 的内部寄存器自动递增。

    当在寄存器 0x0A 开始顺序写入时、内部寄存器指针将递增、并在达到 0x0C 和 0x0D 之前向 0x0B 写入一个字节。

    由于 0x0B 未在寄存器映射中列出并似乎是保留、您能否确认对内部寄存器 0x0B 的写入是否能保证被忽略并且不会产生功能影响(在整个器件修订版本中)?

    谢谢你。

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

    尊敬的 Luca:

    抱歉、上面有一个拼写错误、应该是  

    将写入 0x0A、0x0C、...

    因此、它会递增到下一个物理地址 0x0A、然后是 0x0C、…

    此致、

     Stefan

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

    感谢您的澄清。

    只是为了确认我的理解:
    您是否说在从 0x0A 开始的顺序写入期间、内部寄存器指针完全跳过地址 0x0B 并直接递增到 0x0C? 换句话说、在自动递增期间没有数据字节会写入 0x0B?

    数据表或其他文档中是否有描述此自动递增行为的部分(即跳过 0x0B)? 我想在内部设计文档中引用记录的行为。

    谢谢你。
    最好的、Luca

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

    需要进行校正、因为我混合了 I2C 和内部寄存器地址。

    因此、如果写入内部寄存器、它们只会逐步递增。

    因此、您需要单独设置对寄存器 0x0A 的写入。

    0x0C 和 0x0D 可作为顺序写入来完成。

    此致、

     Stefan

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

    谢谢、了解了逐步自动递增的相关信息。

    为了完整性:如果从 0x0A 开始的顺序写入仍然最终向保留地址 0x0B 写入一个字节、预期行为是什么?

    • 写入 0x0B 是否被忽略(无功能效果)、或者它是否有副作用?

    • 这种行为在器件修订版本中是否得到保证?

    谢谢你。
    最好的、Luca

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

    尊敬的 Luca:

    很抱歉昨天的混淆。

    因此、您可以对寄存器接口进行顺序写入。 每次写入 1 后、目标地址会递增。

    如果地址为 0x0A、 写入模式为 0x01、 0x02  、0x03、0x04、  

    寄存器 0x0A 将获得 0x01

    寄存器 0x0B 将获得被忽略的虚拟写入

    寄存器 0x0C 将获得 0x03

    寄存器 0x0D 将获得 0x04

    没有计划更改此值 — 如果由于我现在看不到的任何原因而导致更改,则需要提供 PCN 并将被发送出去。

    此致、

     Stefan

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

    谢谢!