SLUUB65B May 2015 – December 2022
The fuel gauge implements a key-access scheme to transition between SEALED, UNSEALED, and FULL ACCESS modes. Each transition requires that a unique set of two keys be sent to the fuel gauge via the Control() command. The keys must be sent consecutively, with no other data being written to the Control() register in between. To avoid conflict, the keys must be different from the codes presented in the CNTL DATA column of Table 16-2, Control() Subcommands.
When in SEALED mode the CONTROL_STATUS [SS] bit is set, but when the Unseal Keys are correctly received by the fuel gauge, the [SS] bit is cleared. When the Full Access Keys are correctly received, the CONTROL_STATUS [FAS] bit is cleared.
Both Unseal Key and Full Access Key have two words and are stored in data flash. The first word is Key 0 and the second word is Key 1. The order of the keys sent to fuel gauge is Key 1 followed by Key 0. The order of the bytes for each key entered through the Control() command is the reverse of what is read from the part.
Example:
If the Unseal Key = 0x56781234
key 1 = 0x1234
key 2 is 0x5678
Control() must supply 0x3412 and 0x7856 to unseal the part. The Unseal Key and the Full Access Key can only be updated when in FULL ACCESS mode.
Every time a SEAL command is sent, a control flag location inside the gauge's information flash is changed from the default (0xFFFF) value. This location is checked for the default value every time the gauge powers up.
If the gauge is sealed, it will always return to the SEALED state after POR even if the gauge is unsealed prior to a POR. If the SREC of a sealed gauge is extracted and then programmed it into another gauge, the other gauge will also power up in the SEALED state. The only way to permanently restore the UNSEALED state is to reflash the gauge with an unsealed SREC.
Figure 17-1 shows the interactions between the various modes inside the gauge and the specific value of the CONTROL_STATUS[SS] and CONTROL_STATUS[FAS] bits.