SLUUC54C February 2020 – March 2024 BQ27Z558 , BQ27Z561 , BQ27Z561-R2
The BQ27Z561-R2 device uses a series of 2-byte standard commands to enable system reading and writing of battery information. Each standard command has an associated command code pair, as indicated in Table 12-1, Standard Commands. The LSB of the command code corresponds to the LSB register data. The LSB should be read first to keep the register data synchronized. For some host systems, the host should change the byte order so that the order corresponds to the host's native endianness. Both the I2C and HDQ protocols have methods to access the data for each command code. The gauge updates and/or reads the standard command registers once per second.
Name | Register Code (LSB/MSB) | Description | |
---|---|---|---|
ManufacturerAccess/ControlStatus() | CNTL | 0x00/0x01 | Control Register (See Section 12.1.1.) |
AtRate() | AR | 0x02/0x03 | Read/write. The value is a signed integer with the negative value indicating a discharge current value. The default value is 0 and forces AtRateTimeToEmpty() to return 65,535. |
AtRateTimeToEmpty() | ARTTE | 0x04/0x05 | This read-only function returns an unsigned integer value to predict remaining operating time based on battery discharge at the AtRate() value in minutes with a range of 0 to 65,534. A value of 65,535 indicates AtRate() = 0. The gas gauge updates the AtRateTimeToEmpty() within 1 s after the system sets the AtRate() value. The gas gauge updates these parameters every 1 s. The commands are used in NORMAL mode. |
Temperature() | TEMP | 0x06/0x07 | This read-only function returns an unsigned integer value of temperature measured by the gas gauge and is used for the gauging algorithm. Values are reported in units 0.1 K. It reports either internal temperature or external thermistor temperature, depending on the setting of the [TS1] and [TSInt] bits in Temperature Enable. |
Voltage() | VOLT | 0x08/0x09 | This read-only function returns an unsigned integer value of the measured cell pack in mV with a range of 0 to 6000 mV. |
BatteryStatus() | FLAGS | 0x0A/0x0B | This read-only function returns various battery status information. |
Current() | INSTCURR | 0x0C/0x0D | This read-only function returns a signed integer value that is the instantaneous current flow through the sense resistor. The value is updated every 1 s. Units are mA. |
RemainingCapacity() | RM | 0x10/0x11 | This read-only command returns the predicted remaining capacity, based on rate (per configured Load Select), temperature, present depth-of-discharge, and stored impedance. Values are reported in mAh. |
FullChargeCapacity() | FCC | 0x12/0x13 | This read-only command returns the predicted capacity of the battery at full charge, based on rate (per configured Load Select), temperature, present depth-of-discharge, and stored impedance. Values are reported in mAh. |
AverageCurrent() | AI | 0x14/0x15 | This read-only function returns a signed integer value that is the average current flow through the sense resistor. The value is updated every 1 s. Units are mA. |
AverageTimeToEmpty() | TTE | 0x16/0x17 | Uses average current value with a time constant of 15 s for this method. A value of 65,535 means the battery is not being discharged. |
AverageTimeToFull() | TTF | 0x18/0x19 | This read-only function returns a unsigned integer value, predicting time to reach full charge for the battery in units of minutes based on AverageCurrent(). The computation accounts for the taper current time extension from a linear TTF computation based on a fixed AverageCurrent() rate of charge accumulation. A value of 65,535 indicates the battery is not being charged. |
MaxLoadCurrent() | MLI | 0x1E/0x1F | This read-only function returns a signed integer value in units of mA of the maximum load current. The MaxLoadCurrent() is an adaptive measurement which is initially reported as the maximum load current programmed in Max Load Current. If the measured current is ever greater than Max Load Current, then the MaxLoadCurrent() updates to the new current. MaxLoadCurrent() is reduced to the average of the previous value and Max Load Current whenever the battery is charged to full after a previous discharge to an RSOC of less than Max Load Rsoc. This will prevent the reported value from maintaining an unusually high value. |
MaxLoadTimeToEmpty() | MLTTE | 0x20/0x21 | This read-only function returns a unsigned integer value, predicting remaining battery life at the maximum discharge load current rate in units of minutes. A value of 65,535 indicates that the battery is not being discharged. |
AveragePower() | AP | 0x22/0x23 | This read-only function returns a signed integer value of average power during battery charging and discharging. It is negative during discharge and positive during charge. A value of 0 indicates that the battery is not being discharged. The value is reported in units of mW. |
BTPDischargeSet() | BTP | 0x24/0x25 | This read-/write-word command updates the BTP set threshold for DISCHARGE mode for the next BTP interrupt, deasserts the present BTP interrupt, and clears the OperationStatus()[BTP_INT] bit. |
BTPChargeSet() | BTP | 0x26/0x27 | The read-/write-word command updates the BTP set threshold for CHARGE mode for the next BTP interrupt, deasserts the present BTP interrupt, and clears the OperationStatus()[BTP_INT] bit. |
InternalTemperature() | INT_TEMP | 0x28/0x29 | This read-only function returns an unsigned integer value of the measured internal temperature of the device in 0.1 K units measured by the gas gauge. |
CycleCount() | CC | 0x2A/0x2B | This read-only function returns an unsigned integer value of the number of cycles the battery has experienced a discharge (range 0 to 65,535). One cycle occurs when accumulated discharge greater than or equal to the cycle count threshold. |
RelativeStateOfCharge() | RSOC | 0x2C/0x2D | This read-only function returns an unsigned integer value of the predicted remaining battery capacity expressed as percentage of FullChargeCapacity() with a range of 0% to 100%. |
StateOfHealth() | SOH | 0x2E/0x2F | This read-only function returns an unsigned integer value of the battery state-of-health expressed as a percentage of the ratio of predicted FCC (simulated with SOH Load Rate at 25°C) over the DesignCapacity(). The range is 0% to 100%. |
ChargingVoltage() | CV | 0x30/0x31 | Returns the desired charging voltage in mV to the charger |
ChargingCurrent() | CC | 0x32/0x33 | Returns the desired charging current in mA to the charger |
TerminateVoltage() | 0x34/0x35 | Returns or updates the value of Terminate Voltage | |
TimeStampUpper() | 0x36/0x37 | Returns or updates the upper 16 bits of the time stamp in seconds | |
TimeStampLower() | 0x38/0x39 | Returns or updates the lower 16 bits of the time stamp in seconds | |
QmaxCycles() | 0x3A/0x3B | Returns cycle count at the last QMax update | |
DesignCapacity() | 0x3C/0x3D | In SEALED and UNSEALED access: This command returns the value stored in Design Capacity mAh. This is intended to be a theoretical or nominal capacity of a new pack, but should have no bearing on the operation of the gas gauge functionality. | |
AltManufacturerAccess() | 0x3E/0x3F | MAC data block command | |
MACData() | 0x40/0x5F | MAC data block | |
MACDataSum() | 0x60 | MAC data block checksum | |
MACDataLen() | 0x61 | MAC data block length | |
VoltHiSetThreshold() | 0x62/0x63 | This read/write function is a signed integer in units of mV for the high voltage level threshold, which sets InterruptStatus()[VOLT_HI]. | |
VoltHiClearThreshold() | 0x64/0x65 | This read/write function is a signed integer in units of mV for the high voltage level threshold, which clears InterruptStatus()[VOLT_HI]. | |
VoltLoSetThreshold() | 0x66/0x67 | This read/write function is a signed integer in units of mV for the low voltage level threshold, which sets InterruptStatus()[VOLT_LO]. | |
VoltLoClearThreshold() | 0x68/0x69 | This read/write function is a signed integer in units of mV for the low voltage level threshold, which clears InterruptStatus()[VOLT_LO]. | |
TempHiSetThreshold() | 0x6A | This read/write function is a signed integer in units of °C for the high temperature level threshold, which sets InterruptStatus()[TEMP_HI]. | |
TempHiClearThreshold() | 0x6B | This read/write function is a signed integer in units of °C for the high temperature level threshold, which clears InterruptStatus()[TEMP_HI]. | |
TempLoSetThreshold() | 0x6C | This read/write function is a signed integer in units of °C for the low temperature level threshold, which sets InterruptStatus()[TEMP_LO]. | |
TempLoClearThreshold() | 0x6D | This read/write function is a signed integer in units of °C for the low temperature level threshold, which clears InterruptStatus()[TEMP_LO]. | |
InterruptStatus() | 0x6E | This read-only function returns the status of the interrupt including cause of interrupt. | |
SOCDeltaSetThreshold() | 0x6F | This read/write function is an unsigned char in units of % for the SOC delta level threshold, which clears InterruptStatus()SOC_DELTA. |