ZHCUAN8A April 2016 – November 2022 BQ27220
数据存储器包含初始化、默认值、电池状态、校准、配置和用户信息。大多数数据存储器参数驻留在由 ROM 中的相关参数初始化的易失性 RAM 中。不过,某些数据存储器参数是直接从 ROM 访问的,没有相关的 RAM 副本。可以通过多种不同的方式访问数据存储器,具体取决于电量监测计的工作模式以及访问的数据。
可以通过已在第 5 章“扩展数据命令”中介绍的特定指令方便地访问系统经常读取的常用数据存储器位置。当电量监测计处于 UNSEALED 或 SEALED 模式时,这些命令可用。不过,大多数数据存储器位置只能在 UNSEALED 模式下通过使用评估软件或通过数据存储器块传输进行访问。这些位置应在开发和制造过程中进行优化和/或固定。它们成为黄金映像文件的一部分,然后可以写入多个电池包。这些值在确定后,在终端设备运行期间通常保持不变。
要单独访问数据存储器位置,必须将包含所需数据存储器位置的块传送到命令寄存器位置,在此处它们可以被读取到系统中或直接更改。这是通过发送设置命令 BlockDataControl() (0x61) 以及数据 0x00 来完成的。可以通过 BlockData()(0x40 至 0x5F)直接读取最多 32 个字节的数据,在外部进行更改,然后重新写入 BlockData() 命令空间。或者,如果特定位置的相应偏移索引到 BlockData() 命令空间,则可以读取这些特定位置,对其进行更改并重新写入。最后,一旦整个块的正确校验和被写入 BlockDataChecksum() (0x60),驻留在命令空间中的数据就会被传输到数据存储器中。有时,数据存储器类大于 32 字节块大小。在这种情况下,BlockData() 命令指定所需位置所在的 32 字节块。然后由 0x40 + 偏移量对 32 取模给出正确的命令地址。有关此类数据存储器访问的示例,请参阅Topic Link Label4.3。
读取和写入子类数据是最长 32 字节的块操作。在写入期间,如果数据长度超过最大块大小,则忽略该数据。写入存储器的任何数据都不受电量监测计的限制 - 电量监测计不会拒绝这些值。如果写入不正确的值,则可能会由于固件程序对无效数据的解释而导致不正确的操作。写入的数据不是持久的,因此 POR 可以解决故障。