Access Modes
www.ti.com
42
SLUUBH1C–August 2016–Revised March 2018
Submit Documentation Feedback
Copyright © 2016–2018, Texas Instruments Incorporated
Data Flash
NOTE: Care should be taken to avoid writing to private data flash locations when performing block
writes in FULL ACCESS mode using the procedure outlined in Accessing Data Flash.
Table 12-1. Data Flash Access
SECURITY MODE DF—PUBLIC ACCESS DF—PRIVATE ACCESS
BOOTROM N/A N/A
FULL ACCESS R/W R/W
UNSEALED R/W R/W
SEALED R N/A
Although FULL ACCESS and UNSEALED modes appear identical, FULL ACCESS mode enables the
device to directly transition to BOOTROM mode and also write access keys. UNSEALED mode does not
have these abilities.
12.2.1 Sealing/Unsealing Data Flash Access
The bq35100 device 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 device via the
Control() command (these keys are unrelated to the keys used for SHA-1/HMAC authentication). The keys
must be sent consecutively, with no other data being written to the Control() register in between.
NOTE: To avoid a conflict, the keys must be different from the codes presented in the CNTL DATA
column of Table 11-2 subcommands.
When in SEALED mode, the [SEC1,0] bits of ControlStatus() are set, but when the Unseal Keys are
correctly received by the device, it enters UNSEALED mode and [SEC1,0] are set to 1,0. When the full
access keys are correctly received, the device enters FULL ACCESS mode and [SEC1,0] are set to 0,1.
Both sets of keys for each level are 2 bytes each in length and are stored in data flash. The Unseal Key
(stored at Unseal Key 0 and Unseal Key 1) and the FULL ACCESS key (stored at Full Access Key 0 and
Full Access Key 1) can only be updated when in FULL ACCESS mode. The order of the bytes entered
through the Control() command is the reverse of what is read from the device. For example, if the 1st and
2nd word of the Unseal Key 0 returns 0x1234 and 0x5678, then Control() should supply 0x3412 and
0x7856 to unseal the device.
12.3 BlockDataChecksum(): 0x60
UNSEALED Access—This byte contains the checksum on the 32 bytes of block data read or written to
data flash.
SEALED Access—This byte contains the checksum for the 32 bytes of block data written to Manufacturer
Data.
12.4 BlockDataLength(): 0x61
UNSEALED Access—This byte contains the length of the data block of data read or written to data flash.
SEALED Access—This byte contains the length of the data block of data read or written to data flash.
12.5 BlockDataControl(): 0x62
UNSEALED Access—This command is used to control data flash ACCESS mode. Writing 0x00 to this
command enables BlockData() to access general data flash. Writing a 0x01 to this command enables the
SEALED mode operation of DataFlashBlock().