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.

[参考译文] BQ40Z50-R2:与 ManufacturerAccess 寄存器(0x00)相关的意外行为

Guru**** 2578945 points
Other Parts Discussed in Thread: BQ40Z50, BQSTUDIO, EV2400, BQ35100

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1414906/bq40z50-r2-unexpected-behavior-associated-with-manufactureraccess-register-0x00

器件型号:BQ40Z50-R2
主题中讨论的其他器件:BQSTUDIOEV2400BQ35100、BQ40Z50

工具与软件:

嗨、大家好—我在使用 ManufacturerAccess 寄存器(0x00)时遇到一些意外行为。  ManufacturerBlockAccess 寄存器(0x44)正常运行。

我尝试了文件 SLUUBK0B 第91页的最后一个例子来读化学 ID。 我按照示例所示以大端字节序格式发送了命令0x0006、但从 ManufacturerData 寄存器(0x23)读取的后续块返回32字节的垃圾:

 如果   使用  ManufacturerBlockAccess 寄存器(0x44)发送命令、我不会看到这种行为、在这种情况下示例将格式指定为小端字节序:

然后、我  改用小端字节序格式的 ManufacturerAccess 寄存器(0x00)、并且响应符合我的预期:

稍后、我注意到对 ManufacturerAccess 寄存器(0x00)的后续读取可能返回0xFFA5、具体取决于发送的上一条命令。 使用  小端字节序格式的 ManufacturerAccess 寄存器(0x00)、器件返回预期的 固件版本(命令 0x0002):

下次  读取 ManufacturerAccess 寄存器(0x00)时、但该寄存器返回 0xFFA5:

第二次读取会按预期返回操作状态字段的下半部分(在本例中为0x0187):

 如果首先使用  ManufacturerBlockAccess 寄存器(0x44)读取固件版本、我不会出现此行为、如果首先使用任一 寄存器(0x00或0x44)读取 chem ID、我也不会看到此行为。 在所有这些情况下、两次后续读取  ManufacturerAccess 寄存器(0x00) 都会 按预期返回 OPERATION 状态字段的下半部分。

仔细查看一些其他线程、似乎0xFFA5表示较旧器件上的某种响应。 有趣的是、 我始终在 BQStudio 中看到这个字符串的变体:

我的问题如下:

[1] 您能否确认 文档 SLUUBK0B 的第91页是否错误、以及对  ManufacturerAccess 寄存器(0x00)的访问确实是小端字节序?

[2]  在 读取  ManufacturerAccess 寄存器(0x00)时是否存在任何限制或特殊行为?

