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.

[参考译文] BQ27Z746-DEVICE-FW:使用 FlashStream 文件对器件固件和闪存数据进行编程

Guru**** 651100 points
Other Parts Discussed in Thread: EV2400, BQSTUDIO, BQ27Z746
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194069/bq27z746-device-fw-using-flashstream-file-to-program-device-fw-and-flash-data

器件型号:BQ27Z746-DEVICE-FW
主题中讨论的其他器件:EV2400BQSTUDIOBQ27Z746

您好!

我们正在尝试在产品中使用此电量监测计组件、我们的部分生产序列要求我们使用正确的化学成分和校准数据覆盖器件的闪存数据。 我们能够使用 bqStudio 以及 EV2400 Communicator 和 EVM 为我们的参数生成"黄金映像"FlashStream 文件。 但是、我们在通过 MCU 执行此 FlashStream 文件中指定的通信时遇到了一些问题。 具体而言、我们已将主要问题缩小到以下事实:在初始指令发送 unseal 和 unseque-full 访问密钥后、后跟进入 ROM 模式的命令、电量监测计不再响应(ACK)任何其他消息、 它们是寻址到 TRM 中指定的 ROM 模式地址(0x16)、还是寻址到 ROM 模式命令(0xAA)之前它响应的原始地址。 通过使用逻辑分析仪跟踪有问题的 i2c 总线、已确认所有初始消息均已正确传输和确认。 我们已确认发送的解封密钥是正确的,并且量表会在密封->未密封-> FUL_ACCESS 序列中的每个步骤之后报告其安全模式的预期变化。 我们还确认、根据 TRM、监测计报告的电池电压大约为3.3V、远高于访问闪存所需的默认最小值。 我们还添加了一些条款、以确保器件在尝试拆封之前处于密封模式、正如我们在其他一些论坛文章中指出的、如果已经不密封、则发送拆封密钥可能是一个问题。

此时、我们感觉我们已经用尽了故障排除和调试选项、并希望获得一些指导。 我们很高兴看到任何可能出错的迹象、或我们如何通过这一障碍的方向。

如果可能相关、我们使用 的 MCU 是 STM32H7、我们将通过 I2C 专门与电量监测计通信。

下面提供了所述通信的屏幕截图:

  这就是成功的 comms pre-ROM 模式命令的外观

  这就是 ROM 模式命令本身的样子

   以下是尝试在 ROM 模式下与器件通信失败的示例

  这是尝试使用原始默认地址(在 ROM 模式命令之后)与器件进行通信的示例、如所示。

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

    只是想补充一点、我们现在还尝试在对 BQ27Z746 EVM 进行编程时倾听 bqStudio 发送的 I2C 通信、并注意到该跟踪与 FlashStream 中概述的协议之间的一些主要差异。 也就是、bqStudio 使用的 ROM 模式命令不同(它将0x0033发送到寄存器地址0x00、而 FlashStream 发送0x0F00到寄存器0x00)、它在向地址0x16发送命令之前只等待大约30ms、而不是在 FlashStream 中指定的全秒。 我们已经尝试修改我们的 FlashStream 文件来仿真 bqStudio 使用的这个序列、但是结果仍然与之前一样、ROM 模式地址0x16上的 NAK 以及之后的默认地址。

    我们还通过在单独的原型上尝试相同的测试来确保这不是某种硬件故障。 我们在那里也有相同的行为。

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

    您是否已尝试对电量监测计进行下电上电?

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

    是的、在每次测试运行之前、我们一直对监测计进行功率循环。

    这实际上是重复我们的测试的必要条件。 每当我们运行测试并最终使监测计处于上述无响应状态时、我们唯一可以使其再次响应以便开始另一项测试的方法是对其进行下电上电。 问题不在于我们使监测计处于无法摆脱的状态、而在于每次运行 FlashStream 解析器时、监测计都会在序列的同一点通过 I2C 停止响应。 即、紧跟在"enter ROM mode"命令之后。

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

    两个命令0x0F00和0x0033完成相同的操作:使监测计进入 ROM 模式。 只有在测量仪表未密封时、它们才会执行。

    您可以通过 bqStudio 和高级通信来验证这一点:

    此示例(我一分钟前在 EVM 上尝试过)显示了器件地址0xAA 上的命令0x0F00 (大端字节序)。 下一次从0xAA NAK 读取(因为监测计切换到 ROM 模式)。 我添加了这个值来显示它在0xAA 上停止响应。

    由于监测计现在处于 ROM 模式、因此从0x16读取的下一个数据将返回数据。

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

    感谢您确认其工作原理! 最好知道这两个命令都是有效的。

    您在这里描述的行为与我们预期的行为一致。 我们的问题是监测计在两个地址(0x16和0xAA)上都是 NACKing、并在下电上电之前继续这样做。 我已确认、在尝试进入 ROM 模式之前、通过读取 OperationStatus A 和 B 寄存器并确认在发送两个解除密封键后 SEC1、SEC0从(1、1)变为(1、0)、我们已正确地解除了监测计的密封。 然后在发送两个完全访问密钥后再次发送到(0、1)。 此检查与运行 FlashStream 文件的尝试分开执行、作为一个故障排除实验、用于解决我们的问题是否是由于无法解封导致的。 它们看起来不是这样的。

    我发布的第一个屏幕截图实际上是在序列开始时成功写入第一个 unseal 密钥的轨迹。 第二行至最后一行中的两个屏幕截图是在地址0x16未密封并命令进入 ROM 模式后尝试与监测计通信。 一个是在(30ish ms)之后很短的时间内完成的、另一个来自不同的运行、在该运行中、我们有更长的延迟(1个全秒)。 最后一个屏幕截图显示监测计不仅未能进入 ROM 模式、还会停止对地址0xAA 的响应。  

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

    请从我的屏幕截图中运行 bqStudio 命令序列、并与 Saleae 一起查看是否存在差异。

    否则、我认为我们无法通过 E2E 对此进行调试。 它可以与 TI 工具配合使用、因此有一个用于比较的参考。 监测计进入 ROM 模式后、它将在0x16 (0x0B 7位)上开始响应。 没有已知状态、它根本不响应(除非它已关闭)。

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

    当然可以! 我很快就会发布结果。

    出于好奇、您能不能考虑在我们尝试进入 ROM 模式时监测计可能会自行关闭的任何原因? 我们可以发现的唯一注意事项是电池电压必须高于设定的最小值、默认值为2100mV。 这就是为什么我们在开始序列之前使用 Voltage()(0x08/0x09)来查询测量的电池电压,并确认它高于该电压。 您是否知道其他任何可能影响器件进入 ROM 模式的条件?

    此外、是否有可能测量出某些参数超出可接受范围并阻止我们? 例如、我们知道、我们需要更改 CC 增益乘法器(这是我们在此处尝试刷写的内容的一部分)。 在更改之前、监测计很可能会感应到过流状态。 您是否知道这是否会阻止某些功能?

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

    请检查您的序列是否以某种方式触发自动关断。  https://www.ti.com/lit/ug/sluuca6/sluuca6.pdf、 6.6.

    这通常与进入 ROM 模式无关。

    阻止切换到 ROM 模式的唯一门控项目是仪表是否密封。 其他参数、如 CC 增益、不会影响它。 但也有一些参数可以控制关断、这可能会产生干扰。