工具/软件:
好的一天、
简短版本:对配置进行编程时、预期行为是 在成功时向写入校验和的命令获取 ACK、在校验和不匹配时获取 NACK、这种行为未来是否会得到保证?
长版本:我 当前正在编写代码、以便使用 BQ27421 来替换 之前使用的 IC、该器件即将过时。 我目前正在研究芯片的安装部分、特别是我试图设置电池的参数、我将 使用 SLUUAH7(快速入门指南)中的流程图作为参考、并使用 SLUUAC5C(技术手册)仔细检查信息。 我当前的代码流(伪代码,插入代码无法正常工作,因此以纯文本形式添加)是:
setupBQ27421 (){
1 — 等待设置 INITCOMP 位
2 — 解封 (2 个控制子命令 0x8000)
3 — 发送 CFG 更新命令 (CONTROL SUB cmd 0x0013) 并等待设置 CFGUPDATE 位
4 — 将 0x00 写入块数据控制(命令 0x61)
5 — 将 0x52 写入数据类 (cmd 0x3E)
6 — 将 0x00 写入数据块 (cmd 0x3F)
7 — 读取和打印当前内容(命令 0x40...0x5F)
8 — 读取当前校验和 (cmd 0x60)
9 — 写入更新的值(命令 0x40...0x5F)、同时跟踪预期的校验和
10 — 写入预期校验和 (cmd 0x60)
11 — 将 0x52 写入数据类 (cmd 0x3E)
12 — 读取校验和 (cmd 0x60)
13 — 发送软复位(控制子命令 0x0042)并等待 CFGUPDMODE 位清零
}
我对第 12 步表示怀疑。 根据快速入门指南中的流程图、我应该能够读回我刚刚编写的预期值、但是我读取的是原始校验和。 除此之外、该 过程似乎可以成功完成、就像我再次调用函数一样、我将在步骤 7 中看到更新的值以及我在前面的步骤 8 中计算出的预期校验和。
作为检查、我尝试在步骤 10 中写入无效的校验和。 这样、我看到 IC 将以 NACK 的方式回复写入、并且过程将失败(第二个调用显示未触及原始值的值和校验和) 。
我看到的结果与快速入门指南流程图中所示的过程(放入“正确完成 RAM 更新的步骤“框中)形成了对比、其中显示校验和的读回应该 与刚刚写入的值相同。 我也找不到写一个无效的校验和会给手册的任何部分否定的指示。 因此、我想仔细检查我在预期行为中看到的内容、如果我使用写入的 ACK/NACK 来确认正确的过程、该行为在将来不会改变。 感谢您的支持
Alessandro Marzocchi