提前感谢您的帮助-如果我可以提供任何其他信息或澄清我的任何问题、请告诉我。

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

    尊敬的 Jeff:

    您能否使用 bqStudio 上的自动刷新功能在关闭状态下尝试进行此测试? 由于此过程会使用相同的寄存器不断从器件读取数据、因此可能会出现返回数据差异的原因。

    [报价 userid="595304" url="~/support/power-management-group/power-management/f/power-management-forum/1414906/bq40z50-r2-unexpected-behavior-associated-with-manufactureraccess-register-0x00 "]

    [1] 您能否确认 文档 SLUUBK0B 的第91页是否错误、以及对  ManufacturerAccess 寄存器(0x00)的访问确实是小端字节序?

    [2]  在 读取  ManufacturerAccess 寄存器(0x00)时是否存在任何限制或特殊行为?

    [报价]

    我认为 ManufacturerAccess 寄存器命令应采用大端字节序、但请允许我们确认这一点。

    此致、

    Anthony

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

    您好、Anthony—感谢您的及时支持。

    简单说明一下、上面显示的所有数据和观察结果 都是使用我们自己的 MCU 在我们自己的硬件上捕获的;在这些情况下不使用 BQStudio。 如果我误解了您的问题、请告诉我。

    关于  ManufacturerAccess 寄存器(0x00)的字节序、我确认我们自己的 MCU 和 BQStudio 之间的行为是相同的。 我将命令0x0006写入  ManufacturerAccess 寄存器(0x00)、并按预期返回 CHEM ID:

    EV2400似乎以小端字节序格式发送命令0x0006:

    这与我看到的行为与 我们自己的 MCU 相匹配-仅当命令  以小端字节序格式写入 ManufacturerAccess 寄存器(0x00)时才返回正确的数据。 如果我能提供任何其他信息、请告知我。

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

    尊敬的 Jeff:

    [报价 userid="595304" url="~/support/power-management-group/power-management/f/power-management-forum/1414906/bq40z50-r2-unexpected-behavior-associated-with-manufactureraccess-register-0x00/5424487 #5424487"]仅为了澄清、上面显示的所有数据和观察结果都 是使用我们自己的 MCU 在我们自己的硬件上采集的;在这些情况下、BQStudio 未使用。 如果我误解了您的问题、请告诉我。

    明白了、感谢您澄清一下。 关于0xFFA5问题、您能否确认哪个寄存器读取导致了该问题?

    这与 我们自己 MCU 的行为相符-只有当命令  以小端字节序格式写入 ManufacturerAccess 寄存器(0x00)时才会返回正确的数据。 如果我可以提供任何其他信息、请告诉我。

    我将联系我们的固件团队来确认这一点。 我会在收到时提供更新。

    此致、

    Anthony

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

    您好、Anthony—感谢您的更新。 我没有检查很多命令、但可以确认写入  FirmwareVersion (命令 0x0002)始终会导致对  ManufacturerAccess 寄存器(0x00)的第一次读取返回 0xFFA5、而写入 ChemID (命令 0x0006)绝不会引发该行为。

    仔细查看其他电量计(例如 BQ35100)的技术参考手册、我们似乎可能会 收到针对  DeviceType (0x0001)或  FirmwareVersion (0x0002)的0xFFA5。 我松散地 怀疑 BQ40Z50实现了类似的机制来保持与其他电量计的向后兼容性、并且 该行为没有记录。

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

    尊敬的 Jeff:

    我们的固件团队确认您之前使用的小端字节序格式对于 ManufacturerAccess ()是正确的。 我将联系我们的团队、以便在我们的文档中更改这一内容。 很抱歉混淆了。

    关于 FirmwareVersion 给出0xFFA5、是否已尝试使用 ManufacturerBlockAccess 进行读取? 我认为该寄存器应该输出更多数据:

    此致、

    Anthony

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

    您好、Anthony—感谢您的最新消息;我们已正式记录在案。

    这只是为了澄清— ManufacturerBlockAccess 寄存器(0x44)绝不返回 0xFFA5。  ManufacturerBlockAccess 寄存器(0x44)和  ManufacturerData 寄存器(0x23)始终 根据您所示的表返回正确的固件版本。  相反、它是 ManufacturerAccess 寄存器(0x00)、其返回 0xFFA5、直到第二次读取它。

    为了提供一些额外的上下文-我们的 MCU 轮询  ManufacturerAccess 寄存器(0x00)以读取 运行状态字段的下半部分并查询电量计的状态。 然而、 ManufacturerAccess 寄存器(0x00)可能 根据发送的最后一个命令临时返回0xFFA5;因此这个唯一值被我们的 MCU 误解为已设置多个状态位(例如 SS = 1)。

    由于技术参考手册没有明确定义读取  ManufacturerAccess 寄存器(0x00)的行为、因此我松散地怀疑我们的 MCU 读取 操作状态字段的下半部分会更安全、方法是首先发送命令0x0000  (如第14.1.1节所示)、然后使用 ManufacturerBlockAccess 寄存器(0x44) 或 ManufacturerData 寄存器(0x23)  来检索响应。

    但是、此解决方案 需要发送额外的命令、因此比我们现有的实现略慢、如果    可以 阐明对 ManufacturerAccess 寄存器(0x00)的读取行为、我们更愿意保留该实现。

    再次感谢您的持续支持- 如果我可以提供任何其他信息、请告知我。

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

    大家好、 Anthony、   我这边有几条更新消息:

    • 根据我所知、  DeviceType (0x0001) 和  FirmwareVersion (0x0002)命令是 使  ManufacturerAccess 寄存器(0x00)返回 0xFFA5的唯一命令;此行为 似乎与  BQ35100技术参考手册中的第11.2节相同。
    •   如果  使用 ManufacturerBlockAccess 寄存器(0x44)发送命令0x0001或0x0002、则 ManufacturerAccess 寄存器(0x00)从不返回0xFFA5、仅 针对 ManufacturerAccess 寄存器(0x00)发送命令。

    请注意、   BQ40Z50的第14.1.1节中所述的命令0x0000实际上似乎不起作用;此命令返回对  ManufacturerInfo 命令(0x0070)的响应、这在第14.33节中宽松暗示:

    我已将 MCU 更新为在发送 命令 0x0001或 0x0002时使用 ManufacturerBlockAccess 寄存器(0x44 )而   不是 ManufacturerAccess 寄存器(0x00)、因此从 ManufacturerAccess 寄存器(0x00)读取0xFFA5 的问题绝不会发生;它始终根据预期返回运行状态字段的下半部分。

    这似乎工作可靠、但表明技术参考手册缺少一些信息。 如果您可以确认 BQ40Z50 从  ManufacturerAccess 寄存器(0x00)角度模拟 BQ35100、我认为我们可以在此期间关闭该线程。

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

    尊敬的 Jeff:

    [报价 userid="595304" url="~/support/power-management-group/power-management/f/power-management-forum/1414906/bq40z50-r2-unexpected-behavior-associated-with-manufactureraccess-register-0x00/5429938 #5429938"]为了提供一些附加上下文-我们的 MCU 轮询  ManufacturerAccess 寄存器(0x00)以读取 运行状态字段的下半部分并查询电量计的状态。 不过、 ManufacturerAccess 寄存器(0x00)可能 根据最后发送的命令临时返回0xFFA5;因此该唯一值被我们的 MCU 误解为已设置多个状态位(例如 SS = 1)。

    是否已对 ManufacturerAccess 寄存器尝试使用0x0054 Operation Status 寄存器? 这将返回操作状态的完整32位读取、而不是低16位、但可能会有用。

    [报价 userid="595304" url="~/support/power-management-group/power-management/f/power-management-forum/1414906/bq40z50-r2-unexpected-behavior-associated-with-manufactureraccess-register-0x00/5431149 #5431149"]

    请注意、   BQ40Z50的第14.1.1节中所述的命令0x0000实际上似乎不起作用;此命令返回对  ManufacturerInfo 命令(0x0070)的响应、这在第14.33节中宽松暗示:

    我已将 MCU 更新为在发送 命令 0x0001或 0x0002时使用 ManufacturerBlockAccess 寄存器(0x44 )而   不是 ManufacturerAccess 寄存器(0x00)、因此从 ManufacturerAccess 寄存器(0x00)读取0xFFA5 的问题绝不会发生;它始终根据预期返回运行状态字段的下半部分。

    这似乎工作可靠、但表明技术参考手册缺少一些信息。 如果您可以确认 BQ40Z50 从  ManufacturerAccess 寄存器(0x00)角度模拟 BQ35100、我认为我们可以在此期间关闭该线程。

    [报价]

    关于 bq35100和 bq40z50 ManufacturerAccess 寄存器之间的相似之处、让我联系我们的固件团队来确认这一点。

    此致、

    Anthony

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

    您好、Anthony—感谢您的更新。  我可以确认命令 0x0054的所有指令均可按预期运行。 如果读取地址0x00的字由于某种原因而被发现不可靠、这个想法也同样适用。

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

    尊敬的 Jeff:

    以下是我们固件团队针对0xFFA5的响应:

    " 0xFFa5表示客户尝试通过字命令(0x00)读取响应、但 bq40z50通过命令块0x44针对命令(0x00)返回响应。 来自0x00的 Bq40z50字命令响应为 OperationStatus ()、或者对于 DeviceType/FirmwareVersion 0xFFa5、用于指示移至命令0x44以读取响应。 他们必须准备好阻止命令0x44以在40z50中获取 DeviceType/FirmwareVersion 数据。 请参阅 TRM。 bq35100和 bq40z50器件可能并不完全相似。"

    此致、

    Anthony

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

    您好、Anthony—感谢您的更新! 这与我们观察到的行为相符、并且完全符合我们的目的。

    再次感谢您选中所有这些问题、我们现在可以关闭此主题。 祝您周末愉快!