ZHCUAN8A April 2016 – November 2022 BQ27220
數(shù)據(jù)存儲器包含初始化、默認值、電池狀態(tài)、校準、配置和用戶信息。大多數(shù)數(shù)據(jù)存儲器參數(shù)駐留在由 ROM 中的相關參數(shù)初始化的易失性 RAM 中。不過,某些數(shù)據(jù)存儲器參數(shù)是直接從 ROM 訪問的,沒有相關的 RAM 副本??梢酝ㄟ^多種不同的方式訪問數(shù)據(jù)存儲器,具體取決于電量監(jiān)測計的工作模式以及訪問的數(shù)據(jù)。
可以通過已在第 5 章“擴展數(shù)據(jù)命令”中介紹的特定指令方便地訪問系統(tǒng)經(jīng)常讀取的常用數(shù)據(jù)存儲器位置。當電量監(jiān)測計處于 UNSEALED 或 SEALED 模式時,這些命令可用。不過,大多數(shù)數(shù)據(jù)存儲器位置只能在 UNSEALED 模式下通過使用評估軟件或通過數(shù)據(jù)存儲器塊傳輸進行訪問。這些位置應在開發(fā)和制造過程中進行優(yōu)化和/或固定。它們成為黃金映像文件的一部分,然后可以寫入多個電池包。這些值在確定后,在終端設備運行期間通常保持不變。
要單獨訪問數(shù)據(jù)存儲器位置,必須將包含所需數(shù)據(jù)存儲器位置的塊傳送到命令寄存器位置,在此處它們可以被讀取到系統(tǒng)中或直接更改。這是通過發(fā)送設置命令 BlockDataControl() (0x61) 以及數(shù)據(jù) 0x00 來完成的。可以通過 BlockData()(0x40 至 0x5F)直接讀取最多 32 個字節(jié)的數(shù)據(jù),在外部進行更改,然后重新寫入 BlockData() 命令空間?;蛘撸绻囟ㄎ恢玫南鄳扑饕?BlockData() 命令空間,則可以讀取這些特定位置,對其進行更改并重新寫入。最后,一旦整個塊的正確校驗和被寫入 BlockDataChecksum() (0x60),駐留在命令空間中的數(shù)據(jù)就會被傳輸?shù)綌?shù)據(jù)存儲器中。有時,數(shù)據(jù)存儲器類大于 32 字節(jié)塊大小。在這種情況下,BlockData() 命令指定所需位置所在的 32 字節(jié)塊。然后由 0x40 + 偏移量對 32 取模給出正確的命令地址。有關此類數(shù)據(jù)存儲器訪問的示例,請參閱Topic Link Label4.3。
讀取和寫入子類數(shù)據(jù)是最長 32 字節(jié)的塊操作。在寫入期間,如果數(shù)據(jù)長度超過最大塊大小,則忽略該數(shù)據(jù)。寫入存儲器的任何數(shù)據(jù)都不受電量監(jiān)測計的限制 - 電量監(jiān)測計不會拒絕這些值。如果寫入不正確的值,則可能會由于固件程序對無效數(shù)據(jù)的解釋而導致不正確的操作。寫入的數(shù)據(jù)不是持久的,因此 POR 可以解決故障。