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.

[参考译文] BQ25896:BQ25896 REG0C 和多读/写

Guru**** 2390735 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1021550/bq25896-bq25896-reg0c-and-multi-read-write

器件型号:BQ25896

您好!

在数据表中、在9.2.16.7多读和多写下、显示"REG0C 不支持多读和多写"。

您能更具体地说明它的行为吗?

REG0C 是一个只读寄存器、因此对它进行一次写操作可能没有任何效果。 多次写入、例如 REG0A -> REG0B -> REG0C -> REG0D、是否会以某种方式中止或导致任何其他问题?

我已经对从 REG00到 REG14的所有寄存器进行了多次读取、这似乎是有效的。 唯一的潜在问题是从 REG0C 读取提供了一个无效的0x00字节(当您没有错误时很难知道)、但该 REG00 -> REG14多读中的后续寄存器(REG0D -> REG14)似乎提供了有效的内容。

也许最相关的用例是对 INT 脉冲作出反应。 首先、您从 REG0C 执行一次读取操作、以获取并清除错误标志

与多读 REG00 -> REG0B、单读 REG0C 以及多读 REG0D -> REG14相比、从 REG00到 REG14进行多读操作更实用。

请您对此提供一些说明吗?

此致

Niclas

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

    Niclas、

    详情请参阅9.2.16.7。

    9.2.16.7多读和多写

    充电器器件支持 REG00至 REG14上的多读和多写、REG0C 除外。

    REG0C 是一个故障寄存器。 它会保留上次读取的所有故障信息、直到主机发出新的读取。 例如、如果充电安全计时器过期故障发生但稍后恢复、则故障寄存器 REG0C 会在首次读取故障时报告故障、但在第二次读取故障时返回正常状态。 为了获得当前的故障信息、主机必须第二次读取 REG0C。 唯一的例外是 NTC_FAULT、它始终报告 TS 引脚上的实际情况。

    谢谢、

    宁。

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

    您好、Ning、谢谢您、

    是的、但9.2.16.7含糊不清

    与 REG0C 和多读/多写相关的唯一限制是否在于您必须第二次读取它才能首先获得点到点触发故障、然后获取当前状态? 如果是、您应该在多读之前或之后对 REG0C 进行单次读取、还是不重要?

    或者、REG0C 上的多读或多写是否会导致任何类型的故障、进入未指定状态或类似情况?

    此致

    Niclas

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

    Niclas、

    请遵循 d/s 说明。 请单次读取 REG0C 两次以获取当前故障信息。

    谢谢、

    宁。

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

    这很烦人、浪费时间。

    如果您在为 TI 工作、但不知道答案、请将问题上报给认识的人。

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

    我将再次尝试对问题进行措辞。 请在回答之前仔细阅读:

    我们最初假设您正确地认为、需要_single_读取 REG0C 两次才能获取累积和当前的误差信息。

    如果编程器还想读取所有寄存器 REG00 -> REG14的内容、但这次不关心 REG0C 的正确性(因为您已经读取了两次)、 是否存在多读 REG00 -> REG14会导致任何类型的故障、进入未指定状态或类似情况的风险? 正如我在原来的问题中所写的那样,这似乎是可以正常工作的。

    很明显、以下序列是安全的:

    A:单个 REG0C、单个 REG0C、多个 REG00至 REG0B、多个 REG0D 至 REG14

    这可能也是安全的:

    B:单个 REG0C、多个 REG00至 REG0B、单个 REG0C、多个 REG0D 至 REG14

    更实用的顺序是:

    C:单个 REG0C、单个 REG0C、多个 REG00至 REG14

    更实用的顺序是:

    D:单个 REG0C、多个 REG00至 REG14、单个 REG0C

    最实用的顺序是:

    E:单个 REG0C、多个 REG00至 REG14

    到目前为止、序列#E 最容易实现、尤其是当您基于 I2C 通信中断并且 I2C 总线由多个从器件共享时、因此您必须确定每次 I2C 总线事务完成时将与哪个从器件通信。

    我在这条消息的开头写了"初始"、因为我怀疑序列#E 将正常工作、并且_在多次读取中为您提供 REG0C 的正确内容。 我的假设是、编写数据表的人员不了解编程影响、也不想学习(和解释) REG0C 和多读/写的详细信息。 我怀疑正确的描述是您需要以您选择的方式读取 REG0C 两次。 (关键字可能是"两次"而不是"单次"。)

    您无法通过参考数据表来回答我的问题。 您需要将问题升级到二级或三级支持、以访问硬件设计信息、甚至可能是设计团队成员的人员。