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.

[参考译文] BQ76952:更改 I2C 器件地址

Guru**** 2460850 points
Other Parts Discussed in Thread: MSPM0L1305, BQ76952

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1347054/bq76952-changing-i2c-device-address

器件型号:BQ76952
主题中讨论的其他器件:MSPM0L1305

您好!

我们正在定制 PCB 上开发一个系统、使用 MSPM0L1305 MCU 通过 I2C 与两个 BQ76952芯片通信。 为了使 MCU 能够单独与两个 AFE 进行通信、我们将尝试实现逻辑、以便根据以下序列在初始化过程中设置其中一个 AFE 的 I2C 器件地址:

  1. 禁用 AFE1
  2. 更改 AFE2的地址
  3. 启用 AFE1

虽然我成功地更改了 AFE2的地址、但禁用和启用 AFE1时遇到困难。 (我已按照 TRM 中的说明使用了 RST_SHUT 引脚以及 SHUTDOWN ()/RESET ()命令、但无法找到完全关断或将 AFE1从关断模式唤醒的功能方法。)

有人能告诉我在这种情况下最好的解决方案吗?

谢谢!

李京宰

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

    尊敬的 Kyungjae:

    我建议更改其中一个器件上的 I2C 地址、并将其刻录到 OTP 中、以使其成为该器件的默认地址。 这样、您就无需关闭某个器件即可在每次 POR 器件时更改地址。

    您可以在 OTP 编程指南( 链接)。

    此致、

    马克斯·韦博肯

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

    您好、Max:

    感谢您的快速响应! 我们最终将采用这种工艺进行生产。 但是、我们仍处于早期开发阶段、作为固件工程师、目前为我提供了我们的定制电路板、这些电路板上已经装配了两个 AFE。 说完就走

    了出去。 1.您是否认为在电路板上的同一 I2C 总线上存在两个理想 AFE 时、仅使用 OTP 来更改一个 AFE 的地址合理? 2.如果不使用 OTP,那么当我更改其中一个地址时,最好的方法是让它在总线上不可见? 谢谢! 李京宰
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kyungjae:

    1.该器件能够为每个寄存器支持多达2个 OTP 更改、并为 OTP 总共写入多达8个批次。 更改 I2C 地址只需要其中一组、因此您能够在该器件上再次在 OTP 中更改一次 I2C 地址、并进行7组其他更改。

    OTP 的限制对于此器件来说有点令人困惑、因此下面复制/粘贴了之前的说明、该说明可以更好地解释其工作原理:

    器件具有数据存储器的两个完整映像。 这意味着、每个单独的 设置最多可以更改两次。

    OTP 写入并不会将每个设置写入 OTP、而是仅写入已更改的设置、因此更改单个设置并将其写入 OTP 只会计入该特定设置的两次写入限制。 此时、所有其他设置仍可以更改两次。

    此器件还具有8个签名值。 这意味着、最多可支持总共八次对 OTP 的写入。

    例如:如果我要将 Power Config 的新值写入 OTP、这是我更改的唯一设置、则 Power Config 将能够再次更改一次、我将能够再进行七组更改。

    如果之后我要将每种保护的新阈值写入 OTP、 这些写入中的每一个仍可以再更改一次、而且由于我在相同的写入中进行了所有更改、因此我仍然可以对 OTP 进行六次以上的写入。 Power Config 还会保留我在上一次写入中更改的值(假设我在此写入中没有更改)。

    如果之后我专门向 COV 和 CUV 阈值写入了一个新值、并将其保存到 OTP、则这两个值将无法再在 OTP 中更改、并且我将有五个其他写入可用。

    我建议更改 OTP 中的 I2C 地址、因为这不会阻止您以后进行任何进一步的更改、这样做会更方便。

    2.从固件角度来看,最好的方法是关闭其中一个器件,方法是将其 RST_SHUT 引脚置位超过1,然后对另一个器件进行更改。 总的来说、最好的方法也许是在 I2C 线路上安装跳线、您可以移除这些跳线、以从总线上物理切割其中一个器件。

    此致、

    马克斯·韦博肯

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

    您好、Max:

    太棒了! 我想我快到了。 当我了解有关使用 OTP 解决此问题的更多信息时、我又有一个关于非 OTP 方式的跟进问题。

    我可以通过将其 RST_SHUT 引脚置位为大于1s 来关断 AFE。 (TS2引脚上也可以看到大约5V)。 但是、如何使其恢复正常模式呢? 除了"充电器检测"之外、唯一的方法是让 TS2引脚检测下拉。 可以通过固件来实现吗? 或者它是否需要人机交互(例如将 WAKE 引脚短接至 GND)?

    感谢您的及时、详细的答复!

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

    尊敬的 Kyungjae:

    典型的方法是使用漏极开路 MOSFET 或 BJT 下拉引脚、并通过主机上的 GPIO 引脚驱动栅极/基极。 这样就不需要人工交互、但如果您的板没有、则需要手动操作。 该器件除了唤醒检测外完全处于关闭状态、因此它不会响应来自主机的任何命令。

    此致、

    马克斯·韦博肯