Other Parts Discussed in Thread: BQ27427, BQSTUDIO, BQ27427EVM
器件型号: BQ27427
主题中讨论的其他器件: BQSTUDIO、
您好、
我正在定制电路板上使用 BQ27427、并且我正在尝试对进行编程 Golden Image 由 bqStudio 从我自己的微控制器 (ESP32、使用 I²C μ s) 加载到电量计中。
我正在使用 确切文件 .gm.fs由 bqStudio 生成(无需手动编辑)、我在 MCU 端编写了一个执行命令的简单“闪存流解释器“:
-
W:→I²C 写入电量计 -
C:→I²C 读取+比较 -
X:→μ s 延迟(以 ms 为单位)
顺序为:
-
创建最小驱动程序实例(只需读取 DEVICE_TYPE 和 FW_VERSION,无需额外配置)。
-
稍等。
-
发送 UNSEAL 命令。
-
.gm.fs逐行应用内容行。 -
观察结果、然后转储数据存储器以进行验证。
中的示例片段.gm.fs(有问题的块之一):
W:AA 3E 50 00
W:AA 40 01 F4 00 1E C8 14 08 00 3C 0E 10 00 0A 46 05 14 05 0F 03 20 7F FF 00 F0 46 50 18 01 90 00 64 19
W:AA 60 E4
X: 10
W:AA 3E 50 00
C: AA 60 E4
从 MCU 运行该闪存流时、会得到如下日志:
Applying flash stream (.gm.fs) of 2752 bytes
Compare mismatch at byte 0: expected 0xE4, got 0xF4 (reg=0x60)
Compare mismatch at byte 0: expected 0xDB, got 0x5C (reg=0x60)
Compare mismatch at byte 0: expected 0x91, got 0xCD (reg=0x60)
Compare mismatch at byte 0: expected 0xF3, got 0x9C (reg=0x60)
Compare mismatch at byte 0: expected 0xFF, got 0x00 (reg=0x60)
Flash stream applied successfully (when I ignore the compare errors)
所以 寄存器 0x60 处的校验和 .gm.fs当我重新读取脚本时、并不总是与脚本中的值匹配、尽管:
-
W:在 I²C 级别正确确认写入 ()。 -
仪表保持响应。
-
当 I dump 相关的数据存储器子类(STATE、Current Thresholds、Ra 等)时、值看起来像 与黄金映像保持一致 以及 bqStudio 所示。
为了进行交叉检查、我执行了以下操作:
-
我拿起了 也一样
.gm.fs并使用 bqStudio 对 A 进行编程 BQ27427EVM 。 -
在这种情况下、bqStudio 报告 没问题 、并且设备已成功编程。
所以现在我有这样一种情况:
-
从功能上讲、我电路板上的电量监测计似乎配置正确 (Design Capacity、Terminate Voltage、Thresholds、Qmax、Ra… 一切正常)。
-
但我自己的解释器看到一些
C: AA 60 <checksum>比较在几个块上失败、因为从 0x60 读取的校验和与存储在中的值不匹配.gm.fs。
我的问题是:
-
是否符合预期 由于电量监测计在内部更新某些字段(Impedance Track、STATUS 等)、0x60 处的某些 BlockDataCheckSum 值会
C:.gm.fs在写入块和校验和后发生变化、从而使中的行不再在“实时“器件上严格有效? -
公式 生产流程 我们要从 MCU(而不是从 bqStudio)对黄金映像进行编程的情形:
-
是否可以接受/建议使用 忽略这些
C:行 在中.gm.fs(或将它们视为非阻塞警告)、只要数据存储器内容随后与预期配置匹配? -
或者、是否有推荐的序列(例如特定复位,禁用或状态条件)来确保闪存流可以重放、并且所有 0x60 处的校验和比较都保持有效、就像在通过 bqStudio 编程的全新 EVM 上一样?
-
如果需要、我可以分享:
-
完整
.gm.fs文件、 -
我的 μ I²C 写入/读取序列更详细、
-
和编程后的数据存储器转储。
我只是想确保我没有缺少编程流程中所需的步骤、并确认在应用来自主机 MCU 的闪存流时、0x60 处的这些校验和不匹配是否是预期行为。
提前非常感谢您的帮助、
埃尔维斯公司