主题中讨论的其他器件: bq20z80-V110、 bq20z80、 BQEVSW
问题
我在德克萨斯州休斯顿为西南电子公司工作的公司购买了 Aardvark I2C/SPI 主机适配器(PN TP240141)。 我的任务是连接 Aardvark I2C 适配器和德州仪器(TI)符合 BS 标准的电量监测计 IC bq20z80A-V110。 虽然到目前我已经能够与芯片进行无故障的通信、但我在使用扩展 SBS 命令时遇到了障碍。 我正在使用 Total Phase 的 LabVIEW 驱动程序、并根据这些驱动程序开发我自己的代码。 在 TI 为 bq20z80A 提供的技术参考手册中(文档编号 SLUU288)、我使用附录 A 至 C 中的 SBS 命令来读取和写入 IC。 我从附录 A 中的"制造商访问"部分开始、在读取这些寄存器地址时没有遇到太多困难。
但是、正如我现在在附录 B 中所说、我在使用扩展 SBS 命令时遇到了困难。
当前状态
下面是屏幕截图、其中包含我的代码的一般说明、以及我迄今为止在与 bq20z80A-V110建立握手方面所取得的成就。
为了说明我当前的困境、我在使用时唯一没有遇到问题的命令是扩展 SBS 命令、无论芯片是否被密封和完全访问被禁用、这些命令都是可用的。 我所要做的就是写入 Manufacturer Access、将高字节和低字节发送到 IC、然后从 Manufacturer Access 寄存器中读取。 问题在于,即使我已解封芯片并启用了完全访问,但在 IC 密封和完全访问被禁用时,我也无法访问任何不可用的扩展 SBS 命令。
下图是我能够使用的所有扩展 SBS 命令的列表、无论 IC 是密封的还是非密封的、这些命令都是可用的。
图1–我可以使用的扩展 SBS 命令、因为它们可用
我能够使用 TI 软件包 bq 电量监测计评估软件来验证 IC 的状态、请参阅以下屏幕截图:
图2–bq20z80-V110 SBS 状态的屏幕截图
如上图所示、操作状态下的 FAS 和 SS 标志呈绿色、表示 IC 处于非密封状态且处于完全访问模式。
在我的 LabVIEW 代码中、我通过编写 VI 来检查我是否获得了类似的数据、我在该 VI 中向制造商访问寄存器写入了数据。 根据之前从 TI 软件获得的信息、我想要检查的三个寄存器如下:
运行状态–8045十六进制值
充电状态–0200十六进制值
FET 控制–0006十六进制值
首先、这里是我的 LabVIEW 代码和从 bq20z80芯片的写入和读取中获取的数据。 我用后续的高字节和低字节写入了制造商访问地址、以查看运行状态。 如您所见、LabVIEW 程序中的返回值与通过 TI 评估软件获取的返回值相同、请参阅图3。
图3– 通过 LabVIEW 代码推导出的运行状态值
第二、我检查了充电状态作为另一个测试用例、以验证 LabVIEW 代码是否正确、请参阅图4。
图4–源自 LabVIEW 代码的充电状态值
同样、该值与 TI 评估软件获得的值相同。
现在,由于前面两个示例是在 IC 密封或未密封的情况下可用的,我决定检查扩展 SBS 命令,如果芯片是密封的并且禁用了完全访问功能,则该命令不可用,以查看结果。 此外、我使用了一条命令、该命令具有可通过 TI 评估软件验证的证据。 FET 控制状态字为0006。
图5– 通过 LabVIEW 代码实现的 FET 控制值
因此、如上所示、无法通过我的软件读取 FET 控制寄存器。 软件从相同的制造商地址读取,但没有使用 FET 控制状态字更新该值。 这代表了所有其他扩展 SBS 命令的结果,这些命令也通过上述 GUI 进行了检查,但当芯片完全访问时,这些命令不可用。
结论
我想得到一些指示、说明我必须使用什么写入和读取序列才能在我的 LabVIEW 软件中使用以下 SBS 命令:
AFEData (0x45)
FETControl (0x46)
StateOfHealth (0x4f)
非密封键(0x60)
FullAccessKey (0x61)
PFKey (0x62)
AuthenKey3 (0x63)
AuthenKey2 (0x64)
AuthenKey1 (0x65)
AuthenKey0 (0x66)
制造商信息(0x70)
感应电阻(0x71)
具体而言、我希望能够用红色书写上述命令并读取地址、因为它们是最重要的。