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.

[参考译文] 当电池组正在充电时、为什么0x54寄存器位1 (DSG)未设置为1? (bq40z50-R1)

Guru**** 2546590 points
Other Parts Discussed in Thread: BQ40Z50-R1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/742991/why-0x54-register-bit1-dsg-didn-t-set-to-1-when-the-pack-was-charging-bq40z50-r1

主题中讨论的其他器件:BQ40Z50-R1

大家好、所有 TI 专家、

 我的电池组使用了 Bq40z50-R1、我有两个问题要问。

     当电池组正在充电时、我们通过 i2c 总线接口读取0x54register 为8704。 因此它的实际值是0x8704、因为它是 小端字节序。  为什么 bit1 (DSG) 没有 设置为1?

 2.我能否读取 0x54寄存器使用与0x09 (SBS cmd) 寄存器( 电压寄存器)或0x0a 寄存器(电流寄存器)相同的 SBS cmd?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.除非我有日志来了解 DSG FET 为何会关断、否则我无法说。
    2.你问了同样的问题。 我之前回答说0x54是一个块命令、您可以从0x44读取它。 0x09和0x0a 为 SBS 命令、可通过0x00获取。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    从 0x54读取的值可能不正确、因为 MCU 读取它只是使用 SBS 命令。

    您是不是说、所有 SBS 命令 、如0x09 (电压)和0x0a (电流)、都应该通过0x00进行访问、如下所示?

     我无法通过 SMBus 读取命令=0x09读取0x09,这对吗?

    3.访问0x06 (0x06 AtRateTimeToEmpty())寄存器和0x0006 (ManufacturerAccess() 0x0006化学 ID)寄存器之间有何区别?

      以及  访问0x54 (0x54 OperationStatus、TRM 13.46) 和0x0054 (ManufacturerAccess () 0x0054 OperationStatus、TRM 13.1.40)之间的区别是什么?

    我被吓到了~!  因此、我希望您能帮助详细解释这些类型的寄存器在访问方法上的差异。

    非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要了解这一点、您需要了解一些有关 SBS 协议的信息。

    SBS 表示智能电池系统协议。 它定义了所有监测计制造商需要以特定方式发送的一些命令、并在符合规范的所有器件之间共享这些命令。

    这就是您从任何制造商处购买的任何监测计的 VIT、rem CAP、FCC 等 SBS 命令都是标准的原因。

    除此之外、TI 和其他制造商还可以选择添加其他相关命令。 这些参数超出 SBS 规格、可通过类似或不同的方式进行访问。 chem ID 等的命令不在 SBS 规格中。 这就是它们与 AtRate 等 SBS 命令不同的原因

    在列出 AltMf 和 ManufAccess 命令的 bq40z50-R1 TRM 表中、我们指定返回数据的命令是正常 SBS 命令还是块命令。 如果将该命令指定为块命令、则需要以小端字节序将其发送到0x44并从0x23读回数据。

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

    您好、Batt、非常感谢您的详细解释。

    我从您的解释中了解以下内容。有两种类型的访问命令,一种是标准 SBS 命令,另一 种是制造商命令。制造商命令也有两种类型的访问命令,一种是通过 ManufacturerAccess()访问的,另一种是 ManufacturerBlockAccess()。

    ManufacturerAccess 访问步骤如下所示:


    ManufacturerBlockAccess 访问步骤如下:

    我是否可以正确理解上述内容? 如果不正确、请帮助我更正。 非常感谢!

    其他要问的问题:

    如何访问标准 SBS 命令、例如读取0x09寄存器?它只需要读取命令0x09、不需要通过0x00或0x44、那么该值将被缩减吗?

    为什么在 TRM 13.1.40中描述了 ManufacturerAccess() 0x0054 OperationStatus,但在 13.46中描述了0x54 OperationStatus?所以我会错误地认为这两种方法都可以访问 OperationStatus 寄存 器。实际上,我们只能通过 ManufacturerAccess 或 ManufacturerBlockAccess 访问它,而不能通过 SBS 命令作为0x09 (电压寄存器)访问它。 我是对的吗?

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ManufAccess 使器件符合 SBS 规范。 TRM 中清楚地提到、为了与旧版 bq30z 器件兼容、我们还提供了小端访问方式。 这就是为什么您有2种不同的方法来获得相同的数据。

    1.0x09是一个读取字 SBS 命令。 您可以直接从寄存器读取。
    2.是的,ManufAccess 命令与 SBS 命令不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ManufAccess 使器件符合 SBS 规范。 TRM 中清楚地提到、为了与旧版 bq30z 器件兼容、我们还提供了小端访问方式。 这就是为什么您有2种不同的方法来获得相同的数据。

     1. 此处 提到的两种不同方法是 ManufacturerAccess 和 ManufacturerBlockAccess?

     2. 为什么在 TRM 13.1.40中描述 ManufacturerAccess() 0x0054 OperationStatus,但在 13.46中描述了0x54 OperationStatus?所以我会错误地认为这两种方法都可以访问 OperationStatus 寄存器。

     

    另一个问题:

    从 BQ40Z50-R1 TRM 13.46中、 0x54 OperationStatus0 支持 SBS Cmd、我能否 直接从0x54 寄存器读取0x09 (电压)?


    实际上 ,我可以直接从寄存器(与0x09一样)读取0x54操作状态寄存器,在我们的器件上读取的值是0x0187,但我不确定它是否正确。  
    我能否直接从寄存器读取它、我们不需要通过 ManufacturerAccess 或 ManufacturerBlockAccess 进行访问?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果验证返回的数据与 ManufacturerAccess 中的数据相同、则可以执行此操作。 但是、0x09与0x54不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能帮我确认是否可以直接读取0x54寄存器吗? 谢谢!

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