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 可以解決故障。