This technical reference manual (TRM) discusses the modules and peripherals of the bq35100 device,
and how each is used to build a complete battery fuel gauge and end-of-service monitor. Content in this
TRM complements, not supersedes, information in the bq35100 Lithium Primary Battery Fuel Gauge andEnd-Of-Service Monitor Data Sheet (SLUSCM6).
Notational Conventions
This document uses the following conventions:
•Hexadecimal numbers may be shown with the suffix h or the prefix 0x. For example, the following
number is 40 hexadecimal (decimal 64): 40h or 0x40.
•Registers in this document are shown in figures and described in tables.
– Each register figure shows a rectangle divided into fields that represent the fields of the register.
Each field is labeled with its bit name, its beginning and ending bit numbers above, and its
read/write properties with default reset value below. A legend explains the notation used for the
properties.
– Reserved bits in a register figure can have one of multiple meanings:
•Not implemented on the device,
•Reserved for future device expansion,
•Reserved for TI testing,
•Reserved configurations of the device that are not supported.
– Writing non-default values to the Reserved bits could cause unexpected behavior and should be
avoided.
Preface
SLUUBH1C–August 2016–Revised March 2018
Read This First
Formatting in This Document
The following formatting convention is used in this document:
•SBS Commands: italic with parenthesis and no breaking spaces; for example, RemainingCapacity()
•Data Flash: italic, bold, and breaking spaces; for example, Design Capacity
•Data Flash Bits: italic and bold; for example, [LED1]
•Register Bits and Flags: italic and brackets; for example, [TDA]
•Modes and States: ALL CAPITALS; for example, UNSEALED
Trademarks
E2E is a trademark of Texas Instruments.
All other trademarks are the property of their respective owners.
Related Documentation From Texas Instruments
See the bq35100 Lithium Primary Battery Fuel Gauge and End-Of-Service Monitor Data Sheet
(SLUSCM6).
For product information, visit the Texas Instruments website at http://www.ti.com/product/bq35100.
The following links connect to TI community resources. Linked contents are provided "AS IS" by the
respective contributors. They do not constitute TI specifications and do not necessarily reflect TI's views;
see TI's Terms of Use.
TI E2E™ Online Community— TI's Engineer-to-Engineer (E2E) Community. Created to foster
collaboration among engineers. At e2e.ti.com, you can ask questions, share knowledge, explore
ideas and help solve problems with fellow engineers.
Design Support— TI's Design Support Quickly find helpful E2E forums along with design support tools
and contact information for technical support.
Definitions
A Battery Glossary is available at the Battery University on ti.com.
Glossary
TI Glossary —This glossary lists and explains terms, acronyms, and definitions.
The bq35100 Battery Fuel Gauge and End-Of-Service Monitor provides highly configurable fuel gauging
for non-rechargeable lithium primary batteries—without requiring forced discharge of the battery. Built so
that optimization is not necessary, the patented TI gauging algorithms support replaceable batteries and
enable accurate results with ultra-low average power consumption through host control via the GAUGE
ENABLE (GE) pin.
The fuel gauging functions use voltage, current, and temperature information to provide State-Of-Health
(SOH) and End-Of-Service (EOS) data. The bq35100 device is only required to be powered long enough
to gather data and to make calculations to support the selected algorithm and the frequency of updates
required by the system.
The host can read the gathered data through a 400-kHz I2C bus. An ALERT output is also available to
interrupt the host, based on a variety of configurable options.
The device has extended capabilities, including:
•Fuel Gauge for Single- and Multi-Cell Primary (Non-Rechargeable) Batteries
•Supports Lithium Thionyl Chloride (LiSOCl2) and Lithium Manganese Dioxide (LiMnO2)
The bq35100 device measures the BAT input using the integrated delta-sigma ADC, which is scaled by
the internal translation network, through the ADC. The measured voltage is available through Voltage(),
and is updated for the host to read once per second. The translation gain function is determined by a
calibration process. See Factory Calibration for further details.
In systems where the battery voltage is greater than V
external voltage scaling circuit is required. If [EXTVCELL] is set, then the voltage is measured via the VIN
pin. The input to VIN must be scaled to a maximum of 1 V.
The VEN pin can be used to enable and disable the external divider to conserve power. The firmware will
then scale this < 1-V value to reflect an average cell value, and then again by the number of series cells to
reflect the full battery voltage value.
Chapter 2
SLUUBH1C–August 2016–Revised March 2018
Basic Measurement Systems
MAX (for example, 2-series cell or more), an
IN(BAT)
CLASSSUBCLASSNAMETYPESIZEMIN VALUE
Gas gaugingDesign
The configured battery voltage measurement is made available through the Voltage() command.
2.2Temperature
The device can measure temperature through an integrated temperature sensor or an external NTC
thermistor using the integrated delta-sigma ADC. Only one source can be used for gauging and the
selection is made by setting Operation A [TEMPS] appropriately. The resulting measured temperature is
available through the Temperature() command, and is updated for the host to read once per second. The
internal temperature sensor is always measured in support of voltage measurement accuracy, and the
result is also available through the InternalTemperature() command.
When an external thermistor is used, REG25 (pin 7) is used to bias the thermistor, and TS (pin 11) is used
to measure the thermistor voltage (a pull-down circuit is implemented inside the device). The device then
correlates the voltage to temperature, assuming the thermistor is a Semitec 103AT or similar device.
There is a configurable option for the host to write the temperature to the Temperature() command when
[WRTEMP] = 1. This option is disabled by default.
2.3Coulombs
The integrating delta-sigma ADC (coulomb counter) in the device measures the discharge flow of the
battery by measuring the voltage drop across a small-value sense resistor between the SRP and SRN
pins in a range from –0.125 V to 0.125 V. The device continuously monitors the measured current and
integrates this value over time using an internal counter. This measurement is updated for the host to read
once per second.
Series cell
count
MAX
VALUE
Integer1181Count
DEFAULT
VALUE
UNIT
2.4Current
For the primary battery current, the integrating delta-sigma ADC in the device measures the discharge
current of the battery by measuring the voltage drop across a small-value sense resistor between the SRP
and SRN pins, and is available through the Current() command, and is updated for the host to read once
per second.
The measured current also includes the current consumed by the device. To subtract this value from the
reported current, a value programmed in EOS Gauge Load Current is subtracted for improved accuracy.
Current() = Actual Measured (SRP–SRN) Current – EOS Gauge Load Current
The bq35100 fuel gauge requires factory calibration. The gauge performs only a limited number of
calibration functions. The rest must be performed by a host system using commands provided by the
gauge for this purpose. The following sections give a detailed description of the various calibration
sequences with the help of flowcharts.
3.1General I2C Command Information
In the following flowcharts, all I2C functions take three arguments.
Write command arguments:
•Address
•Data
•Wait time in ms
Read command arguments:
•Address
•Number of bytes read
•Wait time in ms
Chapter 3
SLUUBH1C–August 2016–Revised March 2018
Factory Calibration
3.2Calibration Overview
3.2.1 Method
The calibration method is broken up into the following sections. The first four sequences are subroutines
to be used in the main calibration sequences. Once in CALIBRATION mode, it is important to perform
voltage calibration first.
•Section 3.3, Enter CALIBRATION Mode
•Section 3.4, Voltage Calibration
•Section 3.5, CC Offset
•Section 3.6, Board Offset
•Section 3.7, Obtain Raw Calibration Data
•Section 3.8, Current Calibration
•Section 3.9, Temperature Calibration
•Section 3.10, Floating Point Conversion
•Section 3.11, Exit CALIBRATION Mode
3.2.2 Sequence
Perform the following calibration sequence during battery pack manufacturing process:
A known voltage must be applied to the device for voltage calibration, but the voltage can be measured in
two different ways. See Voltage for more details.
The bq35100 device is default-configured to use the BAT input for voltage measurement, and the data
used for calibration is made available through the calibration commands in units of millivolts (mV). In this
setup, the calculated voltage offset must be written to the corresponding location in DF. The voltage offset
is represented by an integer that is a single byte in size and can be written to the appropriate location in
DF without any intermediate steps. The host system must ensure that the fuel gauge is UNSEALED.
The device has the option to use an external voltage divider circuit where the voltage is measured through
the VIN pin, and the data used for calibration is made available through the calibration commands. In this
setup, there is no user offset required and the reported RawVoltage is actually RawADCounts. The gain
of the voltage translation circuit needs to be calculated and stored, where: V
65536. This resulting integer is written to VIN
NOTE: The step labeled Obtain avgRawVoltage refers to Section 3.7, Obtain Raw Calibration
Use MAC commands for CC Offset calibration. The host system does not need to write information to the
data flash (DF). See CONTROL_STATUS: 0x0000 for the description of the CONTROL_STATUS[CCA]
bit. The host system must ensure that the fuel gauge is UNSEALED.
NOTE: While the device is calibrating the CC Offset, the host system must not read the
CC Offset
CONTROL_STATUS register at a rate greater than once every 0.5 seconds and no current
should be flowing.
The step labeled Enter CALIBRATION Mode refers to Section 3.3, Enter CALIBRATION
Mode.
The step labeled Exit CALIBRATION Mode refers to Section 3.11, Exit CALIBRATION
Use MAC commands for Board Offset calibration. The host system does not need to write information to
the DF. The host system must ensure that the fuel gauge is UNSEALED. See CONTROL_STATUS:
0x0000 for the description of the CONTROL_STATUS[CCA] and [BCA] bits.
NOTE: While the device is calibrating the Board Offset, the host system should not read the
CONTROL_STATUS() register at a rate greater than once every 0.5 seconds and no current
should be flowing.
The step labeled Enter CALIBRATION Mode refers to Section 3.3, Enter CALIBRATIONMode.
The step labeled Exit CALIBRATION Mode refers to Section 3.11, Exit CALIBRATIONMode.
The following flowchart demonstrates how the host system obtains the raw data to calibrate current,
voltage, and temperature. The host system uses this flow in conjunction with the current, voltage, and
temperature flows described in this chapter. It is recommended that the host system samples the raw data
multiple times at a rate of once per second to obtain an average of the raw current, voltage, and
temperature. The host system must ensure that the fuel gauge is UNSEALED.
NOTE: The step labeled Enter CALIBRATION Mode refers to Section 3.3, Enter CALIBRATION
Mode.
The step labeled Exit CALIBRATION Mode refers to Section 3.11, Exit CALIBRATION
The signs of the variables are very
important.and
should be positive. ccOffset should be
treated as a 16-bit signed integer and
boardOffset should be an 8-bit signed
integer.
currentavgRawCurrent
current = forced load current
Obtain CC Offset and Board offset
from DF
Obtain avgRawCurrent
The sign of current should be positive. Raw
current samples are positive in discharge
mode. This ensures that ccGain is positive.
Convert ccGain and ccDelta to
Gauge’s floating point
representation and write to DF
ccGain = current /(avgRawCurrent-(ccOffset + boardOffset) / 16)
Current Calibration
3.8Current Calibration
CC Gain and CC Delta are two calibration parameters of concern for current calibration. A known load,
typically 1000 mA, is applied to the device during this process. Details on converting the CC Gain and CCDelta to floating point format are in Floating Point Conversion. The host system must ensure that the fuel
gauge is UNSEALED.
NOTE: The step labeled Obtain avgRawCurrent refers to Section 3.7, Obtain Raw Calibration
Data.
The step labeled Convert ccGain and ccDelta to Gauge’s floating point representation
and write to DF refers to Section 3.10, Floating Point Conversion.
This feature calibrates the internal temperature and the external temperature sensor if the source is set by
Operation Config A [TEMPS]. A known temperature must be applied to the device for temperature
calibration. The calculated temperature offset is written to the corresponding location in DF. The
temperature offset is represented by an integer that is a single byte in size and can be written to the
appropriate location in DF without any intermediate steps. The host system must ensure that the fuel
gauge is UNSEALED.
NOTE: a) The step labeled Obtain avgRawTemp refers to Section 3.7, Obtain Raw Calibration
Data.
b) When using bqStudio, ensure that the selected calibration of Internal or External
temperature matches the setting on the [TEMPS] selection.
This section details how to convert the floating point CC Gain and CC Delta values to the format
recognized by the gauge.
18
Factory Calibration
* LHS is an abbreviation for Left-Hand Side. This refers to truncating the floating point value by removing anything to
the right of the decimal point.
The bq35100 device can operate in three distinct modes: ACCUMULATOR (ACC) mode, STATE-OFHEALTH (SOH) mode, and END-OF-SERVICE (EOS) mode. The device can be configured and used for
only one of these modes in the field, as it is not intended to be able to actively switch between modes
when in normal use.
5.1ACCUMULATOR Mode
In this mode, the bq35100 device measures and updates cell voltage, cell temperature, and load current
every 1 s and begins accumulating after GAUGE_START is received. This data is provided through the
I2C interface while ControlStatus() [GA] is set.
This mode is enabled when [GMSEL1:0] in Operation Config A = 00.
5.1.1 Total Capacity Update
When in ACCUMULATOR mode, the bq35100 device tracks and then stores the total accumulated
capacity to its internal data flash.
Chapter 5
SLUUBH1C–August 2016–Revised March 2018
Battery Gauging
Care should be taken when enabling and using this feature to ensure that the
maximum number of writes, which is 200,000, is not exceeded. For example,
this translates to no more than 25 writes per day over 20 years.
When the GE pin is asserted, the device will update AccumulatedCapacity() from the value stored in data
flash. When ControlStatus() [GA] is set, the device adds each coulomb counter measurement to the value
of AccumulatedCapacity().
Sending the GAUGE_STOP() command prior to the GE pin being pulled low initiates the latest value of
AccumulatedCapacity() to be written to data flash memory. As this operation takes a finite amount of time,
the gauge will assert [G_DONE] in ControlStatus() and can optionally trigger the ALERT pin to inform the
host when the operation is complete.
5.2STATE-OF-HEALTH (SOH) Mode
This mode is enabled when [GMSEL1:0] in Operation Config A = 01. This mode is suitable for
determining SOH for Lithium Manganese Dioxide (LiMnO2) chemistry. In this mode, cell voltage and
temperature are precisely measured immediately after the GE pin is asserted. The gauge uses this data to
compute SOH.
SOH = DOD(TermV) – DOD(OCV, temperature)
Where:
TermV is a DF constant determined by the manufacturer to be discharge voltage below which the cell
cannot provide the power required by the device.
CAUTION
5.2.1 Low State-Of-Health Alert
BatteryStatus() [SOH_LOW] is set when StateOfHealth() is less than or equal to the value programmed in
ConfigurationDischargeSOHLOWInteger1010010%
ConfigurationDischargeSOH Set TimeInteger10600s
ConfigurationDischarge
When BatteryStatus() [SOH_LOW] is set, the device can optionally trigger the ALERT pin. SOH_LOW is
cleared if StateOfHealth() is greater than SOH Clear Threshold. See Alert Signal for more information.
The GAUGE_START() and GAUGE_STOP() commands can be used in this mode to detect a Battery Low
Alert condition during a continuous discharge.
5.3End-Of-Service (EOS) Mode
This mode is enabled when [GMSEL1:0] in Operation Config A = 10. This mode is suitable for gauging
Lithium Thionyl Chloride (LiSOCl2) cells. The End-Of-Service gauging algorithm uses voltage, current, and
temperature data to determine the resistance (R) and rate of change of resistance of the battery. The
resistance data is then used to find Depth of Discharge (DOD) = DOD(R). As above, SOH is determined
and in turn used to determine the EOS condition.
When in this mode, a GAUGE_START() command should be issued prior to any major discharge activity.
This will ensure that any major discharge pulses are used in the determination of the battery's condition.
Upon completion of any major discharge, the GAUGE_STOP() command should be sent to the device.
The gauge will continue to collect data in a low power state for the number of seconds determined by RData Seconds. The device then completes any calculations and flash writes. Once these tasks are
completed, then [G_DONE] is set and the device can be powered down.
SOH Clear
Threshold
MIN
VALUE
Integer1010010%
MAX
VALUE
DEFAULT
VALUE
UNIT
CLASSSUBCLASSNAMETYPESIZE
EOS DataValuesR Data SecondsU11025515s
5.3.1 Initial EOS Learning
For optimal accuracy, the first event where the device updates its impedance value is required to be when
the battery is full (a fresh battery). If the battery was partially discharged, then the accuracy of the EOS
detection is compromised.
When a new battery is inserted, then the NEW_BATTERY() command should be sent to the device to
ensure the initial learned resistance RNEW is refreshed correctly.
In some cases, it may be necessary to compensate for anode passivation effects if there is a delay
between when the battery was conditioned for use and when the device is put into service. Several initial
impedance readings can be discarded (to remove passivation effects) by setting an appropriate value for
New Batt R Scale Delay.
CLASSSUBCLASSNAMETYPESIZE
EOS DataValues
EOS DataValuesR Table ScaleInteger2–1–1–1—
EOS DataValues
New batt R scale
delay
R Table Scale
Update Flag
MIN
VALUE
MIN
VALUE
Unsigned
Integer
Hex10x000xff0xff—
102552Readings
MAX
VALUE
MAX
VALUE
DEFAULT
VALUE
DEFAULT
VALUE
UNIT
UNIT
NOTE: Do not update R Table Scale and R TableScaleUpdateFlag.
The bq35100 device can detect when a sharp increase in the trend of tracked impedance occurs,
indicating that the battery is reaching its end-of-service condition.
When in this mode, each time the GAUGE_START() command is received, then the internal counter "EOS
Detection Pulse Count" is incremented. This internal value is stored to EOS Detection Pulse Count once
GAUGE_STOP() is received.
NOTE: EOS Detection Pulse Count must be programmed to 0 prior to final system installation.
When the device has enough information to update Impedance, the present value of Impedance is
copied to Previous Impedance in preparation for the new Impedance value to be updated.
Using this data, the device monitors the trend through a moving average algorithm. For improved
accuracy, it is recommended to gather new data on a fixed periodic base: for example, every 24 hours. As
the device is powered down when not needed for EOS monitoring, it has no "time" information.
There are two moving average trends that are calculated after an Impedance update:
Short Trend Average = Impedance × 1/DF1 + Previous Impedance × (1–1/DF1)(1)
Long Trend Average = Impedance × 1/DF2 + Previous Impedance × (1–1/DF2)(2)
Where:
DF1 (50) and DF2 (100) are the time constants of the moving average.
The trend detection equation is:
Short Trend Average > Long Trend Average × (1 + EOS Trent Detection / 100)(3)
When this occurs the Battery Status [EOS] flag is set and cannot be cleared.
Where:
EOS Trent Detection is the % increase of Short Trend Average over Long Trend Average.
For example: If EOS Trent Detection = 20, then the [EOS] flag is set when Short Trend Average is
120% × Long Trend Average.
End-Of-Service (EOS) Mode
CLASSSUBCLASSNAMETYPESIZE
EOS DataValuesR short trend filterUnsigned Int11255251—
EOS DataValuesR long trend filterUnsigned Int11255253—
EOS DataValuesEOS trend detectionUnsigned Int1110020—
EOS DataValuesEOS detection pulse countUnsigned Int2120000120—
EOS DataValues
EOS DataValuesShort trend averageUnsigned Int4183557120—
EOS DataValuesLong trend averageUnsigned Int4183557120—
EOS detection pulse count
Thrhd
5.3.3 End-Of-Service Smoothing
In EOS mode, the State-Of-Health() output is smoothed to provide a more stable output value that will
converge, and not jump, at the terminate voltage. Smoothing occurs when Voltage() < EOS SOH Smooth
Start Voltage. The value of EOS SOH Smooth Start Voltage must be higher than Cell Terminate
Voltage.
NOTE: When EOS Smoothing is enabled, Lifetime Data gathering must also be enabled. This can
be done by sending (Control() 0x002E [LT_EN]) and confirming that it is enabled when
OperationStatus()[LTEN] = 1.
In EOS mode, the accuracy of the SOH reported value can vary significantly with a load
profile. Perform in-system evaluation to determine the reported value at the desired EOS
level. In some instances, the value of SOH should be ignored.
The bq35100 device has only one active power mode that is enabled through the GAUGE ENABLE (GE)
pin. The power consumption of the bq35100 device can change significantly based on host commands
that it receives and its default configuration, specifically with respect to data flash updates.
6.1Device Functional Modes
The bq35100 device is intended for systems where the battery electronics are required to consume a very
low average current. To achieve this, the device is intended to be fully powered off when not required
through control of the GAUGE ENABLE pin.
When this pin is low, then the device is fully powered down where no measurements are made and no
data, unless in flash, is retained. In this state, the power consumption of the device is a few 10s of nA.
This value is primarily leakage of the device and other components on the board, but also includes
measurement errors. Due to the level of possible variations, use a conservative value of 50 nA for
example calculations.
An example system current profile is shown along with the state of GE to reduce the average power
consumption of the battery electronics.
Chapter 6
SLUUBH1C–August 2016–Revised March 2018
Power Control
Figure 6-1. System Current Profile Example
The average power consumption of the bq35100 device is an average of the periods where GAUGE
ENABLE is high AND low over a given period.
For example, if the system enters a high power state (315 µA) for 30 s every 4 hours, the average current
will be:
315 µA × 30 s / 4 hrs = 0.66 µA(4)
When GAUGE ENABLE is low (GE = Low), then the device is powered off and the current is nominally
I
CC_GELOW
and is the leakage current into the REGIN pin. Other components connected to this node should
also be evaluated to determine the "System Off" current total.
When the device is used for gas gauging, it transitions through several power states based on the
selection of Operation Cfg A[GMSEL].
Figure 6-2 highlights the operational flow and conditional decisions.
If enabled, data flash can only be updated if either of the two following conditions is true:
1. ControlStatus() [GA] = 1 AND Voltage() ≥ Flash Update OK Voltage.
2. ControlStatus() [GA] = 0.
If enabled, data flash can only be updated if Voltage() ≥ Flash Update OK Voltage. Flash programming
current can cause an increase in LDO dropout. The value of Flash Update OK Voltage should be
selected such that the device VCCvoltage does not fall below its minimum of 2.4 V during Flash write
operations.
The bq35100 device can indicate and optionally trigger the ALERT pin when the primary battery state-ofhealth (SOH) falls below a programmable threshold.
The device assumes that when GE is asserted, the cell is at rest and uses the initialization voltage reading
to determine the Open Circuit Voltage (OCV). If the cell was not fully relaxed at that point, then the voltage
after the pulse could rise above the OCV. This causes an incorrect impedance to be calculated.
If the device measures a voltage value above the initial OCV, then it increments an internal counter. When
this counter increments up to EOS Relax V Hi Max Counts, then [EOS_OCV_BAD] is set in
CONTROL_STATUS().
If [EOS_OCV_BAD] becomes set, then the battery requires a longer time to rest and the device should be
powered down (GE driven low). As a guideline, from the last major discharge, a rest of 5 hours should
allow full relaxation.
The ALERT signal can be configured to be triggered by a variety of status conditions. When the ALERT
Configuration bit is set AND the corresponding bit in BatteryStatus() or ControlStatus() is set, then the
corresponding BatteryAlert() bit is set, triggering the ALERT signal.
For example: If BatteryStatus() [BATLOW] AND ALERT Configuration [BATLOW] = 1, then
BatteryAlert() [BATLOW] is set and the ALERT pin is triggered.
The ALERT signal is cleared upon a read of BatteryStatus().
The bq35100 device can be enabled by writing to Control() 0x002E [LT_EN] to gather data regarding the
primary battery and to store it to data flash.
The following data is collected in RAM and only written to DF when the host sends the End command to
the device.
•Min and Max Cell Voltage
•Min and Max Discharge Current
•Min and Max Temperature
CLASSSUBCLASSNAMETYPEMINMAXDEFAULTUNIT
LTFlashVoltageMaxI20327670mV
LTFlashVoltageMinI20327670mV
LTFlashCurrentMax DischargeI20327670mA
LTFlashCurrentMin DischargeI20327670mA
LTFlashTemperature Max CellI2–1281270°C
LTFlashTemperature Min CellI2–1281270°C
LTFlashTemperature Max GaugeI2–1281270°C
LTFlashTemperature Min GaugeI2–1281270°C
As of March 2012, the latest revision is FIPS 180-4. SHA-1, or secure hash algorithm, is used to compute
a condensed representation of a message or data also known as hash. For messages < 264, the SHA-1
algorithm produces a 160-bit output called a digest.
In a SHA-1 one-way hash function, there is no known mathematical method of computing the input given,
only the output. The specification of SHA-1, as defined by FIPS 180-4, states that the input consists of
512-bit blocks with a total input length less than 264 bits. Inputs that do not conform to integer multiples of
512-bit blocks are padded before any block is input to the hash function. The SHA-1 algorithm outputs the
160-bit digest.
The device generates a SHA-1 input block of 288 bits (total input = 160-bit message + 128-bit key). To
complete the 512-bit block size requirement of the SHA-1 function, the device pads the key and message
with a 1, followed by 159 0s, followed by the 64-bit value for 288 (000...00100100000), which conforms to
the pad requirements specified by FIPS 180-4.
•http://www.nist.gov/itl/
•http://csrc.nist.gov/publications/fips
•www.faqs.org/rfcs/rfc3174.html
Chapter 10
SLUUBH1C–August 2016–Revised March 2018
SHA-1 Authentication
10.2 HMAC Description
The SHA-1 engine calculates a modified HMAC value. Using a public message and a secret key, the
HMAC output is considered to be a secure fingerprint that authenticates the device used to generate the
HMAC.
To compute the HMAC: Let H designate the SHA-1 hash function, M designate the message transmitted
to the device, and KD designate the unique 128-bit Unseal/Full Access/Authentication key of the device.
HMAC(M) is defined as: H[KD || H(KD || M)], where || symbolizes an append operation.
10.3 Authentication
The authentication feature is used in the following sequence:
1. MAC command 0x0000: Command = 0x0000, write the 20 bytes to 0x40, then write the checksum+len
at 0x60. The response will be available as a MAC response, so 0x3E/0x3F will be 0x0000, 0x40 will
have the SHA1 result, and 0x60/0x61 will have the checksum and length.
2. Generate 160-bit message M using a random number generator that meets approved random number
generators described in FIPS PUB 140–2.
7. With no active MACData() data waiting, write 160-bit message M to MACData() in the format
0xAABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTT, where AA is LSB.
9. Compare host HMAC2 with device HMAC3, and if it matches, both host and device have the same key
KD and the device is authenticated.
10.4 AuthenticateData(): 0x40…0x53
UNSEALED Access—This data block has a dual function: It is used for the authentication challenge and
response and is part of the 32-byte data block when accessing data flash.
SEALED Access—This data block has a dual function: It is used for authentication challenge and
response, and is part of the 32-byte data block when accessing Manufacturer Data.
10.5 AuthenticateChecksum(): 0x54
UNSEALED Access—This byte holds the authentication checksum when writing the authentication
challenge to the device, and is part of the 32-byte data block when accessing data flash.
SEALED Access—This byte holds the authentication checksum when writing the authentication challenge
to the device, and is part of the 32-byte data block when accessing Manufacturer Data.
mV when [EXTVCELL] = 0 and ADC counts when [EXTVCELL] = 1
Unsigned
Int
Unsigned
Int
Unsigned
Int
Unsigned
Int
Unsigned
Int
Unsigned
Int
Unsigned
Int
SIZE IN
BYTES
2–3276832767—0.1°K
2065535—mΩ
2065535—mΩ
2–3276832767—0.1°K
10100—%
2065535—mAh
2065535—°K
MIN
VALUE
MAX
VALUE
DEFAULT
VALUE
UNIT
mV or
Counts
(1)
11.2 Control(): 0x00/0x01
Issuing a Control() (or Manufacturer Access Control or MAC) command requires a 2-byte subcommand.
The subcommand specifies the particular MAC function desired. The Control() command enables the
system to control specific features of the gas gauge during normal operation and additional features when
the device is in different access modes, as described below. On this device, Control() commands may
also be sent to ManufacturerAccessControl().
Any subcommand that has a data response will be read back on MACData(). Reading the Control()
registers will always report the CONTROL_STATUS() data field, except after the DEVICE_TYPE() and
FW_VERSION() subcommands. After these subcommands, CONTROL_STATUS() will report the value
0xFFA5 one time before reverting to the normal data response. This is a flag to indicate that the data
response has been moved to MACData(). Writing a 0x0000 to Control() is not necessary to read the
CONTROL_STATUS(); however, doing so is okay.
When executing commands that require data (such as data flash writes), the subcommand can be written
to either Control() or ManufacturerAccessControl() registers; however, it is recommended to write using
the ManufacturerAccessControl() registers as this enables performing the full command in a single I2C
transaction.
For example, the following return the same CHEM_ID data write:
0x0000 0x0800 ;
Read: 0x3e
Read: 0x3f
write: 0x3e 0x0800 ;
Read: 0x3e
Read: 0x3f
The Control() MAC command enables the host to control specific features of the device during normal
operation, and additional features when the bq35100 device is in different access modes, as described in
Table 11-2.
CONTROL_STATUS: 0x0000
Table 11-2. Control MAC Subcommands
CNTL FUNCTIONCNTL DATA
CONTROL_STATUS0x0000YesReports the status of key features
DEVICE_TYPE0x0001YesReports the device type of 0x100 (indicating bq35100)
FW_VERSION0x0002YesReports the firmware (LSB) version on the device type
HW_VERSION0x0003YesReports the hardware (MSB) version of the device type
STATIC_CHEM_CHKSUM0x0005YesCalculates chemistry checksum
CHEM_ID0x0006Yes
PREV_MACWRITE0x0007YesReturns previous Control() command code
BOARD_OFFSET0x0009Yes
CC_OFFSET0x000AYesForces the device to measure the internal CC offset
CC_OFFSET_SAVE0x000BYesForces the device to store the internal CC offset
GAUGE_START0x0011YesTriggers the device to enter ACTIVE mode
GAUGE_STOP0x0012Yes
SEALED0x0020NoPlaces the device in SEALED access mode
CAL_ENABLE0x002DNoToggle CALIBRATION mode enable
LT_ENABLE0x002ENoEnables Lifetime Data collection
RESET0x0041NoForces a full reset of the device
EXIT_CAL0x0080NoExit CALIBRATION mode
ENTER_CAL0x0081NoEnter CALIBRATION mode
NEW_BATTERY0xA613Yes
SEALED
ACCESS
DESCRIPTION
Reports the chemical identifier used by the gas gauge
algorithms
Forces the device to measure and store the board
offset
Triggers the device to stop gauging and complete all
outstanding tasks
Used to refresh the gauge when a new battery is
installed and resets all recorded data.
11.3 CONTROL_STATUS: 0x0000
This command instructs the device to return status information to Control addresses 0x00/0x01. The
status word includes the following information.
When reading DEVICE_TYPE(), a block read is used. This requires that a write to 0x00 of 0x0200 should
be followed by a read of 0x40 with 6 bytes to be read out. All In little-endian order, the first 2 bytes are
DEVICE_TYPE(), then 2 bytes of FW_VERSION() and 2 bytes of FW BUILD.
11.3.2 FW_VERSION: 0x0002
When reading FW_VERSION(), a block read is used. This requires that a write to 0x00 of 0x0200 should
be followed by a read of 0x40 with 6 bytes to be read out. All in little-endian order, the first 2 bytes are
DEVICE_TYPE(), then 2 bytes of FW_VERSION() and 2 bytes of FW BUILD.
11.3.3 HW_VERSION: 0x0003
This command instructs the device to return the hardware version to addresses 0x00/0x01.
11.3.4 STATIC_CHEM_DF_CHKSUM: 0x0005
This command instructs the fuel gauge to calculate chemistry checksum as a 16-bit unsigned integer sum
of all static chemistry data. The most significant bit (MSB) of the checksum is masked yielding a 15-bit
checksum. This checksum is compared with the value stored in the data flash Static Chem DFChecksum. If the value matches, the MSB will be cleared to indicate a pass. If it does not match, the
MSB will be set to indicate a failure.
CONTROL_STATUS: 0x0000
11.3.5 CHEM_ID: 0x0006
This command instructs the fuel gauge to return the chemical identifier for the programmed chemistry
configuration to addresses 0x00/0x01. For evaluation purposes, the default CHEM_ID is a hybrid of a) Ra
table for LiSOCl2and b) OCV table for LiMnO2. The appropriate Chem ID for the cell to be used in the
target application should be used in production.
11.3.6 PREV_MACWRITE: 0x0007
This command instructs the fuel gauge to return the previous command written to addresses 0x00/0x01.
The value returned is limited to less than 0x0020.
11.3.7 BOARD_OFFSET: 0x0009
This command instructs the fuel gauge to calibrate board offset when is in ACTIVE mode. During board
offset calibration, the [BCA] bit is set. This command only returns updated data after GAUGE_START() is
received and prior to when GAUGE_STOP() is received.
11.3.8 CC_OFFSET: 0x000A
This command instructs the fuel gauge to calibrate the coulomb counter offset when in ACTIVE mode.
During calibration, the [CCA] bit is set. This command only returns updated data after GAUGE_START() is
received and prior to when GAUGE_STOP() is received.
11.3.9 CC_OFFSET_SAVE: 0x000B
This command instructs the fuel gauge to save the coulomb counter offset after calibration when it is in
ACTIVE mode.
11.3.10 GAUGE_START: 0x0011
This command instructs the fuel gauge to enter ACTIVE mode.
This command instructs the fuel gauge to exit ACTIVE mode and complete all tasks.
11.3.12 SEALED: 0x0020
This command instructs the fuel gauge to transition from UNSEALED state to SEALED state. The fuel
gauge should always be set to SEALED state for use in the customer’s end equipment.
11.3.13 CAL_ENABLE: 0x002D
This command instructs the fuel gauge to enable entry and exit to CALIBRATION mode.
11.3.14 LT_ENABLE: 0x002E
This command instructs the fuel gauge to enable Lifetime Data collection.
11.3.15 RESET: 0x0041
This command instructs the fuel gauge to perform a full reset. This command is only available when the
fuel gauge is UNSEALED.
11.3.16 NEW_BATTERY: 0xA613
This command instructs the fuel gauge to prepare itself for the next resistance update and EOS
determination to be with a new cell.
www.ti.com
11.4 AccumulatedCapacity(): 0x02/0x05
This read-word 4-byte command returns the accumulated coulombs since the coulomb counter was
started. It provides an unsigned integer value with the range of 0 to 4.29E9 µAh. If the value reaches full,
it will hold at the full count and not roll over.
11.5 Temperature(): 0x06/0x07
This read-only command pair returns an unsigned integer value of the temperature, in units of 0.1°K,
measured by the device and has a range of 0 to 6553.5°K. The source of the measured temperature is
configured by the [TEMPS] bit in Operation Config A.
11.6 Voltage(): 0x08/0x09
This read-word command pair returns an unsigned integer value of the measured battery voltage in mV
with a range of 0 V to 65535 mV.
11.7 BatteryStatus() 0x0A
This read-only register provides indications on the status of the battery.
SBS
CMD.
0x0ABatteryAlertRRRWordHEX0x000xff—
76543210
RSVDRSVDRSVDRSVDRSVDALERTRSVDDSG
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
RSVD (Bits 7–3): Reserved. Do not use.
ALERT (Bit 2): ALERT output triggered
0 = ALERT is not active.
1 = ALERT is active.
RSVD (Bit 1): Reserved. Do not use.
DSG (Bit 0): Discharge current detection
0 = No discharge is detected.
1 = Discharge current is detected.
11.8 BatteryAlert() 0x0B
This read-only register provides indications on the cause of the ALERT pin trigger. An ALERT bit only
clears if the condition for it is removed. Reading this register causes the ALERT pin to deassert and also
clears the ALERT bit in BatteryStatus(). Note the ALERT pin is only asserted if it is configured to do so for
a particular condition.
BatteryAlert() 0x0B
SBS
CMD.
0x0BBatteryAlertRRRWordHEX0x000xff—
76543210
BATLOWTEMPLOWTEMPHIGHSOH_LOWEOSRSVDG_DONEINITCOMP
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
NAME
SEUSFA
ACCESS
PROTOCOLTYPEMINMAXUNIT
BATLOW (Bit 7): ALERT is triggered because of BATLOW.
TEMPLOW (Bit 6): ALERT is triggered because of TEMPLOW.
TEMPHIGH (Bit 5): ALERT is triggered because of TEMPHIGH.
SOH_LOW (Bit 4): ALERT is triggered because of SOHLOW.
EOS (Bit 3): ALERT is triggered because of EOS.
RSVD (Bit 2): Reserved. Do not use.
G_DONE (Bit 1): ALERT is triggered because of G_DONE.
INITCOMP (Bit 0): ALERT is triggered because of INITCOMP.
11.9 Current(): 0x0C/0x0D
This read-only command pair returns a signed integer value that is the average current flowing through the
sense resistor. It is updated every 1 second with units of 1 mA per bit.
11.10 ScaledR(): 0x16/0x17
This read-only command pair returns an integer value of the scaled resistance of the cell. It is updated
upon a new resistance update in EOS mode only with a resolution of 1 mΩ per bit.
11.11 MeasuredZ(): 0x22/0x23
This read-only command pair returns an integer value of the measured impedance of the cell. It is updated
upon a new resistance update in EOS mode only with a resolution of 1 mΩ per bit.
11.12 InternalTemperature(): 0x28/0x29
This read-only command pair returns an unsigned integer value of the internal temperature sensor in units
of 0.1°K, measured by the device, and has a range of 0 to 6553.5°K.
This read-only command returns an unsigned integer value of the predicted state-of-health (SOH). Where
state-of-health is predicted as Remaining Available Charge / Design Capacity × 100%.
The value is valid for both the SOH and EOS gauging modes. In both cases, the StateOfHealth()
expression can be reduced to the simple expression of "DoD at Termination" – "Present DoD". In the SOH
mode case, "Present DoD" is determined from the relaxed cell voltage and the EOS mode case is
determined by the cell impedance measurement. The "DoD at Termination" is determined by finding the
DoD at which MaxLoad causes the cell voltage to hit the Terminate Voltage threshold.
11.14 DesignCapacity(): 0x3C/3D
This read-only command pair returns the expected full charge capacity with units of 1 mAh per bit. The
value is stored in Design Capacity.
11.15 ManufacturerAccessControl(): 0x3E/0x3F
This read-write word function returns the subcommand that is currently active for reads on MACData().
Word writes to this function will set a subcommand. Commands that do not require data will execute
immediately (identical to writes to Control()).
11.16 MACData(): 0x40 through 0x5F
This read-write block returns the result data for the currently active subcommand. It is recommended to
start the read at ManufacturerAccessControl() to verify the active subcommand. Writes to this block are
used to provide data to a subcommand when required.
www.ti.com
11.17 MACDataSum(): 0x60
This read-write function returns the checksum of the current subcommand and data block. Writes to this
register provide the checksum necessary in order to execute subcommands that require data. The
checksum is calculated as the complement of the sum of the ManufacturerAccessControl() and the
MACData() bytes. MACDataLen() determines the number of bytes of MACData() that are included in the
checksum.
11.18 MACDataLen(): 0x61
This read-write function returns the number of bytes of MACData() that are part of the response and
included in MACDataSum(). Writes to this register provide the number of bytes in MACData() that should
be processed as part of the subcommand. Subcommands that require block data are not executed until
MACDataSum() and MACDataLen() are written together as a word.
Accessing data flash (DF) is supported by accessing the actual physical memory in the address range
0x4000–0x43FF. This provides up to 1k of directly addressable DF. In this mode, the subcommand
represents the actual base address in DF to access. Reads provide a 32-byte block (except if it runs off
the end of DF). The length will identify if it is at the end (less than 32 bytes). Writes can have anywhere
from 1 to 32 bytes, which provide the ability to write a single DF parameter without having to read a row
first.
12.1.1 Write to DF Example
Assume data1 is located at address 0x4000 and data2 is located at address 0x4002, and both data1 and
data2 are U2 type. To update data1 and data2 to 0x1234 and 0x5678, respectively, do the following:
•Write 0x00 0x40 (DF address in little endian format) to ManufacturerAccessControl(0x3E, 0x3F).
•Write 0x12 0x34 0x56 0x78 (data in big endian format) to MACData(0x40–0x43). The writes to
ManufacturerAccessControl() and MACData() can be performed in a single transaction.
•Write 0xAB (complement of the sum of the ManufacturerAccessControl() and MACData() bytes) to
MACDataSum(0x60).
•Write 0x08 (4 + length of MACData() bytes) to MACDataLen(0x61).
•The data flash write will execute when the MACDataSum() and MACDataLen() are written in order
(word write) and are verified to be correct.
Chapter 12
SLUUBH1C–August 2016–Revised March 2018
Data Flash
12.1.2 Read from DF Example
•Write 0x00 0x40 (DF address in little endian format) to ManufacturerAccessControl(0x3E, 0x3F).
•Read ManufacturerAccessControl(0x3E, 0x3F) to verify.
•Read data from MACData(0x40–0x5F).
•Read checksum and length from MACDataSum(0x60), MACDataLen().
•Verify checksum. All data above can be read in a single transaction by reading 36 bytes starting at
ManufacturerAccessControl().
12.1.3 Auto-Increment Reading
To support faster data flash dumps, the 0x4000–0x43FF commands will auto-increment after a successful
read. This enables the host to skip the write word step, which increases throughput by at least 2x. After a
word read of the MACDataSum() and MACDataLen() registers is detected, the gauge adds the current
block size to the command (32 bytes). There is no auto-increment for the last block of DF.
12.2 Access Modes
As shown in Table 12-1, the bq35100 device provides three security modes that control data flash access
permissions: FULL ACCESS, UNSEALED, and SEALED.
PUBLIC ACCESS refers to those data flash locations specified in Data Flash Summary that are
accessible to the user.
PRIVATE ACCESS refers to reserved data flash locations used by the device system.
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 MODEDF—PUBLIC ACCESSDF—PRIVATE ACCESS
BOOTROMN/AN/A
FULL ACCESSR/WR/W
UNSEALEDR/WR/W
SEALEDRN/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.
www.ti.com
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 ManufacturerData.
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().
LTFlashTemperature0x424EMin GaugeI2–12812720°C
System DataManufacturer Data0x4036Manufacturer Info Block A01H10x00xFF0x0Hex
System DataManufacturer Data0x4037Manufacturer Info Block A02H10x00xFF0x0Hex
System DataManufacturer Data0x4038Manufacturer Info Block A03H10x00xFF0x0Hex
System DataManufacturer Data0x4039Manufacturer Info Block A04H10x00xFF0x0Hex
System DataManufacturer Data0x403AManufacturer Info Block A05H10x00xFF0x0Hex
System DataManufacturer Data0x403BManufacturer Info Block A06H10x00xFF0x0Hex
System DataManufacturer Data0x403CManufacturer Info Block A07H10x00xFF0x0Hex
System DataManufacturer Data0x403DManufacturer Info Block A08H10x00xFF0x0Hex
System DataManufacturer Data0x403EManufacturer Info Block A09H10x00xFF0x0Hex
System DataManufacturer Data0x403FManufacturer Info Block A10H10x00xFF0x0Hex
System DataManufacturer Data0x4040Manufacturer Info Block A11H10x00xFF0x0Hex
System DataManufacturer Data0x4041Manufacturer Info Block A12H10x00xFF0x0Hex
System DataManufacturer Data0x4042Manufacturer Info Block A13H10x00xFF0x0Hex
System DataManufacturer Data0x4043Manufacturer Info Block A14H10x00xFF0x0Hex
System DataManufacturer Data0x4044Manufacturer Info Block A15H10x00xFF0x0Hex
System DataManufacturer Data0x4045Manufacturer Info Block A16H10x00xFF0x0Hex
System DataManufacturer Data0x4046Manufacturer Info Block A17H10x00xFF0x0Hex
System DataManufacturer Data0x4047Manufacturer Info Block A18H10x00xFF0x0Hex
System DataManufacturer Data0x4048Manufacturer Info Block A19H10x00xFF0x0Hex
System DataManufacturer Data0x4049Manufacturer Info Block A20H10x00xFF0x0Hex
System DataManufacturer Data0x404AManufacturer Info Block A21H10x00xFF0x0Hex
System DataManufacturer Data0x404BManufacturer Info Block A22H10x00xFF0x0Hex
System DataManufacturer Data0x404CManufacturer Info Block A23H10x00xFF0x0Hex
System DataManufacturer Data0x404DManufacturer Info Block A24H10x00xFF0x0Hex
System DataManufacturer Data0x404EManufacturer Info Block A25H10x00xFF0x0Hex
System DataManufacturer Data0x404FManufacturer Info Block A26H10x00xFF0x0Hex
System DataManufacturer Data0x4050Manufacturer Info Block A27H10x00xFF0x0Hex
System DataManufacturer Data0x4051Manufacturer Info Block A28H10x00xFF0x0Hex
System DataManufacturer Data0x4052Manufacturer Info Block A29H10x00xFF0x0Hex
System DataManufacturer Data0x4053Manufacturer Info Block A30H10x00xFF0x0Hex
System DataManufacturer Data0x4054Manufacturer Info Block A31H10x00xFF0x0Hex
System DataManufacturer Data0x4055Manufacturer Info Block A32H10x00xFF0x0Hex
Gas GaugingDesign0x41FECell Design Capacity mAhI20327672200mAh
Gas GaugingDesign0x4202Cell Design VoltageI20327673700mV
Gas GaugingDesign0x4204Cell Terminate VoltageI20327672000mV
Ra TablesRa0 Table0x4175Ra 0I20327671126
Ra TablesRa0 Table0x4177Ra 1I20327671197
Ra TablesRa0 Table0x4179Ra 2I20327671186
Ra TablesRa0 Table0x417BRa 3I20327671110
Ra TablesRa0 Table0x417DRa 4I20327671157
Ra TablesRa0 Table0x417FRa 5I20327671058
Ra TablesRa0 Table0x4181Ra 6I20327671121
Ra TablesRa0 Table0x4183Ra 7I20327671501
Ra TablesRa0 Table0x4185Ra 8I20327671646
Ra TablesRa0 Table0x4187Ra 9I20327671749
Ra TablesRa0 Table0x4189Ra 10I20327672898
Ra TablesRa0 Table0x418BRa 11I20327675888
Ra TablesRa0 Table0x418DRa 12I203276713825
Ra TablesRa0 Table0x418FRa 13I203276718933
Ra TablesRa0 Table0x4191Ra 14I202643026303
EOSDataValues0x4255R Data SecondsI20500015Num
EOSDataValues0x4257R Table ScaleI2–1–1–1Num
EOSDataValues0x4259New Batt R Scale DelayU102552Num
EOSDataValues0x425AR Table Scale Update FlagH10x000xFF0xFFHex
EOSDataValues0x425BR Short Trend FilterU11255251Num
EOSDataValues0x425CR Long Trend FilterU11255253Num
EOSDataValues0x425DEOS Trend Detection %U1110020Num
S ADDR[6:0]0 ACMD[7:0]ADATA[7:0]A PSADDR[6:0]1 ADATA[7:0]N P
S
ADDR[6:0]
0 A
CMD[7:0]
A Sr
ADDR[6:0]1 ADATA[7:0]
N P
SADDR[6:0]0 ACMD[7:0]
A Sr
ADDR[6:0]
1 A
DATA[7:0]
A
. . .
DATA[7:0]
N P
(d) incremental read
c) 1-byte read
(a) 1-byte write
(b) quick read
Host GeneratedFuel Gauge Generated
(
14.1 I2C Interface
The gas gauge supports the standard I2C read, incremental read, one-byte write quick read, and functions.
The 7-bit device address (ADDR) is the most significant 7 bits of the hex address and is fixed as 1010101.
The 8-bit device address is therefore 0xAA or 0xAB for write or read, respectively.
The supported I2C formats are (a) 1-byte write, (b) quick read, (c) 1-byte read, and (d) incremental read.
Diagram Key: S = Start, Sr = Repeated Start, A = Acknowledge, N = No Acknowledge, and P = Stop
Chapter 14
SLUUBH1C–August 2016–Revised March 2018
Communications
Figure 14-1. Supported I2C Formats
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
device 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 2-byte commands that require two
bytes of data).
Attempt to write a read-only address (NACK after data sent by master):
Attempt to read an address above 0x7F (NACK command):
Attempt at incremental writes (NACK all extra data bytes sent):
Incremental read at the maximum allowed read address:
48
were holding the lines, releasing them frees the master to drive the lines.
Examples of generic I2C transactions can be found in the Using I2C Communication with the bq275xx
Series of Fuel Gauges Application Report (SLUA467).
The I2C engine releases both SDA and SCL if the I2C bus is held low for Bus Low Time. If the gas gauge
Submit Documentation Feedback
www.ti.com
Revision History
Revision History
NOTE: Page numbers for previous revisions may differ from page numbers in the current version.
Changes from B Revision (October 2016) to C Revision ............................................................................................... Page
•Changed Data Command Summary .................................................................................................. 34
Changes from Original (August 2016) to A Revision ..................................................................................................... Page
•Deleted the command DF_VERSION throughout the document ................................................................... 5
IMPORTANT NOTICE FOR TI DESIGN INFORMATION AND RESOURCES
Texas Instruments Incorporated (‘TI”) technical, application or other design advice, services or information, including, but not limited to,
reference designs and materials relating to evaluation modules, (collectively, “TI Resources”) are intended to assist designers who are
developing applications that incorporate TI products; by downloading, accessing or using any particular TI Resource in any way, you
(individually or, if you are acting on behalf of a company, your company) agree to use it solely for this purpose and subject to the terms of
this Notice.
TI’s provision of TI Resources does not expand or otherwise alter TI’s applicable published warranties or warranty disclaimers for TI
products, and no additional obligations or liabilities arise from TI providing such TI Resources. TI reserves the right to make corrections,
enhancements, improvements and other changes to its TI Resources.
You understand and agree that you remain responsible for using your independent analysis, evaluation and judgment in designing your
applications and that you have full and exclusive responsibility to assure the safety of your applications and compliance of your applications
(and of all TI products used in or for your applications) with all applicable regulations, laws and other applicable requirements. You
represent that, with respect to your applications, you have all the necessary expertise to create and implement safeguards that (1)
anticipate dangerous consequences of failures, (2) monitor failures and their consequences, and (3) lessen the likelihood of failures that
might cause harm and take appropriate actions. You agree that prior to using or distributing any applications that include TI products, you
will thoroughly test such applications and the functionality of such TI products as used in such applications. TI has not conducted any
testing other than that specifically described in the published documentation for a particular TI Resource.
You are authorized to use, copy and modify any individual TI Resource only in connection with the development of applications that include
the TI product(s) identified in such TI Resource. NO OTHER LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE TO
ANY OTHER TI INTELLECTUAL PROPERTY RIGHT, AND NO LICENSE TO ANY TECHNOLOGY OR INTELLECTUAL PROPERTY
RIGHT OF TI OR ANY THIRD PARTY IS GRANTED HEREIN, including but not limited to any patent right, copyright, mask work right, or
other intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information
regarding or referencing third-party products or services does not constitute a license to use such products or services, or a warranty or
endorsement thereof. Use of TI Resources may require a license from a third party under the patents or other intellectual property of the
third party, or a license from TI under the patents or other intellectual property of TI.
TI RESOURCES ARE PROVIDED “AS IS” AND WITH ALL FAULTS. TI DISCLAIMS ALL OTHER WARRANTIES OR
REPRESENTATIONS, EXPRESS OR IMPLIED, REGARDING TI RESOURCES OR USE THEREOF, INCLUDING BUT NOT LIMITED TO
ACCURACY OR COMPLETENESS, TITLE, ANY EPIDEMIC FAILURE WARRANTY AND ANY IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL
PROPERTY RIGHTS.
TI SHALL NOT BE LIABLE FOR AND SHALL NOT DEFEND OR INDEMNIFY YOU AGAINST ANY CLAIM, INCLUDING BUT NOT
LIMITED TO ANY INFRINGEMENT CLAIM THAT RELATES TO OR IS BASED ON ANY COMBINATION OF PRODUCTS EVEN IF
DESCRIBED IN TI RESOURCES OR OTHERWISE. IN NO EVENT SHALL TI BE LIABLE FOR ANY ACTUAL, DIRECT, SPECIAL,
COLLATERAL, INDIRECT, PUNITIVE, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES IN CONNECTION WITH OR
ARISING OUT OF TI RESOURCES OR USE THEREOF, AND REGARDLESS OF WHETHER TI HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
You agree to fully indemnify TI and its representatives against any damages, costs, losses, and/or liabilities arising out of your noncompliance with the terms and provisions of this Notice.
This Notice applies to TI Resources. Additional terms apply to the use and purchase of certain types of materials, TI products and services.
These include; without limitation, TI’s standard terms for semiconductor products http://www.ti.com/sc/docs/stdterms.htm), evaluation
modules, and samples (http://www.ti.com/sc/docs/sampterms.htm).