SLUUCO9A April 2023 – November 2023 BQ28Z620
The Manufacturer Access Control (MAC) system provides method for accessing subcommands to read and write data, and to control the device state.
The subcommands are set by a valid word access to either the ManufacturerAccess() or MACSubcmd() commands. For subcommands without data arguments, setting the subcommand alone will trigger execution. For subcommands with data the MACData(), MACDataChecksum() and MACDataLength() are used to write the subcommand arguments and trigger execution of the subcommand, or to read and validate the response after setting the subcommand. These can be accessed either in a single I2C transaction or split into multiple transactions as long as the access starts with the lowest address and ends at the highest, without other unrelated commands interleaved.
For subcommands with a data response, it is recommended to read back the MACSubcmd() registers to confirm the MACData() information comes from the intended command. There is no read back verification for subcommands that execute without any data arguments.
Example: Send a MAC Gauging() to enable IT via MACSubcmd().
Example: Read Chemical ID() (0x0006) via MACSubcmd().
It is recommended to send “command only” operations to ManufacturerAccess() on 0x00 and 0x01, as this works with legacy devices as well as newer devices and also can reset any legacy compatibility options in effect; whereas, some legacy devices use 0x3E and 0x3F for other purposes. The 0x3E and 0x3F can always be used for reads. When no legacy devices are expected to be present, 0x3E and 0x3F MACSubcmd() can safely be used to optimize command execution.
To support detection of legacy devices, a request for the MAC subcommands DEV and VERSION written to 0x00 and 0x01 will cause the ControlStatus() read to report 0xFFA5. This token indicates that the device supports MAC on the 0x3E–0x61 command range and to go there for the response. In addition, the MACDataLengh() minimum valid value is 5 to allow some devices to have legacy support triggers when writing other values from 0–4 to this command.
Command | Function | Access | Format | Data Read on MACData() | Not Available in SEALED Mode | Type | Units |
---|---|---|---|---|---|---|---|
0x0001 | DeviceType | R | Block | √ | — | hex | — |
0x0002 | FirmwareVersion | R | Block | √ | — | hex | — |
0x0003 | HardwareVersion | R | Block | √ | — | hex | — |
0x0004 | IFChecksum | R | Block | √ | — | hex | — |
0x0005 | StaticDFSignature | R | Block | √ | — | hex | — |
0x0006 | ChemID | R | Block | √ | — | hex | — |
0x0007 | Prev_MacWrite | R | Block | √ | — | hex | — |
0x0008 | StaticChemDFSignature | R | Block | √ | — | hex | — |
0x0009 | AllDFSignature | R | Block | √ | — | hex | — |
0x0010 | ShutdownMode | W | — | — | — | hex | — |
0x011 | SleepMode | W | — | — | — | hex | — |
0x012 | Reset | W | — | — | — | hex | — |
0x013 | Auto_CAL_MAC | W | — | — | — | hex | — |
0x001F | ChargeFET | W | — | — | √ | hex | — |
0x0020 | DischargeFET | W | — | — | √ | hex | — |
0x0021 | Gauging (IT Enable) | W | — | — | √ | hex | — |
0x0022 | FETControl | W | — | — | √ | hex | — |
0x0023 | LifetimeDataCollection | W | — | — | √ | hex | — |
0x0024 | PermanentFailure | W | — | — | √ | hex | — |
0x0028 | LifetimeDataReset | W | — | — | √ | hex | — |
0x0029 | PermanentFailureDataReset | W | — | — | √ | hex | — |
0x002D | CalibrationMode | W | — | — | √ | hex | — |
0x002E | LifetimeDataFlush | W | — | — | √ | hex | — |
0x002F | LifetimeDataTest | W | — | — | √ | hex | — |
0x0030 | SealDevice | W | — | — | — | hex | — |
0x0035 | SecurityKeys | R/W | Block | √ | √ | hex | — |
0x0037 | AuthenticationKey | W | Block | — | √ | hex | — |
0x0041 | Reset | W | — | — | — | hex | — |
0x004A | Device Name | R/W | Block | √ | — | hex | — |
0x004B | Device Chem | R/W | Block | √ | — | hex | — |
0x004C | Manufacturer Name | R/W | Block | √ | — | hex | — |
0x004D | Manufacturer Date | R/W | Block | √ | — | hex | — |
0x004E | Serial Number | R/W | — | √ | — | hex | — |
0x0050 | SafetyAlert | R | Block | √ | — | hex | — |
0x0051 | SafetyStatus | R | Block | √ | — | hex | — |
0x0052 | PFAlert | R | Block | √ | — | hex | — |
0x0053 | PFStatus | R | Block | √ | — | hex | — |
0x0054 | OperationStatus | R | Block | √ | — | hex | — |
0x0055 | ChargingStatus | R | Block | √ | — | hex | — |
0x0056 | GaugingStatus | R | Block | √ | — | hex | — |
0x0057 | ManufacturingStatus | R | Block | √ | — | hex | — |
0x0058 | AFERegister | R | Block | √ | — | hex | — |
0x0060 | LifetimeDataBlock1 | R | Block | √ | — | Mixed | Mixed |
0x0070 | ManufacturerData | R | Block | √ | — | hex | — |
0x0071 | DAStatus1 | R | Block | √ | — | Mixed | Mixed |
0x0072 | DAStatus2 | R | Block | √ | — | Mixed | Mixed |
0x0073 | ITStatus1 | R | Block | √ | — | Mixed | Mixed |
0x0074 | ITStatus2 | R | Block | √ | — | Mixed | Mixed |
0x0075 | ITStatus3 | R | Block | √ | — | Mixed | Mixed |
0x0076 | CB Status | R | Block | √ | — | hex | — |
0x0077 | FCC_SOH | R | Block | √ | — | hex | — |
0x01yy | DFAccessRowAddress | R/W | Block | — | √ | hex | — |
0x0F00 | ROMMode | W | — | — | √ | hex | — |
0xF080 | ExitCalibrationOutput | R/W | Block | √ | √ | hex | — |
0xF081 | OutputCCandADCforCalibration | R/W | Block | √ | √ | hex | — |
0xF082 | OutputShortedCCandADC forCalibration | R/W | Block | √ | √ | hex | — |