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.

[参考译文] BQ27421-G1:更新电量计配置参数时的校验和

Guru**** 2576215 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1572697/bq27421-g1-checksum-when-updating-the-gauge-configuration-parametes

器件型号:BQ27421-G1


工具/软件:

好的一天、

  简短版本:对配置进行编程时、预期行为是 在成功时向写入校验和的命令获取 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

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

    您好:

    此问题已分配、并将在可能的情况下进行审核。

    谢谢您、
    Alan

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

    请查看此文档: www.ti.com/.../slua801

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

    感谢您的答复。 但是、包含的代码链接仅包含 读取和写入整个 32 字节块的情况。 是否只能更改其值不是默认值的参数(如快速入门指南和技术手册中所示)?  

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

    我这样写是因为它比阅读/修改/写入校验和过程更容易理解。 我建议将整个块读取到本地 32 字节缓冲区中、修改所需的值、然后写入整个 32 字节块。 或者您可以*完全*遵循 TRM ,它也会工作,但它更复杂,容易出现小错误。