SLUSBH1C November 2013 – December 2014
PRODUCTION DATA.
The fuel gauge accurately predicts the battery capacity and other operational characteristics of a single Li-based rechargeable cell. It can be interrogated by a system processor to provide cell information, such as state-of-charge (SoC).
NOTE
The following formatting conventions are used in this document:
Commands: italics with parentheses() and no breaking spaces, for example, Control().
Data Flash: italics, bold, and breaking spaces, for example, Design Capacity.
Register bits and flags: italics with brackets [ ], for example, [TDA]
Data flash bits: italics, bold, and brackets [ ], for example, [LED1]
Modes and states: ALL CAPITALS, for example, UNSEALED mode.
Information is accessed through a series of commands, called Standard Commands. Further capabilities are provided by the additional Extended Commands set. Both sets of commands, indicated by the general format Command), are used to read and write information contained within the control and status registers, as well as its data locations. Commands are sent from system to gauge using the I2C serial communications engine, and can be executed during application development, system manufacture, or end-equipment operation.
The key to the high-accuracy gas gauging prediction is Texas Instruments proprietary Impedance Track™ algorithm. This algorithm uses cell measurements, characteristics, and properties to create state-of-charge predictions that can achieve high accuracy across a wide variety of operating conditions and over the lifetime of the battery.
The fuel gauge measures the charging and discharging of the battery by monitoring the voltage across a small-value sense resistor. When a cell is attached to the fuel gauge, cell impedance is computed based on cell current, cell open-circuit voltage (OCV), and cell voltage under loading conditions.
The fuel gauge uses an integrated temperature sensor for estimating cell temperature. Alternatively, the host processor can provide temperature data for the fuel gauge.
More details are found in the bq27441-G1 Technical Reference Manual (SLUUAC9).
To minimize power consumption, the fuel gauge has several power modes: INITIALIZATION, NORMAL, SLEEP, and HIBERNATE. The fuel gauge passes automatically between these modes, depending upon the occurrence of specific events, though a system processor can initiate some of these modes directly. More details are found in the bq27441-G1 Technical Reference Manual (SLUUAC9).
The fuel gauge 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 1. Because each command consists of two bytes of data, two consecutive I2C transmissions must be executed both to initiate the command function, and to read or write the corresponding two bytes of data. Additional details are found in the bq27441-G1 Technical Reference Manual (SLUUAC9).
NAME | COMMAND CODE |
UNIT | SEALED ACCESS | |
---|---|---|---|---|
Control() | CNTL | 0x00 and 0x01 | NA | RW |
Temperature() | TEMP | 0x02 and 0x03 | 0.1°K | RW |
Voltage() | VOLT | 0x04 and 0x05 | mV | R |
Flags() | FLAGS | 0x06 and 0x07 | NA | R |
NominalAvailableCapacity() | 0x08 and 0x09 | mAh | R | |
FullAvailableCapacity() | 0x0A and 0x0B | mAh | R | |
RemainingCapacity() | RM | 0x0C and 0x0D | mAh | R |
FullChargeCapacity() | FCC | 0x0E and 0x0F | mAh | R |
AverageCurrent() | 0x10 and 0x11 | mA | R | |
StandbyCurrent() | 0x12 and 0x13 | mA | R | |
MaxLoadCurrent() | 0x14 and 0x15 | mA | R | |
AveragePower() | 0x18 and 0x19 | mW | R | |
StateOfCharge() | SOC | 0x1C and 0x1D | % | R |
InternalTemperature() | 0x1E and 0x1F | 0.1°K | R | |
StateOfHealth() | SOH | 0x20 and 0x21 | num / % | R |
RemainingCapacityUnfiltered() | 0x28 and 0x29 | mAh | R | |
RemainingCapacityFiltered() | 0x2A and 0x2B | mAh | R | |
FullChargeCapacityUnfiltered() | 0x2C and 0x2D | mAh | R | |
FullChargeCapacityFiltered() | 0x2E and 0x2F | mAh | R | |
StateOfChargeUnfiltered() | 0x30 and 0x31 | % | R | |
TrueRemainingCapacity() | 0x6A and 0x6B | mAh | R |
Issuing a Control() command requires a subsequent 2-byte subcommand. These additional bytes specify the particular control function desired. The Control() command allows the system to control specific features of the fuel gauge during normal operation and additional features when the device is in different access modes, as described in Table 2. Additional details are found in the bq27441-G1 Technical Reference Manual (SLUUAC9).
CNTL FUNCTION | CNTL DATA | SEALED ACCESS | DESCRIPTION |
---|---|---|---|
CONTROL_STATUS | 0x0000 | Yes | Reports the status of device. |
FW_VERSION | 0x0002 | Yes | Reports the firmware version of the device. |
DM_CODE | 0x0004 | Yes | Reports the Data Memory Code number stored in NVM. |
PREV_MACWRITE | 0x0007 | Yes | Returns previous MAC command code. |
CHEM_ID | 0x0008 | Yes | Reports the chemical identifier of the battery profile used by the fuel gauge. |
BAT_INSERT | 0x000C | Yes | Forces the Flags() [BAT_DET] bit set when the OpConfig [BIE] bit is 0. |
BAT_REMOVE | 0x000D | Yes | Forces the Flags() [BAT_DET] bit clear when the OpConfig [BIE] bit is 0. |
SET_HIBERNATE | 0x0011 | Yes | Forces CONTROL_STATUS [HIBERNATE] to 1. |
CLEAR_HIBERNATE | 0x0012 | Yes | Forces CONTROL_STATUS [HIBERNATE] to 0. |
SET_CFGUPDATE | 0x0013 | No | Force CONTROL_STATUS [CFGUPMODE] to 1 and gauge enters CONFIG UPDATE mode. |
SHUTDOWN_ENABLE | 0x001B | No | Enables device SHUTDOWN mode. |
SHUTDOWN | 0x001C | No | Commands the device to enter SHUTDOWN mode. |
SEALED | 0x0020 | No | Places the device in SEALED access mode. |
TOGGLE_GPOUT | 0x0023 | Yes | Commands the device to toggle the GPOUT pin for 1 ms. |
RESET | 0x0041 | No | Performs a full device reset. |
SOFT_RESET | 0x0042 | No | Gauge exits CONFIG UPDATE mode. |
EXIT_CFGUPDATE | 0x0043 | No | Exits CONFIG UPDATE mode without an OCV measurement and without resimulating to update StateOfCharge(). |
EXIT_RESIM | 0x0044 | No | Exits CONFIG UPDATE mode without an OCV measurement and resimulates with updated configuration data to update StateOfCharge(). |
Extended data commands offer additional functionality beyond the standard set of commands. They are used in the same manner; however, unlike standard commands, extended commands are not limited to 2-byte words. The number of command bytes for a given extended command ranges in size from single to multiple bytes, as specified in Table 3.
NAME | COMMAND CODE | UNIT | SEALED ACCESS(1)(2) | UNSEALED ACCESS(1)(2) |
---|---|---|---|---|
OpConfig() | 0x3A and 0x3B | NA | R | R |
DesignCapacity() | 0x3C and 0x3D | mAh | R | R |
DataClass()(2) | 0x3E | NA | NA | RW |
DataBlock()(2) | 0x3F | NA | RW | RW |
BlockData() | 0x40 through 0x5F | NA | R | RW |
BlockDataCheckSum() | 0x60 | NA | RW | RW |
BlockDataControl() | 0x61 | NA | NA | RW |
Reserved | 0x62 through 0x7F | NA | R | R |
The fuel gauge supports the standard I2C read, incremental read, quick read, one-byte write, and incremental write functions. The 7-bit device address (ADDR) is the most significant 7 bits of the hex address and is fixed as 1010101. The first 8 bits of the I2C protocol are, therefore, 0xAA or 0xAB for write or read, respectively.
The quick read returns data at the address indicated by the address pointer. The address pointer, a register internal to the I2C communication engine, increments whenever data is acknowledged by the fuel gauge or the I2C master. “Quick writes” function in the same manner and are a convenient means of sending multiple bytes to consecutive command locations (such as two-byte commands that require two bytes of data).
The following command sequences are not supported:
Attempt to write a read-only address (NACK after data sent by master):
Attempt to read an address above 0x6B (NACK command):
The I2C engine releases both SDA and SCL if the I2C bus is held low for 2 seconds. If the fuel gauge is holding the lines, releasing them frees them for the master to drive the lines. If an external condition is holding either of the lines low, the I2C engine enters the low-power SLEEP mode.
To ensure proper operation at 400 kHz, a t(BUF) ≥ 66 μs bus-free waiting time must be inserted between all packets addressed to the fuel gauge. In addition, if the SCL clock frequency (fSCL) is > 100 kHz, use individual 1-byte write commands for proper data flow control. The following diagram shows the standard waiting time required between issuing the control subcommand the reading the status result. For read-write standard command, a minimum of 2 seconds is required to get the result updated. For read-only standard commands, there is no waiting time required, but the host must not issue any standard command more than two times per second. Otherwise, the gauge could result in a reset issue due to the expiration of the watchdog timer.
A clock stretch can occur during all modes of fuel gauge operation. In SLEEP and HIBERNATE modes, a short ≤ 100-µs clock stretch occurs on all I2C traffic as the device must wake-up to process the packet. In the other modes (INITIALIZATION, NORMAL), a ≤ 4-ms clock stretching period may occur within packets addressed for the fuel gauge as the I2C interface performs normal data flow control.