This manual discusses the modules and peripherals of the automotive-qualified AEC-Q100, Grade 3
bq34210-Q1 fuel gauge, and how each is used to build a complete battery pack fuel gauge solution. For
further information, refer to the bq34210-Q1 Automotive 1-Series Cell System-Side CEDV Fuel Gauge forRarely Discharged Batteries Data Sheet (SLUSCG1).
Formatting in This Document
The following formatting convention is used in this document:
•SBS commands: italics with parentheses and no breaking spaces; for example, RemainingCapacity()
•Data memory: italics, bold, and breaking spaces; for example, Design Capacity
•Register bits and flags: italics and brackets; for example, [TDA]
•Data memory bits: italics and bold; for example, [LED1]
•Modes and states: ALL CAPITALS; for example, UNSEALED
Trademarks
MathCAD is a trademark of MathSoft, Inc.
All other trademarks are the property of their respective owners.
Read This First
SLUUBE8–September 2018
Preface
Glossary
http://www.ti.com provides a Battery Glossary on the Battery Management FAQ page and the TI Glossary.
Related Documentation from Texas Instruments
To obtain a copy of any of the following TI documents, click on the links below:
The bq34210-Q1 fuel gauge incorporates gas gauging and an End-of-Service (EOS) Determination
function to use with a 1-series Li-Ion or Lithium Iron Phosphate (LiFePO4) rechargeable cell or a Nickel
metal hydride (NiMH) based pack with a configuration of 3-series cells.
The gas gauge uses Compensated End-of-Discharge Voltage (CEDV) gauging technology to accurately
predict the battery capacity and other operational characteristics of the battery. It can be interrogated by a
system processor to provide cell information, such as remaining capacity, full charge capacity (FCC), timeto-empty (TTE), and relative state-of-charge (RSOC), and provide an interrupt signal to the processor.
The integrated EOS Determination function is specifically intended for applications where the battery is
rarely discharged, such as eCall systems, uninterruptible power supplies (UPS), enterprise server backup
systems, and telematics or telecommunications backup modules. In such systems, the battery may remain
in a fully (or near fully) charged state for much of its lifetime, with it rarely or never undergoing a significant
discharge. If the health of the battery in such a system is not monitored regularly, then it may degrade
beyond the level required for a system backup/discharge event, and thus fail precisely at the time when it
is needed most. Monitoring the battery enables the system to take action before the failure occurs.
The EOS Determination function monitors the health of the battery by using infrequent learning phases,
which involve a controlled discharge of ~1% capacity, and provides an alert to the system when the
battery is approaching the end of its usable service. By coordinating battery charging with the learning
phases, the battery capacity available to the system can be maintained above a preselected level to avoid
compromising the ability for the battery to support a system discharge event.
Information is accessed through a series of commands, called Data Commands, and indicated by the
general format Command(). Read and write information within the device control and status registers, as
well as its data memory locations are accessed through these commands. Commands are sent from the
system to the gauge using the I2C serial communications engine, and can be run during application
development, system manufacturing, or end-equipment operation.
The fuel gauge measures charge and discharge activity by monitoring the voltage across a small-value
series sense resistor (5 mΩ to 20 mΩ, typical), which may be used in a low-side (at the CELL- connection)
or a high-side (at the CELL+ connection) configuration.
The external temperature sensing is optimized with the use of a high-accuracy negative temperature
coefficient (NTC) thermistor with 25°C resistance (R25) = 10.0 kΩ ±1% and beta value (B25/85, resistance
at 25°C and at 85°C) = 3435 kΩ ± 1% (such as Semitec NTC 103AT). Alternatively, the fuel gauge can be
configured to use its internal temperature sensor or receive temperature data from the host processor.
The fuel gauge uses temperature to monitor the battery-pack environment, which is used for gas gauging
and cell protection functionality.
To minimize power consumption, the fuel gauge has several power modes: INITIALIZATION, NORMAL,
SLEEP, and SHUTDOWN. The fuel gauge passes automatically between these modes (except for
SHUTDOWN exit, which needs an external stimulus), depending upon the occurrence of specific events,
though a system processor can initiate some of these modes directly. The device also includes a CONFIG
UPDATE mode, which is generally used during initial setup to update various RAM-based parameters
used by the gauge.
1.1Gas Gauging
The bq34210-Q1 device features the Compensated End-of-Discharge Voltage (CEDV) gauging algorithm,
capable of gauging a maximum capacity of 32 Ah.
Figure 1-1 shows the operational overview of the bq34210-Q1 fuel gauge.
The bq34210-Q1 device accumulates the measured quantities of charge and discharge and estimates
self-discharge of the battery. The bq34210-Q1 device compensates the charge current measurement for
temperature and the state-of-charge of the battery. The device also adjusts the self-discharge estimation
based on temperature. The initial battery state-of-charge estimation on first insertion of the battery pack in
the system may display a factor of the true value; the system must go through a full charge and then a full
discharge cycle before the correct full-charge capacity (FCC) is estimated.
The main charge counter, RemainingCapacity() (RC) register, represents the available capacity or energy
in the battery at any given time. The bq34210-Q1 device adjusts RC for charge, self-discharge, and other
compensation factors. The information in the RC register is accessible through the I2C interface. The
FullChargeCapacity() (FCC) register represents the initial or last measured full discharge of the battery. It
is used as the battery full-charge reference for relative capacity indication. FCC is accessible through the
I2C interface.
1.1.2 Main Fuel Gauge Registers
Remaining Capacity (RC) — Remaining capacity in the battery
Figure 1-1. bq34210-Q1 CEDV Gas Gauging Operational Overview
RC represents the remaining capacity in the battery. The bq34210-Q1 device computes RC in units
of mAh.
RC counts up during charge to a maximum value of FCC and down during discharge and selfdischarge to a minimum of 0. In addition to charge and self-discharge compensation, the bq34210Q1 device calibrates RC at three low-battery-voltage thresholds, EDV2, EDV1, and EDV0. This
provides a voltage-based calibration to the RC counter.
8
Design Capacity (DC) — User-specified battery full capacity
DC is the user-specified battery full capacity. It is calculated from Design Capacity mAh and is
represented in units of mAh. It also represents the full-battery reference for the absolute display
mode.
Full Charge Capacity (FCC) — Last measured discharge capacity of the battery
FCC is the last measured discharge capacity of the battery. It is represented in units of mAh. On
initialization, the bq34210-Q1 device sets FullChargeCapacity() to the data memory value stored in
Full Charge Capacity (FCC). During subsequent discharges, the bq34210-Q1 device updates
FullChargeCapacity() with the last measured discharge capacity of the battery. Once updated, thebq34210-Q1 device writes the new FullChargeCapacity() value to data memory in mAh to Learned
Full Charge Capacity. FullChargeCapacity() represents the full battery reference for the relative
display mode and relative state-of-charge calculations.
1.1.3 Capacity Learning (FCC Update)
An FCC update occurs if the battery discharges from RC ≥ FCC – Near Full to the EDV2 voltage
threshold with the following conditions:
•No valid charge activity occurs during the discharge period. A valid charge is defined as a charge of
10 mAh into the battery.
•No more than 256 mAh of self-discharge or battery load estimation occurs during the discharge period.
•The temperature does not drop below the low temperature thresholds programmed in Low Temp
during the discharge period.
•The battery voltage reaches the EDV2 threshold during the discharge period and the voltage is greater
than or equal to the EDV2 threshold minus 256 mV when the bq34210-Q1 device detected EDV2.
•Current remains ≥ 3C/32 when EDV2 is reached.
•No overload condition exists when EDV2 threshold is reached or if RC has dropped to
Battery Low % × FCC.
The bq34210-Q1 device sets [VDQ] = 1 in OperationStatus() when a discharge begins. The bq34210-Q1
device sets [VDQ] = 0 if any disqualifying condition occurs. One complication may arise regarding the
state of [VDQ] if [CSYNC] is set in CEDV Gauging Configuration. When [CSYNC] is enabled,
RemainingCapacity() is written to equal FullChargeCapacity() on valid primary charge termination. This
capacity synchronization is done even if the condition RC ≥ FCC – Near Full is not satisfied at charge
termination.
FCC cannot be reduced by more than 256 mAh or increased by more than 512 mAh during any single
update cycle. If [FCC_LIMIT] is set in CEDV Gauging Configuration, then FCC cannot learn above the
Design Capacity mAh. The bq34210-Q1 device saves the new FCC value to the data memory within 4 s
of being updated.
Gas Gauging
1.1.4 End-of-Discharge (EDV) Thresholds and Capacity Correction
The bq34210-Q1 device monitors the battery for three low-voltage thresholds: EDV0, EDV1, and EDV2.
If the [EDV_CMP] bit in CEDV Gauging Configuration is clear, fixed EDV thresholds may be
programmed in Fixed EDV0, Fixed EDV1, and Fixed EDV2 in mV.
If the [EDV_CMP] bit in CEDV Gauging Configuration is set, automatic EDV compensation is enabled
and the bq34210-Q1 device computes the EDV0, EDV1, and EDV2 thresholds based on values stored in
the selected CEDV profile in data memory and the battery's current discharge rate and temperature. If the
[FIXED_EDV0] bit in CEDV Gauging Configuration is also set, then the EDV0 threshold will be set to the
programmed Fixed EDV0, and the EDV1 and EDV2 compensated thresholds will not go below the
programmed Fixed EDV0.
The bq34210-Q1 device disables EDV detection if current exceeds the Overload Current threshold. The
bq34210-Q1 device resumes EDV threshold detection after current drops below the Overload Current
threshold. Any EDV threshold detected is reset after charge is applied and [VDQ] is cleared after 10 mAh
of charge.
The bq34210-Q1 device uses the EDV thresholds to apply voltage-based corrections to the RC register
(see Table 1-1).
The bq34210-Q1 device performs EDV-based RC adjustments with current ≥ C/32. No EDVs are set if
current < C/32. The bq34210-Q1 device adjusts RC as it detects each threshold. If the voltage threshold is
reached before the corresponding capacity on discharge, the bq34210-Q1 device reduces RC to the
appropriate amount, as shown in Table 1-1.
If an RC % level is reached on discharge before the voltage reaches the corresponding threshold, then
RC is held at that % level until the threshold is reached. RC is only held if [VDQ] = 1, indicating a valid
learning cycle is in progress. If Battery Low % is set to 0, EDV1 and EDV0 corrections are disabled.
1.1.5 EDV Discharge Rate and Temperature Compensation
If EDV compensation is enabled, the bq34210-Q1 device calculates battery voltage to determine EDV0,
EDV1, and EDV2 thresholds as a function of battery capacity, temperature, and discharge load. The
general equation for EDV0, EDV1, and EDV2 calculation is as follows:
EDV0,1,2 = n (EMF × FBL – |I
•EMF is a no-load cell voltage higher than the highest cell EDV threshold computed. EMF is
programmed in mV in the CEDV profile EMF.
•I
is the current discharge load magnitude.
LOAD
•n = the number of series cells. In the bq34210-Q1 case, n = 1.
•FBL is the factor that adjusts the EDV voltage for battery capacity and temperature to match the noload characteristics of the battery.
FBL = f (C0, C + C1, T)(2)
•C (either 0%, 3%, or Battery Low % for EDV0, EDV1, and EDV2, respectively) and C0 are the
capacity-related EDV adjustment factors. C0 is programmed in the CEDV profile C0. C1 is the desired
residual battery capacity remaining at EDV0 (RC = 0). The C1 factor is stored in the CEDV profile C1.
•T is the current temperature in °K.
•R0 × FTZ represents the resistance of a cell as a function of temperature and capacity.
FTZ = f (R1, T0, C + C1, TC)(3)
•R0 is the first order rate dependency factor stored in the CEDV profile R0.
•T is the current temperature; C is the battery capacity relating to EDV0, EDV1, and EDV2.
•R1 adjusts the variation of impedance with battery capacity. R1 is programmed in the CEDV profile R1.
•T0 adjusts the variation of impedance with battery temperature. T0 is programmed in the CEDV profile
T0.
•TC adjusts the variation of impedance for cold temperatures (T < 23°C). TC is programmed in the
CEDV profile TC.
The graphs below show the calculated EDV0, EDV1, and EDV2 thresholds versus capacity using the
typical compensation values for different temperatures and loads for a Li-Ion 18650 cell. The
compensation values vary widely for different cell types and manufacturers and must be matched exactly
to the unique characteristics for optimal performance.
Figure 1-2. (a) EDV Calculations vs Capacity for Various Temperatures, (b) EDV Calculations vs Capacity
for Various Loads
1.1.6 EDV Age Factor
The EDV Age Factor enables the bq34210-Q1 device to correct the EDV detection algorithm to
compensate for cell aging. This parameter scales cell impedances as the cycle count increases. This new
factor is used to accommodate for much higher impedances observed in larger capacity and/or aged cells.
For most applications, the default value of 0 is sufficient; however, for some very specific applications, this
new aging factor may be required. In those cases, experimental data must be taken at the 0, 100, 200,
and 300 cycle-read points using a typical discharge rate while at ambient temperature. Entering this data
into a TI provided MathCAD™ program will yield the appropriate EDV Age factor value. Contact TI
Applications Support @ http://www-k.ext.ti.com/sc/technical-support/email-tech-support.asp?AAP for more
detailed information.
1.1.7 Self-Discharge
The bq34210-Q1 device estimates the self-discharge of the battery to maintain an accurate measure of
the battery capacity during periods of inactivity. The bq34210-Q1 device makes self-discharge
adjustments to RC every 1/4 second when awake and periodically when in SLEEP mode. The period is
determined by Sleep Current Time.
The nominal self-discharge rate, %PERDAY (% per day), is programmed in an 8-bit value Self-DischargeRate by the following relation:
Self-Discharge Rate = %PERDAY/0.0025
1.1.8 Battery Electronic Load Compensation
The bq34210-Q1 device can be configured to compensate for a constant load (as from battery electronics)
present in the battery pack at all times. The bq34210-Q1 device applies the compensation continuously
when the charge or discharge is below the digital filter. The bq34210-Q1 device applies the compensation
in addition to self-discharge. The compensation occurs at a rate determined by the value stored in
Electronics Load. The compensation range is 0 μA–765 μA in steps of approximately 3 µA.
The amount of internal battery electronics load estimate in μA, BEL, is stored as follows:
Electronics Load = BEL/3
The bq34210-Q1 device estimates the initial capacity of a battery pack at device reset, which is the case
when battery cells are first attached to the application circuit. The initial FullChargeCapacity() (FCC) is a
direct copy of the ROM CEDV profile parameter Full Charge Capacity. The initial RC and RSOC are
estimated using the open-circuit voltage (OCV) characteristics of the programmed Li-Ion (LiFePO4 or
NiMH) chemistry, DOD at EDV2, and Design Capacity (maximum chemical capacity). This gives a
reasonably accurate RC and RSOC; however, battery capacity learning is required in order to find the
accurate FCC, RC, and RSOC. During battery capacity learning, learned Full Charge Capacity, and DOD
at EDV2 will be learned and updated.
The determined value of remaining capacity can be further scaled, if needed, through the value of
RemCap Init Percent. Upon a reset, the final value of RemainingCapacity() is initialized from the
RemCap Init Percent value of the initial value correlated to the battery voltage table.
1.1.10 Fuel Gauge Operating Modes
Entry and exit of each mode is controlled by data memory parameters in the Current Thresholds
subclass. The [DSG] flag referenced below is from the MAC GaugingStatus() subcommand and is set in
RELAXATION and DISCHARGE modes. The [DSG] flag in BatteryStatus() is slightly different—it sets only
in DISCHARGE mode and not in RELAXATION mode.
CHARGE mode is exited and RELAXATION mode is entered when Current() goes below Quit Current for
a period of Charge Relax Time. DISCHARGE mode is entered when Current() goes below
(–)Dsg Current Threshold. DISCHARGE mode is exited and RELAXATION mode is entered when
Current() goes above (–)Quit Current threshold for a period of Discharge Relax Time. CHARGE mode is
entered when Current() goes above Chg Current Threshold.
The bq34210-Q1 device has the ability to smooth the RemainingCapacity() during discharge in order to
avoid a drop in RelativeStateOfCharge() when the EDV thresholds are reached. This feature is enabled by
setting the Smoothing Config [SMEN] = 1 and configuring the Smoothing Start Voltage and
Smoothing Delta Voltage.
The smoothing will activate only when all of the following conditions are true:
•Current() < 0
•Voltage() < Smoothing Start Voltage
•EDV2 has been reached ([EDV2] = 1) OR (Voltage() – present EDV2 threshold) < Smoothing DeltaVoltage.
•Maximum Voltage() during the previous one minute is less than the maximum Voltage() during the
current minute (that is, "drop rate" is greater than 0).
•RemainingCapacity() is greater than the capacity at the next EDV point.
While smoothing is active, the "drop rate" is used to estimate the time to the EDV point under the
assumption that the rate is constant (linear). This information is then used to estimate how much current
would need to be applied in order to have RemainingCapacity() reach the expected capacity at the EDV
point. The actual Current() is then scaled by the "smoothing current." This will either speed up or slow
down the RemainingCapacity() accumulation to reach the EDV threshold at the correct time.
Whenever the RemainingCapacity() accumulation is actively scaled, the OperationStatus()[SMTH] bit will
be set.
Smoothing deactivates whenever an EDV threshold is reached until the rate to the next EDV threshold
can be calculated; however, smoothing past the EDV2 point only occurs if Smoothing Config [SMEXT] is
set to 1.
To improve smoothing at the end of discharge, the SME0 configuration bit provides additional flexibility.
This is particularly useful when FIXED_EDV0 is set and the calculated EDV2/EDV1 is lower than EDV0. In
this scenario, the State-of-Charge (SOC) smooths to EDV2, then to EDV1, and then to EDV0, leading to
SOC jumps. If the SME0 bit is set, then the SOC smooths directly to EDV0, leading to a smooth transition
to empty.
Table 1-2 shows the available smoothing configurations.
Gas Gauging
Smoothing Config
[SMEN]
000No Smoothing
001No Smoothing
010No Smoothing
011No Smoothing
100Smoothing to EDV2
101Smoothing to EDV0 if calculated EDV2/EDV1 is less than EDV0.
110Smoothing to EDV2 ≥ EDV1 ≥ EDV0
111Smoothing to EDV0 if calculated EDV2/EDV1 is less than EDV0.
Smoothing Config
The bq34210-Q1 device can also add smoothing during charging. In situations when the FCC is not
updated during a discharge cycle or on a subsequent charge cycle, if the valid charge termination is
reached, RSOC is synced to 100% regardless of the true RSOC. To help in scenarios like these, the
device enables the SMOOTHEOC_EN bit (default is enabled). When enabled, the RSOC value is
gradually increased to 100% instead of a sudden jump if the following are true:
a. Battery is charging.
b. Cell Voltage > Taper Voltage
c. Charge Current is decreasing AND is below the EOC Smooth Current threshold for EOC Smooth
The bq34210-Q1 device integrates an Accumulated Charge function that measures the integrated
charge passed in or out of the cell since the integration is reset. This function can be used to generate an
alert to the host when a programmable threshold of Accumulated Charge is achieved.
The device also integrates the elapsed time since the integration began, assuming the timer was not
interrupted by a power cycle or put into SHUTDOWN mode. This time is read using the command
AccumulatedTime(). If an event has occurred that interrupted the timer, the value of AccumulatedTime()
will be fixed unchanging at 0 until the integration is reset.
The charge and time integration is reset at full charge termination or upon issue of the ACCUM_RESET
command. While the battery is discharging (that is, the measured Current() is negative), then the charge
integration counter increases. If the battery starts charging (that is, the measured Current() is positive),
then the charge integration counter decreases. The integrated charge value in mAh can be read by the
host using the command AccumulatedCharge(). The elapsed time (which does not decrease in value) is
read by issuing the AccumulatedTime() command.
The Accumulated Charge calculation uses the current measured across the sense resistor and, similar to
the coulomb counter integration, ignores currents below a programmed level controlled by CC Deadband.
In periods when the bq34210-Q1 device is in SLEEP mode, the Accumulated Charge integration
includes an estimate of the charge integrated based on analysis of the periodic measured current.
If the user prefers to include cell self-discharge in the integration, this capability can be enabled or
disabled using the [IGNORE_SD_EN] configuration bit.
The charge integration can also be limited to only include positive (charging) currents, only negative
(discharging) currents, or both, through setting the [ACCHG_EN] and [ACDSG_EN] configuration bits. If
both [ACCHG_EN] and [ACDSG_EN] are reset, then the timer is halted. These bits can be set using the
ACCUM_CHG_EN() and ACCUM_DSG_EN() commands.
When the cell is fully charged and the FC bit is set due to normal charge termination, then the integration
counter is again reset. At this point, the values of Accumulated Charge and time just before reset are
stored and can be read using LastAccumulatedCharge() and LastAccumulatedTime(). The values stored
in LastAccumulatedCharge() and LastAccumulatedTime() are cleared each time the command is issued
and the respective value is read. They are also overwritten whenever the integration counter is reset
again. The user can set thresholds to alert the host when AccumulatedCharge() reaches a particular level
in both the charge (positive) and discharge (negative) directions. These thresholds are set by AccumCharge Positive Threshold and Accum Charge Negative Threshold.
www.ti.com
Due to the charge integration and timer information being stored in RAM, any the device's power cycles or
putting the device into SHUTDOWN will result in the loss of AccumulatedCharge(), AccumulatedTime(),
LastAccumulatedCharge(), and LastAccumulatedTime() data.
AccumulatedCharge()RSigned integer, 2 bytes–32767327670mAh
LastAccumulatedCharge()RSigned integer, 2 bytes–32767327670mAh
AccumulatedTime()RUnsigned integer, 2 bytes06553505 min
LastAccumulatedTime()RUnsigned integer, 2 bytes06553505 min
ACCUM_RESETWBooleanNANANA
14
General Description
NOTE: AccumulatedCharge() does not reset when a threshold is reached: The reset should be
initiated by the host using ACCUM_RESET. When a threshold is passed, a flag is set in
OperationStatus()[ACTHR].
It is possible for the integration counter to be reset at normal charge termination, but the
charger continues charging the battery for additional time until the charger ceases charging.
In this case, the integration counter would reset, then proceed to integrate this additional
charge. The user should be aware of this possibility and if it is a concern to plan for a
workaround, such as programming the integration to only accumulate discharging currents or
to detect when the charger stops charging, then issue an ACCUM_RESET command to
clear any residual charging integration.
The bq34210-Q1 device incorporates the End-of-Service (EOS) Determination function to determine the
end of useful service of the battery and to provide alerts based on this detection. Learning phases are
used to gather information about the present state of the battery through its cell resistance. Learning
cycles are coordinated by the bq34210-Q1 device with the host, which enables and disables the learning
load. LEN or LLEN is used to denote the Learning Load Enable function. The EOS Determination function
is enabled when [EOS_EN] in ManufacturingStatus() = 1. This bit can be toggled using the EOS_EN()
subcommand. The ManufacturingStatus[EOS_EN] bit should not be written directly during CONFIG
UPDATE mode, but instead should be done via the EOS_EN() subcommand. If the [EOS_EN] bit or other
data memory values related to this function are changed directly in data memory, they will not take effect
until a device reset is issued.
For best results, it is recommended that JEITA-based charging is not enabled when the EOS
Determination feature is used.
There are two ways to initiate a learning phase:
a. To have it automatically controlled by the device (recommended) based on when the internal Auto
Learn Time timer has expired since the last successful learning phase OR
b. To have it triggered by the host by writing a ManufacturerAccessControl() EOS_START_LEARN()
subcommand to the device.
Automatic learning is disabled if Auto Learn Time = 0. There is also a special test mode, which is entered
using the [LTEST] bit and sets several timers to short time durations.
The learning phase can be implemented in two ways, which are controlled by the [LSM] bit:
a. CHARGE-BEFORE-DISCHARGE: The system begins a Learn Charge Phase where it enables
charging to a voltage given by the charging voltage determined by the selected algorithm (JEITA, for
example) incremented by Learn Charge Voltage Delta. This increases charging from the level used
when not in a learning phase.
End-Of-Service Determination
NOTE: The data memory value of Last Charge Voltage Tx - Ty is not increased due to this Learn
Charge Phase.
After this charging is completed through normal charge termination, the device waits for the cell to
relax. It then initiates a Learn Discharge Phase, whereby an intended Learn Discharge Current is
enabled for a length of time given by Learn Discharge Time. When this time has expired, the device
disables the Learn Discharge Current. The bq34210-Q1 device analyzes the response of the battery
to this discharge current to estimate the status of the battery regarding its end of usable service.
If needed, the host continues discharging the battery until Voltage() reaches the appropriate voltage,
as determined by the charging algorithm selected, OR
b. DISCHARGE-BEFORE-CHARGE: The device begins by ensuring it is in a RELAXED state (typically
fully or near-fully charged).
The device begins a Learn Discharge Phase by enabling Learn Discharge Current for a length of
time given by Learn Discharge Time. When this time has expired, the device disables the LearnDischarge Current.
The device can now be recharged to the appropriate voltage, as determined by the charging algorithm
selected, if needed.
NOTE: The learning discharge current value is set by external components and is not directly
controlled by the bq34210-Q1 device. However, this current is monitored throughout the
Learn Discharge Phase and evaluated to ensure it is close to the intended value.
The CHARGE-BEFORE-DISCHARGE approach described above in (a) is appealing in that the battery
voltage is not discharged below the appropriate charging voltage level by the learning phase. However, it
requires the use of a charger with programmable charging voltage, which may be a limitation in some
systems. For those cases, the DISCHARGE-BEFORE-CHARGE approach in (b) is provided, whereby a
charger with a fixed output voltage can be used with the tradeoff that the battery voltage will be
discharged below this level during the Learn Discharge Phase. However, the amount of this reduction in
battery voltage, and thus capacity, can be controlled and limited to acceptable levels through appropriate
device settings.
The response of the battery to the learning discharge current is analyzed and used to estimate the cell
resistance, Rcell, and this resistance estimate is used in two different methods to evaluate the cell EOS
status:
a. Direct Resistance Decisioning (DRD): This method uses the newly measured value of Rcell and
computes the ratio of Rcell with that of an Initial Rcell captured when the battery was first put into
service. The ratios are compared to thresholds to generate an alert and a warning.
•Alert if (Rcell/Initial Rcell) > DRD Alert Level
•Warning if (Rcell/Initial Rcell) > DRD Warning Level
b. Resistance Slope Decisioning: This method uses the changes with respect to time of Rcell,
comparing this to programmable thresholds to generate an alert and a warning.
Use of Resistance Slope Decisioning (RSD) requires an accurate measurement of the time between
consecutive learning phases for calculation of the slope of Rcell change with respect to time. This will not
be possible if the device is powered off between learning phases; in which case, Direct Resistance
Decisioning (DRD) can still be used. If the device is programmed to use Resistance Slope Decisioning
and a power cycle is detected (or anything that could impact the validity of the time measurement between
learning phases), then the device defaults to only using Direct Resistance Decisioning until the device is
continuously powered long enough to complete multiple learning phases and accurately evaluate the
Rcell change over time.
www.ti.com
1.3.1 Alert Config Registers
The Alert registers are detailed in this section.
Alert_x Config RegisterMatching Register
Alert_0 ConfigBattery Status Low Byte
Alert_1 ConfigBattery Status High Byte
Alert_2 ConfigEOS Learn Status Low Byte
Alert_3 ConfigEOS Learn Status High Byte
Alert_4 ConfigEOS Status
Alert_5 ConfigEOS Safety Status Active Bits
Alert_6 ConfigOperation Status 2 bits
1.3.1.1Alert_0 Config
This register matches the Battery Status register low byte.
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
SLEEPCHGINHFDFCSETVTCATDACHGDSG
Default
00000000
Table 1-3. Alert Config Registers
Table 1-4. Alert_0 Config Register Bit Definitions
This register matches the EOS Safety Status register active bits. Bits 7:4 in the Alert_5 Config register
match the EOS Safety Status register's high byte, Bits 3:0. Bits 3:0 in the Alert_5 Config register match
the EOS Safety Status register's low byte, Bits 3:0.
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
RSVDRSDLWARN RSDWARNDRDWARNRSVD
Default
00000000
1 = Enabled
0 = Disabled (default)
1 = Enabled
0 = Disabled (default)
1 = Enabled
0 = Disabled (default)
1 = Enabled
0 = Disabled (default)
1 = Enabled
Table 1-9. Alert_5 Config Register Bit Definitions
0x00
RSDL
ALERT
www.ti.com
RSDALERT DRDALERT
RSVD = Reserved
RSDLWARN = Enables EOSSafetyStatus()[RSDLWARN]
RSDWARN = Enables EOSSafetyStatus()[RSDWARN]
DRDWARN = Enables EOSSafetyStatus()[DRDWARN]
RSVD = Reserved
RSDLALERT = Enables EOSSafetyStatus()[RSDLALERT]
RSDALERT = Enables EOSSafetyStatus()[RSDALERT]
DRDALERT = Enables EOSLearnStatus()[DRDALERT]
1.3.1.7Alert_6 Config
This register matches two bits from the Operation Status low byte.
Auto Learn Time = 10 min
Auto Learn Retry Time = 5 min
Alert-Warn Learn Time = 10 min
Minimum Learn Time = 10 min
0 = The device uses the values programmed in data memory for the above parameters
(default).
LVR = Learn Voltage Restore Control
This bit determines whether the device continues discharging during Learn Discharge Phase
until Voltage() reaches the appropriate Last Charge Voltage Tx - Ty (when set = 1), or to
simply stop discharge when the timer reaches Learn Discharge Time (when set = 0).
1 = The device continues Learn Discharge Phase until Voltage() reaches the appropriate
Last Charge Voltage Tx - Ty.
0 = The device stops Learn Discharge Phase when the timer reaches Learn Discharge
Time (default).
LSM = Learn Sequence Mode Control
This bit determines whether the EOS algorithm uses CHARGE-BEFORE-DISCHARGE or
DISCHARGE-BEFORE-CHARGE mode.
1 = DISCHARGE-BEFORE-CHARGE mode is used.
0 = CHARGE-BEFORE-DISCHARGE mode is used (default).
The device includes a variety of flags to provide visibility into the operation of the EOS Determination
Learning process. These are found in EOSLearnStatus(): 0x64 and 0x65.
The sequence of steps involved in a learning phase differs depending on the setting of [LSM]. These are
depicted in the following figures.
For manual control of learning phases, the ManufacturerAccessControl() subcommand
EOS_START_LEARN() is used. When the device receives this command, it sets the [LCMD] flag and
initiates the learning phase if conditions permit: for example, charger present, no charging or safety faults,
and the temperature is within acceptable limits. The [LDPAT] and [LFAULT] flags will be set if the Learning
Discharge Phase is attempted but temperature conditions do not permit it.
If the device is in periodic (automatic) learning mode, then the [LPER] bit will be set while the device is in
a learning phase.
EOS_ABORT_LEARN(): This ManufacturerAccessControl() subcommand is used to abort a learning
phase that is in progress. Use of this command during a learning phase results in a failed learning phase
and setting the [LABRT] flag, whereupon the device will retry another learning phase after a time period of
Auto Learn Retry Time.
When the device attempts to initiate a learning phase, but conditions do not permit this, then the device
will wait for Auto Learn Retry Time to again attempt a learning phase. Note that this will occur whether
the device is configured in periodic learning or learning is initiated through a host command.
If the case occurs where an alert or warning is detected, either through Direct Resistance Decisioning or
Resistance Slope Decisioning, the Alert-Warn Learn Time is used to schedule a new learning phase. If
multiple fault events must be detected before the alert or warning flags are set, and an stopped learning
phase occurs after the first alert or warning is detected, then Alert-Warn Learn Time is used to schedule
future Rcell measurements rather than Auto Learn Retry Time.
End-Of-Service Determination
NOTE: If [LTEST] is set, special values override the selected timer values to facilitate device
operation testing in a shorter time scale.
To avoid interruption to the EOS Determination measurements and calculations, automatic offset
calibration is not initiated during a learning phase. While it is possible for the host to manually initiate a
calibration event during a learning phase, it is recommended that the host avoid this.
NOTE:Alert-Warn Learn Time has priority over Auto Learn Retry Time, so if multiple
occurrences must be detected before an alert or warning is triggered, and after the first
occurrence is detected that a fault occurred that invalidated a following attempted learning
phase, the Alert-Warn Learn Time will be used to determine the time to the next learning
phase attempt. It should also be noted that if Alert-Warn Learn Time is set to be lower than
Minimum Learn Time, then Minimum Learn Time will be used to determine the time to the
next learning phase attempt.
The operation of the device is first described for the case of [LSM] = 0, in which the device uses
CHARGE-BEFORE-DISCHARGE mode. In this mode, the device first enters Learn Charge Phase by
setting ChargingVoltage() to the appropriate charging voltage determined by the selected charging
algorithm (JEITA, for example) incremented by Learn Charge Voltage Delta. The [LCHG] flag is set and
charge terminates using standard charge termination criteria. Upon termination of charge, then [LCHG] is
cleared. Note that the data memory value of Last Charge Voltage Tx - Ty is not incremented due to this
Learn Charge Phase.
The time while [LCHG] is set is measured and compared against a threshold given by Learn ChargeTime Limit to identify an excessive charging time, which may indicate an issue in the system. When the
learn charging time exceeds this limit, the [LCTO] flag is set, learning is terminated, and the [LFAULT] flag
is set to indicate a fault has occurred. The [LCHG] flag is reset whenever the device exits from
CHARGING mode. If a learning fault occurs, the status flag ([LCHG] in this case) remains set to enable
the host to understand what mode the system was in when the fault occurred.
NOTE: The standard charge termination criteria voltage condition is relative to ChargingVoltage(), so
the same settings are used for Normal and Learn charging phases.
1.3.3.3Learn Pre-Relax Phase
If [LSM] = 0, then the device next waits for relaxation of the cell, during which Voltage() is monitored for
100-s time windows. While in this phase, the device sets the [LRLX] flag. If the change in the consecutive
100-s averages of Voltage() is less than 4 µV, then relaxation is deemed achieved. If not, the device
continues monitoring for another 100-s time window. It is important that the cell be fully relaxed before the
algorithm can continue onto the Learn Discharge Phase. The status of relaxation can be seen by the
[REST] bit in the Gauging Status register, after which the algorithm can move onto the Learn Discharge
Phase. If a learning fault occurs while in the Learn Pre-Relax Phase or the Learn Post-Relax Phase, the
status flag ([LRLX] in this case) will remain set to enable the host to understand what mode the system
was in when the fault occurred.
When the device is in learning mode (but not in the Learn Discharge Phase), and a current is detected
differently than what is expected, the [LUCD] bit will be set. It is set if the device is attempting to charge or
relax, and a discharge current in excess of Discharge Detection Threshold is detected. It is also set if
the device is in a RELAXATION mode and a charging current in excess of Charge Detection Threshold
is detected. This detection also terminates the learning phase, and this flag will remain set so the host can
recognize why the learning phase was stopped. This bit will be reset to 0 when charging is terminated or
the register is read.
www.ti.com
1.3.3.4Learn Discharge Phase
After achieving relaxation, the bq34210-Q1 device next enters the Learn Discharge Phase, whereby the
device enables the Learn Discharge Current (depending on the [LENCTL] setting), sets the [LDSG] flag,
and begins the timer.
External circuitry is required to actively discharge the battery at a constant current rate where the
discharge current flows through the sense resistor connected across SRP – SRN. This will be
implemented by the host directly controlling the current. To provide sufficient resolution in the associated
calculations, it is important that the level of this Learn Discharge Current be large enough so that it
generates a cell voltage change of approximately 5 mV or greater. A current level of C/20 or higher is
generally recommended.
[LDSG] remains enabled until the timer reaches Learn Discharge Time, at which point (if [LVR] = 0) the
[LDSG] flag is reset and Learn Discharge Current is disabled. The device then transitions into the Learn
Post-Relax Phase.
The [LVR] (Learn Voltage Restore) bit is used to tell the device to resume discharging using the learning
load after completion of the voltage determined by the charging algorithm selected until Voltage() reaches
the appropriate voltage determined by the charging algorithm selected (when [LVR] is set = 1). When this
is finished (or when the Learn Post-Relax Phase is complete, if [LVR] is set = 0), the entire learning phase
is complete, at which point the device sets the [LDONE] flag.
During the time period while the timer is active for the Learn Discharge Time period, the average current
and average temperature over this time period will be calculated by the device and saved at the
conclusion of the Learn Discharge Phase. These values are used in later calculations to provide better
accuracy.
While the device is in Learn Discharge Phase, it is also monitoring Current() and ensuring it is within an
acceptable range around the intended discharge current. The algorithm knows the intended current based
on the Learn Discharge Current, which is the intended Learn Discharge Current implemented using the
external circuitry. This current should generally be designed greater than C/20. The boundary the
algorithm uses for the acceptable range is determined using the Learn Discharge Current Boundary. If
the current exceeds the Learn Discharge Current Boundary, the [LDPAI] and [LFAULT] flags are set,
and the learning phase is stopped. If a learning fault does occur, the status flag ([LDSG] in this case) will
remain set to allow the host to understand what mode the system was in when the fault occurred.
The value of Learn Discharge Current should be selected large enough to accept variations in the
current with temperature and system noise, but low enough to ensure identification of other events, such
as an unintended charging session starting or a system load discharge event beginning. The Learn
Discharge Current should also be chosen well above the Discharge Detection Threshold and Quit
Current to ensure proper operation.
End-Of-Service Determination
NOTE: After setting [LDSG], the device will monitor Current() for up to Learn Request Timeout
seconds and start the timer only when the current has entered the acceptable range around
Learn Discharge Current. This will accommodate delay in the host responding to the
ALERT interrupt to see the [LCTLEDGE] signal and enable the Learn Discharge Current.
If the bq34210-Q1 device does not detect a valid current within a time period of LearnRequest Timeout after setting [LDSG], then the device will set [LFAULT], delay a time given
by Auto Learn Retry Time, and then initiate a new learning phase. The [LDSG] flag will
remain set so the host can read and determine the phase in which the fault occurred. The
Learn Request Timeout timer is similarly used after the [LCTLEDGE] signal asserts when
the host should disable the learning load.
The Learn Discharge Phase can be terminated for other criteria (beyond its intended valid termination by
persisting for the Learn Discharge Time period), including Current() exiting the acceptable range, a
safety fault is detected, or a temperature exceeds the allowed learning temperature limits. If the Learn
Discharge Phase is terminated for any reason other than valid termination, then [LFAULT] is set,
indicating that the learning phase was not completed. [LFAULT] is cleared when the learning process is
initiated again.
The Learn Discharge Phase is only allowed when the temperature is within an allowed range, which is
given by the Learn Min Temperature and Learn Max Temperature. If a Learn Discharge Phase is
attempted when the temperature is outside this allowed range, the [LDPAT] and [LFAULT] flags are set.
If the [LSM] is set = 1, then DISCHARGE-BEFORE-CHARGE mode is used, in which the operation
sequence is described below:
1. Check for relaxation by monitoring Voltage() as described above, and delay until relaxation is
achieved.
2. Enable [LDSG], enable the Learn Discharge Current, and reset the timer to begin Learn Discharge
Phase.
3. When the timer reaches Learn Discharge Time, then disable [LDSG] and Learn Discharge Current.
After the Learn Discharge Phase completes, the bq34210-Q1 device will disable the learning current and
enter the Learn Post-Relax Phase, whereby the device again waits for relaxation of the cell, during which
Voltage() is monitored for 100-s time windows. While in this phase, the device sets the [LRLX] flag. If the
change in the consecutive 100-s averages of Voltage() is less than 4 µV, then relaxation is deemed
achieved. If not, the device continues monitoring for another 100-s time window. It is important that the cell
be fully relaxed before the algorithm can continue. The status of relaxation can be seen by the [REST] bit
in the Gauging Status register. If a learning fault occurs while in the Learn Post-Relax Phase, the status
flag ([LRLX] in this case) remains set to enable the host to understand what mode the system was in
when the fault occurred.
As in the Learn Pre-Relax Phase, if a discharge current in excess of Discharge Detection Threshold or
a charging current in excess of Charge Detection Threshold is detected, then the [LUCD] flag is set.
This detection also terminates the learning phase, and this flag will remain set so the host can recognize
why the learning phase was stopped. This bit will be reset to 0 when charging is terminated or the register
is read.
At the completion of the Learn Post-Relax Phase, if in CHARGE-BEFORE-DISCHARGE mode and
Voltage() > the charging voltage determined by the selected charging algorithm and [LVR] = 1, then the
device will set [LDSG] and enable the Learn Discharge Current until Voltage() ≤ the calculated charging
voltage. At which point, [LDSG] is reset and the Learn Discharge Current is disabled. The [LRSTOR] bit
will be set while the device is continuing discharge to reach the calculated charging voltage.
If in DISCHARGE-BEFORE-CHARGE mode and [LVR] = 0, then the device will set [LDONE] and
complete learning. If [LVR] = 1, then the device will initiate a new charging session to charge the battery
back to the appropriate charging voltage determined by the selected charging algorithm using a similar
sequence as described above. In this case, the device sets the [LCHG] and [LRSTOR] flags to indicate to
the host that charging can begin. If charging does not terminate within Learn Charge Time Limit, then
[LCTO] and [LFAULT] is set. If a learning fault does occur, the status flag ([LCHG] in this case) will remain
set to allow the host to understand what mode the system was in when the fault occurred.
www.ti.com
NOTE: It is possible that a Learn Discharge Phase has completed, and a new Rcell value was
calculated and stored, but during a Voltage Restore phase, a fault could occur. This would
cause [LFAULT] to be set, and the device would retry a new learning phase after AutoLearn Retry Time.
1.3.3.6Cell Resistance Calculation
The device uses the values obtained during each learning phase to estimate a value of Rcell for the
battery. Note the actual value of this Rcell estimate is not critical here, rather its change as the battery
ages is what is important. The [LRES] bit indicates when a new Rcell value was acquired and stored by
the device.
The change in value of Rcell must be normalized relative to differences in temperature when they are
captured. Therefore, the bq34210-Q1 device uses resistance temperature parameters in Rcell High &
Low Temperature Coefficients to calculate an expected value of resistance at the Learn Target
Temperature.
The Rcell High & Low Temperature Coefficients are obtained during a preproduction test whereby the
customer initiates Initial Rcell calculations at temperatures of 5°C, 25°C, and 40°C. These Initial Rcell
values are put into a spreadsheet provided by TI, which then calculates the values of Rcell HighTemperature Coefficient and Rcell Low Temperature Coefficient. These values are then loaded into
data memory and used by the device to normalize effective Rcell measurements back to an equivalent
value at the Learn Target Temperature.
NOTE: The Rcell and Initial Rcell values read by the device are normalized to Learn Target
Temperature. During the preproduction testing to capture the Initial Rcell values as
described above, it is important to keep the Rcell High & Low Temperature Coefficients
set = 0, so the Initial Rcell values captured there are not further normalized.
The Initial Rcell values should be written using the MAC Commands.
It is important that the temperature remain stable during the learning phase. If the temperature is detected
to vary more than 10°C during certain portions of the learning phase, the learning phase will be stopped,
and the [LDPAT] and [LFAULT] flags will be set.
Learn Target Temperature should be the typical or nominal temperature for intended cell operation.
1.3.3.7End-Of-Service Evaluation
1.3.3.7.1 Direct Resistance Decisioning
The device uses the change in Rcell relative to the value of Initial Rcell as one method to estimate EOS.
The ratio of Rcell / Initial Rcell is compared to two thresholds to generate [DRDALERT] and [DRDWARN]
flags by:
End-Of-Service Determination
The EOS alerts and warnings are read using the command EOSSafetyStatus(), which will clears the alert
bits in this register. There is also a ManufacturerAccessControl() subcommand EOS_SAFETY_STATUS(),
which can be read and does not clear the alert bits.
The following data memory values are set to provide levels at which the bq34210-Q1 device will generate
an alert or a warning, based on the DRD algorithm.
In normal situations, the value of Rcell is expected to increase over time. If the value of Rcell is detected
to decrease from the previous measurement, this is unexpected and may indicate an abnormal situation,
such as a cell having been replaced. The bq34210-Q1 device will set the [RCELLR] flag if a reduction in
the value of Rcell of more than 2% is detected.
To offer improved robustness, there is the option to enable a filter to help ensure that the condition was
detected for a number of consecutive learning phases through programming DRD Alert Counts and DRDWarning Counts.
If the DRD Alert calculation is positive for DRD Alert Counts, then [DRDALERT] is set. If DRD AlertCounts is set = 0, then this test is disabled.
If the DRD Warning calculation is positive for DRD Warning Counts, then [DRDWARN] is set. If DRDWarning Counts is set = 0, then this test is disabled.
Additionally, once the first instance of the either a DRD Alert or DRD Warning condition is detected, then
the time between automatic learns can be adjusted and is based on Alert-Warn Learn Time. If Alert-Warn Learn Time = 0, then the value in Auto Learn Time continues to be used.
After DRD Alert Counts number of alert conditions have occurred and a [DRDALERT] was triggered, then
the timing to the next learning phase returns to Auto Learn Time.
When the [DRDALERT] flag is set, it will be cleared after being read by the host. However, if the
[DRDWARN] flag is set, it is NOT cleared after being read by the host, but can only be cleared by the host
using the ManufacturerAccessControl() subcommand EOS_WARN_CLEAR().
1.3.3.7.2 Resistance Slope Decisioning
SLUUBE8–September 2018
Submit Documentation Feedback
This second method the device uses to evaluate EOS is based on the slope of the change in Rcell versus
time. The preferred approach is to use Direct Resistance Decisioning with Resistance Slope Decisioning,
whereby an even more robust solution is obtained.
Resistance Slope Decisioning requires an accurate measurement of the time between consecutive
learning phases, which it uses to calculate the slope of the Rcell change with respect to time. For best
results, this mode should be used with automatic learning mode enabled and the device experiences no
(or few) power cycles during its lifetime.
Here, the device collects Rcell information using periodic learning phases, which may be in either
CHARGE-BEFORE-DISCHARGE or DISCHARGE-BEFORE-CHARGE mode. The device measures
accurately the time between learning phases, and this is then used to calculate the rate of change in Rcell
with respect to time, which is termed RRate. The value of RRate is stored in units of µΩ/day as a two-byte
signed value, which can store values up to a maximum of 32767 µΩ/day. If a value of RRate is calculated
exceeding this level, the value stored will be limited at 32767. If this value is read back by the host, it
should serve as an indication that the RRate value has saturated the range allotted for storing it.
During operation, the algorithm uses the newly measured value of RRate and computes the ratio of RRate
with that of an Initial RRate captured when the battery was first put into service. The ratios are compared
to thresholds to generate an alert and a warning:
The device also maintains a long-term timer value, which counts the time from the completion of the InitialRRate learning phases to the present time. This value will only be valid if no power cycles or interruptions
to device operation have been encountered since the Initial RRate learning phases were completed. If
there is a power cycle such that the timer was interrupted, then the [RDSLI] flag will be set, which
indicates that no alerts or warnings based on the long-term RSD value (described below) will be triggered.
A long-term value for the resistance slope (given by RRate
from the Initial RRate value to the most recent RRate measurement.
The ratio of RRate to RRate
) is calculated as the change in RRate
longterm
is compared against thresholds to provide further information as:
longterm
www.ti.com
28
NOTE: It is important that the delay between successive Rcell calculations be long enough such
that the slope of resistance change can be accurately calculated. If the triggering of learning
phases is being performed manually (rather than automatically using the Auto Learn Time),
then it is possible for the host to request successive learning phases with too short of a time
delay between them. The minimum time required for successive learning phases is set by
Minimum Learn Time. If the host manually requests a new learning phase without waiting
for Minimum Learn Time, then the [LDPAM] flag will be set and the request for a new
learning phase will be declined. The [LFAULT] flag is not set here because the learning
phase was never started.
The Initial RRate values should be written using the MAC Commands.
It is important that Auto Learn Time be set larger than Minimum Learn Time; otherwise, MinimumLearn Time will be used in place of Auto Learn Time. It is also recommended that, if Resistance Slope
Decisioning is used, the value of RRate be ~>10 in practice, to enable appropriate resolution during
mathematical computation within the device.
NOTE: Minimum Learn Time also limits the time between successive Rcell measurements even
when DRD Decisioning is used and RSD/RSDL Decisioning is not used. In the case where
RSD/RSDL Decisioning is not being used, the user can set the Minimum Learn Time to 0 if
frequent Rcell measurements are needed.
To offer improved robustness, there is the option to enable a filter to help ensure that the condition was
detected for a number of consecutive learning phases through programming RSD Alert Counts and RSDWarning Counts.
If the RSD Alert calculation is positive for RSD Alert Counts, then [RSDALERT] is set. Similarly, if the
RSDL Alert calculation is positive for RSD Alert Counts, then [RSDLALERT] is set. If RSD Alert Counts
is set = 0, then these tests will not be enabled.
If the RSD Warning calculation is positive for RSD Warning Counts, then [RSDWARN] is set. Similarly, if
the RSDL Warning calculation is positive for RSD Warning Counts, then [RSDLWARN] is set. If RSDWarning Counts is set = 0, then these tests will not be enabled.
Additionally, once the first instance of either an RSD Alert, RSDL Alert, RSD Warning, or RSDL Warning
condition is detected, then the time between automatic learns can be adjusted and is based on Alert-Warn Learn Time. If Alert-Warn Learn Time = 0, then the value in Auto Learn Time continues to be
used.
When the bq34210-Q1 device is operating in Resistance Slope Decisioning mode and a power cycle is
detected, such that the timer is stopped and restarted, then newly calculated values of RRate will no
longer be compared against the long-term value of the resistance slope. Thus, the [RSDLAlert] and
[RSDLWarn] flags will never be set. The [RSDLI] flag is set to indicate an interruption has occurred.
In addition, a new value of RRate cannot be calculated until two learning phases are completed with the
device maintaining power between them, so a valid time is available for the calculation.
If the system designer is concerned about the power drawn by the bq34210-Q1 timer, another option is for
the system to power up the bq34210-Q1 device, maintain power long enough for the device to complete
two learning phases and calculate a valid RRate value for evaluation. The device can then be powered
down until another evaluation is needed, in which case the sequence can be repeated.
End-Of-Service Determination
1.3.3.8Initial Rcell and RRate Learning Process
When the cell is first put into service, Initial Learn Pulse Number learning phases will be initiated, each
resulting in a calculated Rcell value. These Rcell values will be averaged and stored as Initial Rcell.
The EOS_RCELL_RRATE_LEARN() command is available for the host to initiate the measurement of an
Initial Rcell value. This command will also reset the timer measuring the time since completion of the
Initial Rcell measurement.
NOTE: The Initial Rcell measurement can be done while in test mode, but the Initial RRate
measurement cannot practically be done in test mode with an actual cell, due to the minimal
change expected in the values of Rcell when using the short time durations of the test mode.
If any fault is detected during the Initial Rcell or Initial RRate measurement process, all learned data
associated with the Rcell measurement in progress is discarded, and the device will initiate a new
learning phase after Auto Learn Retry Time. If the Initial RRate value measured by the device is 0 or
negative, this result is ignored, and the device will still consider Initial RRate not yet learned. In this case,
the host should initiate a new Initial RRate using EOS_RCELL_RRATE_LEARN().
The time since the last successful calculation of Rcell is provided via the EOSSTATUS2() command. If
timing were disrupted since the last Rcell calculation, such as caused by a power cycle on the device,
then this register will read 0 until a new Rcell is calculated.
Similarly, the time since the successful calculation of Initial Rcell is also provided via the EOSSTATUS2()
command. If timing was disrupted since the Initial Rcell calculation, this register will read 0, and the
[RSDLI] flag will be set.
When the cell is first put into service, the first learning phases that are initiated are used to calculate
multiple values for RRate. These multiple values are averaged and stored as Initial RRate. For the InitialRRate procedure to operate, the Auto Learn Time cannot be set = 0.
NOTE: For the EOS Determination function to provide best results, it is important that the values of
Rcell be measured at a consistent level of charge. This means it cannot directly be used
together with JEITA charging without additional steps.
If the Initial Learn Pulse Number is set greater than 1, Learn Voltage Restore is set = 1, and LearnSequence Mode is set = 1 (DISCHARGE-BEFORE-CHARGE mode), the bq34210-Q1 device will wait for
the cell to be charged after each Learn Post-Relax Phase is complete before it completes the learning
cycle for a single initial learn pulse. It then initiates the next learning cycle for the next initial learn pulse.
However, if the Learn Voltage Restore is set = 0, then the bq34210-Q1 device will wait for the cell to be
charged back after the Learn Post-Relax Phase is complete, but will immediately complete the learning
cycle and initiate a new learning cycle for the next initial learn pulse. This will result in each of the multiple
initial learn pulses being captured at slightly different depth-of-discharge, which can introduce an
additional error into the measurement, depending on the battery chemistry used. To avoid this error, it is
recommended that either the Learn Voltage Restore be set = 1 or the Initial Learn Pulse Number be
set = 1.
Because the Learn Discharge Pulses only discharge the battery a small amount, recharging to
compensate for this small discharge may create difficulty in achieving proper charge termination,
depending on the battery chemistry used. This case should be evaluated during development, and if
necessary, the pertinent charge termination settings can be adjusted to address this issue. For example,
the Current Taper Window and Minimum Taper Capacity may need to be reduced to facilitate proper
charge termination.
A possible issue can arise if the bq34210-Q1 gauge is configured for CHARGE-BEFORE-DISCHARGE
mode, and a fault occurs after charging, but before the Learn Discharge Phase has completed. Then
when the device attempts a new learning phase, it may have difficulty achieving proper charge
termination, since the battery was already charged to the required level. In this case, a possible
workaround would be to enable the learning load and discharge the battery back to the original level
before the next learning phase occurs.
The configuration options are configured via the following Smoothing Config and Operation Config A
data memory registers. These registers are programmed and read via the methods described in
Section 5.1, Accessing the Data Memory.
2.1.1 Smoothing Config Register
Table 2-1. Smoothing Config Register Bit Definition
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
RSVDRSVDRSVDRSVD
Default
00000000
Chapter 2
SLUUBE8–September 2018
Functional Description
SMOOTH
EOC_EN
0x00
SMEXTVAVGSMEN
RSVD = Reserved
SMOOTHEOC_EN = Allows smoothing of RemCap once Current starts decreasing during the end of charge (EOC).
0 = End of charge smoothing is not enabled.
1 = End of charge smoothing is enabled (default).
SMEXT = When set to 1, smoothing continues to EDV1 and EDV0 points. When set to 0, smoothing stops at
VAVG = Enables smoothing to use average voltage
SMEN = Smoothing result is reported on RemainingCapacity().
EDV2. Default is 0.
When set to 1, smoothing uses average voltage. When set to 0 smoothing uses measured voltage.
Default is 0.
When set to 1, the smoothing result is reported on RemainingCapacity(). When set to 0, the normal
CEDV remaining capacity is reported. Default is 0.
2.1.2 Operation Configuration A (Operation Config A) Register
Table 2-2. Operation Config A Register Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteTEMPSDefault Seal ALERT_POL ALERT_ENSCALEDSLEEP
Low ByteDefaultFALFOONLY
High Byte
TEMPS = When set to 1, the external thermistor is selected for Temperature() measurements.
Default Seal = Seal during POR
0 = No Seal after POR (default)
1 = Seal after POR
SLPWAKECHG = Accumulate estimated charge on wake from sleep when Current() > Sleep Current, but not enough
Low Byte
NIMH_CHG_EN = When set, the device performs primary charge termination using the NiXX algorithm. See Charging
WAKE_EN, WK_TH1,
1 = ALERT is active high.
ALERT_EN = When set to 1, the ALERT pin is active.
SCALED = Scaled capacity and/or current bit
SLEEP = The fuel gauge can enter SLEEP, if operating conditions allow. True when set.
JEITA = Enables JEITA Temperature functionality. See Charging and Charge Termination.
DefaultFA = Default to FULL ACCESS mode on power up (1 = yes)
LFOONLY = Use LFO only for ADC conversions (1 = yes).
NI_DT = When set, the device performs primary charge termination using the ΔT/Δt algorithm. See Charging
NI_DV = When set, the device performs primary charge termination using the –ΔVt algorithm. See Charging
WK_TH0 =
The mA and mAh settings and reports will take on a value that is artificially scaled. This setting has
no actual effect within the gauge. It is the responsibility of the host to reinterpret the reported values.
Scaled current measurement is achieved by calibrating the current measurement to a value lower
than actual.
to trigger a wake event. Enabled when set.
LFOONLY is a lower power mode, but has a reduction in accuracy.
and Charge Termination.
and Charge Termination.
and Charge Termination.
These bits configure the current wake function. See the bq34210-Q1 Automotive 1-Series Cell
System-Side CEDV Fuel Gauge for Rarely Discharged Batteries Data Sheet (SLUSCG1) for
threshold values.
www.ti.com
2.2External Pin Functions
2.2.1 Wake-Up Comparator
The wake-up comparator indicates a change in cell current while the fuel gauge is in SLEEP mode. The
Operation Config A [WK_TH1:WK_TH0] bits select the appropriate comparator threshold for the sense
resistor value used. The Operation Config A [WAKE_EN] bit selects one of two possible voltage
threshold ranges for the given sense resistor selection. An internal interrupt is generated when the
threshold is reached in either the charge or discharge direction. Setting the [WK_TH1] and [WK_TH0] bits
to 0 disables this feature.
2.2.2 Autocalibration
The fuel gauge provides an autocalibration feature that measures the voltage offset error across SRP and
SRN as operating conditions change. It subtracts the resulting offset error from the normal sense resistor
voltage, VSR, for maximum measurement accuracy.
Autocalibration of the coulomb counter begins on entry to SLEEP mode, except if Temperature() is ≤ 5°C
or Temperature() ≥ 45°C.
The fuel gauge also performs a single offset when:
•The condition of AverageCurrent() ≤ 100 mA
•{voltage change since last offset calibration ≥ 256 mV} or {temperature change since last offset
calibration is greater than 8°C for ≥ 60 s}.
Capacity and current measurements continue at the last measured rate during the offset calibration when
these measurements cannot be performed. If the battery voltage drops more than 32 mV during the offset
calibration, the load current has likely increased; thus, the offset calibration is stopped. The
CONTROL_STATUS()[CCA] bit is set during coulomb counter autocalibration.
The fuel gauge typically measures battery temperature via its TS input to supply battery temperature
status information to the gas gauging algorithm and charger-control sections of the gauge. Alternatively, it
can be configured to use an internal on-chip temperature sensor or receive temperature data from the
host processor. See Temperature(): 0x06 and 0x07 for specific information on configuration options.
Regardless of which temperature configuration is used, the host processor can request the current battery
temperature by reading the Temperature(), and for internal temperature, InternalTemperature().
The external thermistor circuit requires the use of an 10K NTC 103AT-type thermistor.
2.3.1 Overtemperature Indication
2.3.1.1Overtemperature: Charge (OT Chg)
If during charging, Temperature() reaches the threshold of OT Chg for a period of OT Chg Time, and
Current() > Chg Current Threshold, then the BatteryStatus()[OTC] bit is set. When Temperature() falls to
OT Chg Recovery, the BatteryStatus()[OTC] bit is cleared.
If OT Chg Time = 0, then the feature is completely disabled.
2.3.1.2Overtemperature: Discharge (OT Dsg)
If during discharging, Temperature() reaches the threshold of OT Dsg for a period of OT Dsg Time, and
Current() ≤ –Dsg Current Threshold, then the BatteryStatus()[OTD] bit is set. When Temperature() falls
to OT Dsg Recovery, the BatteryStatus()[OTD] bit is cleared.
If OT Dsg Time = 0, then the feature is completely disabled.
Temperature Measurement
2.3.2 Undertemperature Indication
2.3.2.1Undertemperature: Charge (UT Chg)
If during charging, Temperature() reaches the threshold of UT Chg for a period of UT Chg Time, and
Current() > Chg Current Threshold, then the BatteryStatus()[UTC] bit is set. When Temperature() rises
to UT Chg Recovery, the BatteryStatus()[UTC] bit is cleared.
If UT Chg Time = 0, then the feature is completely disabled.
2.3.2.2Undertemperature: Discharge (UT Dsg)
If during discharging, Temperature() reaches the threshold of UT Dsg for a period of UT Dsg Time, and
Current() ≤ –Dsg Current Threshold, then the BatteryStatus()[UTD] bit is set. When Temperature() rises
to UT Dsg Recovery, the BatteryStatus()[UTD] bit is cleared.
If UT Dsg Time = 0, then the feature is completely disabled.
2.4Battery Condition Warnings
2.4.1 Battery Low Warning
The bq34210-Q1 device can indicate, and optionally trigger an alert signal, when the battery voltage falls
below a programmable threshold. This feature is disabled if Battery Low Time is set to 0.
NOTE: If Battery Low Time is set to 30 seconds or higher, the device may initiate an automatic
offset calibration during the time window, resulting in the BATLOW signal being delayed
approximately an additional 15–20 seconds beyond the Battery Low Time setting.
The bq34210-Q1 device can indicate, and optionally trigger an alert signal, when the battery voltage falls
below a programmable threshold. This feature is disabled if Battery High Time is set to 0.
StatusConditionAction
NormalVoltage() > BATHIGH: Battery High Set ThresholdBatteryStatus()[BATHIGH] = 0
Trip
RecoveryVoltage() > BATHIGH:Battery High Clear ThresholdBatteryStatus()[BATHIGH] = 0
Voltage() ≤ BATHIGH: Battery High Set Threshold
For
BATHIGH:Battery High Time duration
2.4.3 Battery Low SOC Warning
The bq34210-Q1 device can indicate, and optionally trigger an alert signal, when the battery state-ofcharge (SOC) falls below a programmable threshold. This feature is disabled by setting SOC LowThreshold and SOC Low Recovery to 0.
The battery level threshold (BLT) feature indicates when the SOC of a battery pack has depleted to a
certain value set in a DF register. This feature allows a host to program two capacity-based thresholds
that govern the triggering of the BLT flag and the setting or clearing of the OperationStatus()[BLT] on the
basis of RemainingCapacity(). The interrupt on pins ALERT1 and/or ALERT2 is enabled or disabled via
Alert1_6[BLT] and Alert2_6[BLT], respectively.
•OperationStatus()[BLT] is set when:
– Current > 0 and RemainingCapacity() > BLTChargeSet(). This threshold is initialized at reset from
Init Charge Set.
– Current ≤ 0 and RemainingCapacity() < BLTDischargeSet(). This threshold is initialized at reset
from Init Discharge Set.
•When either the BLTDischargeSet() or BLTChargeSet() command is received, OperationStatus()[BLT]
will clear and the flag will be deasserted. The new threshold is written to either BLTDischargeSet() or
BLTChargeSet().
•At reset, the flag is set to the deasserted state.
Name
BLT Discharge SetR/WR/WR/WWordS2—65535150mAh
SEUSFA
Access
Table 2-3. BLTDischargeSet()
ProtocolTypeMinMaxDefaultUnit
34
This read/write word command updates the BLT set threshold for DISCHARGE mode for the next BLT flag
assertion, deasserts the present BLT flag, and clears the OperationStatus()[BLT] bit.
The read/write word command updates the BLT set threshold for CHARGE mode for the next BLT flag
assertion, deasserts the present BLT flag, and clears the OperationStatus()[BLT] bit.
Table 2-5. Init Discharge Set
ClassSubclassNameFormat
SettingsBLTInit Discharge SetI22032767150mAh
Description: Initial value for BLTDischargeSet()
Table 2-6. Init Charge Set
ClassSubclassNameFormat
SettingsBLTInit Charge SetI22032767175mAh
Description: Initial value for BLTChargeSet()
2.5Charging and Charge Termination Indication
Charging and Charge Termination Indication
Size in
Bytes
Size in
Bytes
Min ValueMax Value
Min ValueMax Value
Default
Value
Default
Value
Unit
Unit
2.5.1 Detecting Charge Termination
For proper fuel gauge operation, the cell Charging Voltage must be specified by the user.
The fuel gauge detects charge termination when:
•During two consecutive periods of 40 seconds, the AverageCurrent() < Taper Current.
•During the same two periods, the accumulated change in capacity must be > 0.25 mAh.
•Voltage() > Charging Voltage – Taper Voltage.
When this occurs, the BatteryStatus()[FC] and [TCA] bits are set depending on the SOC Flag Config A[FCSETVCT] and [TCSETVCT] options. Also, if the CEDV Configuration [CSYNC] bit is set, then
RemainingCapacity() is set equal to FullChargeCapacity().
2.5.2 Charge Inhibit
The fuel gauge can indicate when battery temperature has fallen below or risen above predefined
thresholds Charge Inhibit Temp Low or Charge Inhibit Temp High, respectively. In this mode, the
BatteryStatus()[CHGINH] bit is set to indicate this condition. The [CHGINH] bit is cleared once the battery
temperature returns to the range [Charge Inhibit Temp Low + Temp Hys, Charge Inhibit Temp High –Temp Hys].
The charging should not start when the temperature is below the Charge Inhibit Temp Low or above the
Charge Inhibit Temp High. The charging can continue if the charging starts inside the window [Charge
Inhibit Temp Low, Charge Inhibit Temp High].
2.6Power Modes
The fuel gauge has different power modes: NORMAL, SLEEP, CONFIG UPDATE, and SHUTDOWN.
NOTE: Prior to NORMAL mode is INITIALIZATION mode, which is the mode immediately following
battery attachment. This is when the ROM parameters are moved to volatile memory.
•In NORMAL mode, the fuel gauge is fully powered and can run any allowable task.
Host sends the
and then thecommands
(from any mode).
SHUTDOWN_ENABLE
SHUTDOWN
ICC= Normal
Operation Config A [SLEEP] = 1
Sleep Current
AND
<| AverageCurrent() |
Fuel gauging and
data update every
20 seconds
OR
>
OR
Current is detected above +/–30 mA.
Host sets Operation Config A [SLEEP] = 0
Sleep Current| AverageCurrent() |
The ALERT pin is raised high for t
Control()[EXIT_CFG_UPDATE]
Via 240-s
timeout
Host can change RAM.
No gauging in this mode
Control ()[ENTER_CFG_UPDATE]
ALERT
.
Power Modes
•In SLEEP mode, the fuel gauge turns off the high-frequency oscillator (when in RELAXATION mode)
and is in a reduced-power state, periodically taking measurements and performing calculations.
•In CONFIG UPDATE mode, the internal configuration data in the fuel gauge can be modified.
•SHUTDOWN mode is the lowest power mode and requires a power cycle or signal on the ALERT pin.
Figure 2-1 shows the relationship between these modes.
www.ti.com
36
Functional Description
Figure 2-1. Power Mode Diagram for System Shutdown
The fuel gauge is in NORMAL mode when not in any other power mode. During this mode, Current(),
Voltage(), and Temperature() measurements are taken, and the interface data set is updated. Decisions to
change states are also made. This mode is exited by activating a different power mode.
Because the gauge consumes the most power in the NORMAL mode, the CEDV algorithm minimizes the
time the fuel gauge remains in this mode.
2.6.2 SLEEP Mode
SLEEP mode is entered automatically if the feature is enabled (Operation Config A [SLEEP] bit = 1) and
Current() is below the programmable level Sleep Current. Once entry into SLEEP mode is qualified, but
prior to entering it, the fuel gauge performs a coulomb counter autocalibration to minimize offset.
During SLEEP mode, the fuel gauge periodically takes data measurements and updates its data set.
However, a majority of its time is spent in an idle condition.
The fuel gauge exits the SLEEP mode if any entry condition is broken, specifically when either:
•Current() rises above Sleep Current.
•A current in excess of I
2.6.3 SHUTDOWN Mode
In SHUTDOWN mode, REG18 is disabled so internal power and all RAM-based volatile data is lost. The
host can command the gauge to immediately enter SHUTDOWN mode by first unsealing the gauge then
enabling the mode with a SHUTDOWN_ENABLE subcommand (0x001B), followed by the SHUTDOWN
subcommand (0x001C). To exit SHUTDOWN mode, the ALERT pin must be raised from logic low to logic
high for t
Both SHUTDOWN_ENABLE and SHUTDOWN are only available while unsealed. Sending
SHUTDOWN_ENABLE will set SHUTDOWN_EN in CONTROL_STATUS(). Sending SHUTDOWN while
SHUTDOWN_EN is set will cause the device to immediately shut down. Sealing the gauge will clear
SHUTDOWN_EN.
Once in SHUTDOWN mode, there are two methods to exit. A power cycle (battery removal and insertion)
is one method. The second method uses the ALERT pin alternative function. Pulling the ALERT pin high
(the time is specified in the data sheet) enables the bq34210-Q1 to exit SHUTDOWN mode and reenter
NORMAL mode.
ALERT
.
WAKE
through R
SENSE
Power Modes
is detected.
2.7CONFIG UPDATE Mode
If the application requires different configuration data for the fuel gauge, the system processor can update
RAM-based data memory parameters using the Control() ENTER_CFG_UPDATE subcommand to enter
the CONFIG UPDATE mode. Operation in this mode is indicated by the OperationStatus() [CFGUPDATE]
status bit. In this mode, fuel gauging is suspended while the host uses the data commands to modify the
configuration data blocks. To resume fuel gauging, the host sends a Control() EXIT_CFG_UPDATE, or
EXIT_CFG_UPDATE_REINIT subcommand to exit the CONFIG UPDATE mode, which clears
OperationStatus() [CFGUPDATE]. After a timeout of approximately 240 seconds (4 minutes), the gaugeautomatically exits the CONFIG UPDATE mode if it has not received an EXIT_CFG_UPDATE or
EXIT_CFGPUPDATE_REINIT subcommand from the host.
2.8Application-Specific Information
2.8.1 Battery Profile Storage and Selection
The fuel gauge supports two predefined CEDV profiles in device ROM that customers can use by sending
the SET_PROFILE_1 or SET_PROFILE_2 command.
In situations where the user wants to input a custom CEDV profile, they must use the system controller to
set the defaults during system initialization.
To send these commands, the gauge must be in CONFIG UPDATE mode.
Upon power-up, an open-circuit voltage (OCV) measurement of the battery is made via the BAT pin. For
the best gauging results, the system load during the OCV measurement should not exceed a C/20
discharge rate of the battery.
Upon completion of the OCV voltage measurement, BatteryStatus()[OCVCOMP] is set.
2.9Additional Data Memory Parameter Descriptions
2.9.1 Calibration
The calibration method requires a correction due to offset errors, using a number of samples to get a
statistical average for the golden image. The parameters of particular interest are listed in the following
sections.
NOTE: Calibrate the gauge only when it is in FULL ACCESS UNSEALED mode.
2.9.1.1CC Gain
CC Gain sets the mA current scale factor for the coulomb counter. Use calibration routines to set this
value.
2.9.1.2CC Delta
CC Delta sets the mAh capacity scale factor for the coulomb counter. Use calibration routines to set this
value.
www.ti.com
2.9.2 Coulomb Counter Offset (CC Offset)
This register value stores the coulomb counter offset compensation. It is set by automatic calibration of the
device.
2.9.3 Board Offset
This register value stores the compensation for the PCB dependent coulomb counter offset. It is
recommended to use characterization data of the actual PCB to set this value.
2.9.4 Int Temp Offset
This register value stores the internal temperature sensor offset compensation. Use calibration routines to
set this value.
2.9.5 Ext Temp Offset
This register value stores the external temperature sensor offset compensation. Use calibration routines to
set this value.
2.9.6 Pack VOffset
This register value stores the Pack voltage offset measured at the Pack pin. Use calibration routines to set
this value.
2.9.7 Internal Temp Model
Internal Model Coefficient 1 through 4 characterize the internal thermistor of the device. Do not modify
these values without consulting TI.
External Model Coefficient 1-5 and Ext Model Coefficient b 1-4 are the thermistor temperature
linearization polynomial coefficients. The default values were computed with a Semitec 103AT thermistor.
If a different type of thermistor is used, then the coefficients will need to be changed. Contact TI to
generate coefficients for a different thermistor.
2.9.9 RC0
RC0 is the ideal value for the internal pullup resistor on the TS pin, shown in counts from the ADC based
on typical reference voltage. No modifications to this value are required
2.9.10 Filter
Defines the filter constant used in ± AverageCurrent() calculation:
AverageCurrent() = a × AverageCurrent() old + (1-a) × Current() with:
a = Filter/256; time constant = 1 s/in(1/a) (default = 14.5 s)
2.9.11 Deadband
Any current within ± Deadband is reported as 0 mA by the Current() function.
2.9.12 CC Deadband
This constant defines the deadband voltage for the measured voltage between the SRP and SRN pins
used for capacity accumulation in units of 294 nV. Any voltages within ±CC Deadband do not contribute
to capacity accumulation.
Additional Data Memory Parameter Descriptions
2.9.13 SOC Flag Configuration A (SOC Flag Config A) Register
The settings in SOC Flag Config A configure how the [TC], [FC], and [TD] flags in GaugingStatus() set
and clear. These flags are also used to set the [TCA], [TDA], and [FC] flags in BatteryStatus().
Table 2-7. SOC Configuration Flag A Register Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteRSVDRSVDRSVDRSVDTCSETVCTFCSETVCTRSVDRSVD
Default
Low Byte
Default
TCSETVCT = Enables BatteryStatus()[TCA] flag set on primary charge termination
FCSETVCT = Enables BatteryStatus()[FC] flag set on primary charge termination
TCCLEARRSOC = Enables BatteryStatus()[TCA] flag clear when RelativeStateOfCharge() ≤ TC:Clear % RSOC Threshold
TCSETRSOC = Enables BatteryStatus()[TCA] flag set when RelativeStateOfCharge() ≥ TC:Set % RSOC Threshold
This value determines how much actual remaining capacity exists when the fuel gauge reports 0 for
RemainingCapacity() before reaching EDV0. This accommodates a controlled shutdown based on battery
capacity rather than a specific voltage.
NOTE:If the Reserve Capacity is non-zero, then it should be added to the desired Near Full
capacity as well.
2.9.34 Charge Efficiency (Chg Eff)
This is a value to compensate for efficiency loss during charging when estimating total capacity value.
This is based on every coulomb counting charge period and adjusted to reflect the total charge efficiency
of the battery pack.
2.9.35 Discharge Efficiency (Dsg Eff)
This is a value to compensate for efficiency loss during discharging when estimating total capacity value.
This is based on every coulomb counting discharge period and adjusted to reflect the total discharge
efficiency of the battery pack.
2.9.36 Depth of Discharge (DOD) at EDV2
This value is updated by the CEDV gauging algorithm when battery voltage reaches EDV2. If Battery
Low % is altered, the DOD at EDV2 value should be set to (1 – Battery_Low%) × 16384, whereBattery_Low% = Battery Low % ÷ 100. The firmware default value is 15232, which corresponds to a
Battery Low % = 703 (.01 %).
Additional Data Memory Parameter Descriptions
2.9.37 Design Capacity
The DesignCapacity() function reports Design Capacity mAh.
NOTE:There is only a single Design Capacity value for all battery profiles. When setting the
battery profile in production, it may be necessary to update Design Capacity as well for
accurate StateOfHealth() results.
2.9.38 Design Voltage
The default value of DesignVoltage() is stored in Design Voltage and copied upon bq34210-Q1
initialization.
2.9.39 Cycle Count %
If the [CCT] bit is set, the cycle count function counts the accumulated discharge of (FullChargeCapacity()
× CC %) as one cycle. If (FullChargeCapacity() × CC %) is smaller than CC Threshold, CC Threshold is
used for counting.
2.9.40 Charge Inhibit Temp Low
The bq34210-Q1 device does not allow the battery pack to charge if Temperature() is below
Charge Inhibit Temp Low. The [CHGINH] bit is set in BatteryStatus(). The default value is 0°C. Charging
is allowed once the temperature is above Charge Inhibit Temp Low plus Temp Hys value. The
[CHGINH] bit is reset in the BatteryStatus() register.
The bq34210-Q1 device does not allow the battery pack to charge if Temperature() is above
Charge Inhibit Temp High. The [CHGINH] bit is set in the BatteryStatus(). The default value is 45°C.
Charging is allowed once the temperature is below Charge Inhibit Temp High plus Temp Hys value. The
[CHGINH] bit is reset in the BatteryStatus() register.
2.9.42 Temp Hys
The bq34210-Q1 device has a temperature hysteresis for both Charge Inhibit Temp High and
Charge Inhibit Temp Low conditions to prevent continuous charger ON/OFF behavior. The default value
is 5°C. Charging is allowed once the temperature is below Charge Inhibit Temp High plus Temp Hys or
above Charge Inhibit Temp Low plus Temp Hys value.
2.9.43 Charging and Charge Termination
The bq34210-Q1 does not directly control charging and charge termination, but its registers and
commands create an interface to work with the charging system. For proper bq34210-Q1 operation, the
battery cell charging voltage should be specified by the user in the 3 Charge Voltage T#-T# registers.
These parameters should be set to the recommended charging voltage battery.
The bq34210-Q1 device includes multiple algorithms for charging and charge termination, including
JEITA-based charging, negative temperature-based charging, and negative delta voltage-based charging.
The ChargingVoltage() and ChargingCurrent() will be selected by the bq34210-Q1 device following the
JEITA method, depending on the [JEITA] bit setting. If this bit is set, the voltage and current are selected
based on the settings in Charge Voltage T#-T#, Charge Current T#-T#, and JEITA T# Temp. The
JEITA T# Temp provides temperature boundaries for the temperature category.
If Temperature() < JEITA T1 Temp, then charging is inhibited,
ChargingVoltage() = 0,
ChargingCurrent() = 0.
If JEITA T1 Temp ≤ Temperature() ≤ JEITA T2 Temp, then
ChargingVoltage() = Charge Voltage T1 – T2,
ChargingCurrent() = Charge Current T1 – T2.
If JEITA T2 Temp < Temperature() ≤ JEITA T3 Temp, then
ChargingVoltage() = Charge Voltage T2 – T3,
ChargingCurrent() = Charge Current T2 – T3.
If JEITA T3 Temp < Temperature() ≤ JEITA T4 Temp, then
ChargingVoltage() = Charge Voltage T3 – T4,
ChargingCurrent()= Charge Current T3 – T4.
If JEITA T4 Temp < Temperature(), then charging is inhibited,
ChargingVoltage() = 0,
ChargingCurrent() = 0.
If the [JEITA] bit is reset, then operation is as follows:
If Temperature() < JEITA T1 Temp, then charging is inhibited,
ChargingVoltage() = 0,
ChargingCurrent() = 0.
If JEITA T1 Temp ≤ Temperature() ≤ JEITA T4 Temp, then
ChargingVoltage() = Charge Voltage T2 – T3,
ChargingCurrent() = Charge Current T2 – T3.
If JEITA T4 Temp < Temperature(), then charging is inhibited,
The device detects valid charge termination in one of three ways:
1. Current Taper method:
2. Delta Temperature (ΔT/Δt) method:
3. Negative Delta Voltage (–ΔV) method:
When either condition occurs, the GaugingStatus()[FC] bit is set. Also, if the [CSYNC] bit of
CEDV_Gauging_Configuration is set, and RemainingCapacity() is set equal to FullChargeCapacity().
Additional Data Memory Parameter Descriptions
1. During two consecutive periods of Current Taper Window, the AverageCurrent() is less than
Taper Current AND
2. During the same periods, the accumulated change in capacity > Minimum Taper Capacity AND
3. Voltage() is > ChargingVoltage() – Taper Voltage. When this occurs, the [CHG] bit of
BatteryStatus() is cleared. Also, if the [CSYNC] bit of CEDV_Gauging_Configuration is set, and
RemainingCapacity() is set equal to FullChargeCapacity().
For ΔT/Δt, the bq34210-Q1 device detects an increase in temperature over many seconds. The ΔT/Δt
setting is programmable in the temperature step, Delta Temperature (0°C – 25.5°C), and the time
step, Delta Temperature Time (0 s–1000 s). Typical settings for 1°C/minute include 2°C/120 s and
3°C/180 s (default). Longer times may be used for increased slope resolution.
In addition to the ΔT/Δt timer, a holdoff timer starts (using Holdoff Time) when the battery is charged
at more than Holdoff Current (default is 240 mA), and the temperature is above Holdoff
Temperature. Until this timer expires, ΔT/Δt detection is suspended. If Current() drops below Holdoff
Current or Temperature() below Holdoff Temperature, the holdoff timer resets and restarts only when
the current and temperature conditions are met again.
For negative delta voltage, the bq34210-Q1 device detects a charge termination when the pack voltage
drops during charging by Cell Negative Delta Voltage for a period of Cell Negative Delta Time,
during which time, Voltage() must be greater than Cell Negative Delta Qual Voltage.
2.9.44 Fast Charge Current
The register sets the fast charging current for the battery pack. This information can be read by the MCU
using commands 0x32 and 0x33, ChargingCurrent(). This information may be used to communicate the
information to a battery charger. This value is set based on battery capacity of the pack and
recommended maximum charging current by the cell manufacturers.
The bq34210-Q1 device sets the maximum cell charging voltage for the pack. This information can be
read by the MCU using commands 0x30 and 0x31, ChargingVoltage(). This information may be used to
communicate the information to a battery charger. This value is set based on battery capacity of the pack
and recommended maximum charging voltage by the cell manufacturers.
2.9.46 Taper Current
During primary charge termination detection, one of the three requirements is that the accumulated
change in capacity > 0.25 mAh per Current Taper Window for the bq34210-Q1 device to start trying to
qualify a termination. It must be above this Minimum Taper Capacity before bq34210-Q1 starts trying to
detect a primary charge termination.
The following conditions qualify for primary charge termination:
1. During two consecutive periods of Current Taper Window, the Current() is < Taper Current.
2. During the same periods, the accumulated change in capacity > 0.25 mAh per Current TaperWindow.
3. Voltage() >Charging Voltage – Taper Voltage.
Normal Setting: If the value selected is too high, then it can cause no termination or late termination
detection. An example value is 0.25 mAh or C/10 to C/20, based on battery cell characteristics and
charger specification. Also, two current taper qualifications are required to prevent false current taper.
False primary termination could occur with the pulse charging method and with random starting and
resumption of the charge current, a condition that is important at the beginning or end of the qualification
period.
www.ti.com
2.9.47 Taper Voltage
During primary charge termination detection, one of the three requirements is that Voltage must be above
(Charging Voltage – Taper Voltage) for the bq34210-Q1 device to start trying to qualify a termination. It
must be above this voltage before bq34210-Q1 starts trying to detect a primary charge termination.
Normal Setting: This value depends on charger characteristics. It must be set so that ripple voltage,
noise, and charger tolerances are taken into account. A high value selected can cause early termination. If
the value selected is too low, then it can cause no termination or late termination detection. An example
value is 100 mV (see Taper Current).
2.9.48 Sleep Current
The device is allowed to go into SLEEP mode if the charge or discharge current is below Sleep Current.
SLEEP mode can be enabled with the Operation Config A [SLEEP] bit. If the absolute value of Current()
is above Sleep Current, the bq34210-Q1 device will return to NORMAL mode.
2.9.49 Bus Low Time
The device is allowed to go into SLEEP mode if it is enabled with the Operation Config A [SLEEP] bit if
the I2C lines are low for a period greater than Bus Low Time.
2.9.50 Offset Calibration Inhibit Temperature Low
The bq34210-Q1 device does not perform auto-calibration on entry to SLEEP mode if Temperature() is
below Cal Inhibit Temp Low. The default is 5°C.
2.9.51 Offset Calibration Inhibit Temperature High
The bq34210-Q1 device does not perform auto-calibration on entry to SLEEP mode if Temperature() is
above Cal Inhibit Temp High. The default value is 45°C.
During SLEEP mode, temperature and voltage measurements will be taken in Sleep Voltage Time
intervals. The default setting is 20 s.
2.9.53 Sleep Current Time
During SLEEP mode, current will be measured in Sleep Current Time intervals. The default value is 20 s.
2.9.54 Dsg Current Threshold (Discharge Detection Threshold)
The bq34210-Q1 device enters DISCHARGE mode from RELAXATION mode or CHARGE mode if
Current() < (–) Dsg Current Threshold.
2.9.55 Chg Current Threshold (Charge Detection Threshold)
The bq34210-Q1 device enters CHARGE mode from RELAXATION mode or DISCHARGE mode if
Current() > Chg Current Threshold.
2.9.56 Quit Current
The bq34210-Q1 device enters RELAXATION mode from CHARGE mode if Current() goes below
Quit Current for Charge Relax Time. The device enters RELAXATION mode from DISCHARGE mode if
Current() goes above (–)Quit Current for Discharge Relax Time.
2.9.57 Discharge Relax Time
The bq34210-Q1 device enters RELAXATION mode from DISCHARGE mode if Current() goes above
(–)Quit Current for at least Discharge Relax Time.
NOTE: To optimize power consumption, it is recommended to set Discharge Relax Time to 0 so
the device enters RELAXATION mode immediately when Current() rises above
(–)Quit Current.
2.9.58 Charge Relax Time
The bq34210-Q1 device enters RELAXATION mode from CHARGE mode if Current() goes below
Quit Current for at least Charge Relax Time.
2.9.59 Quit Relax Time
The Quit Relax Time is the delay time to exit RELAXATION. If current is greater than Chg Current
Threshold or less than Dsg Current Threshold and this condition is maintained for Quit Relax Time,
then exiting RELAXATION is permitted. This is useful in applications with low duty cycle dynamic loads.
2.9.60 OT Charge
The bq34210-Q1 device sets the [OTC] flag in BatteryStatus() if the pack Temperature() is equal to or
higher than the Over Temp Chg threshold.
2.9.60.1 OT Charge Time
If the [OTC] condition exists for a time that exceeds the OT Chg Time period, the bq34210-Q1 device
goes into an overtemperature charge condition. This function is disabled if OT Chg Time is set to 0.
In an overtemperature charge condition, the ChargingVoltage() and ChargingCurrent() are set to 0, and
the [OTC] bit is set in the BatteryStatus() register.
The device recovers from an overtemperature charge condition if the Temperature() is equal to or lower
than the OT Chg Recovery level. On recovery, the CHG FET returns to its normal operating state, the
ChargingCurrent() and ChargingVoltage() are set to their appropriate values per the charging algorithm,
and the [OTC] flag in BatteryStatus() is reset.
2.9.62 OT Discharge
The bq34210-Q1 device sets the [OTD] flag in BatteryStatus() if the pack Temperature() is equal to or
higher than the Over Temp Dsg threshold.
2.9.62.1 OT Discharge Time
If the [OTD] condition exists for a time period that exceeds the OT Dsg Time, the bq34210-Q1 device
goes into an overtemperature discharge condition. This function is disabled if OT Dsg Time is set to 0.
In an overtemperature discharge condition the ChargingCurrent() is set to 0 and the [OTD] bit is set in the
BatteryStatus() register.
2.9.63 OT Dsg Recovery
The bq34210-Q1 device recovers from an overtemperature discharge condition if the Temperature() is
equal to or lower than the OT Dsg Recovery level. On recovery, the DSG FET returns to its normal
operating state, the ChargingCurrent() and ChargingVoltage() are set to their appropriate values per the
charging algorithm, and the [OTD] flag in BatteryStatus() is reset.
(S = Start , Sr = Repeated Start , A = Acknowledge , N = No Acknowledge , and P = Stop).
3.1I2C Interface
The slave-only bq34210-Q1 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 is, therefore, 0xAA or 0xAB
for write or read, respectively.
Chapter 3
SLUUBE8–September 2018
Communications
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):
3.2I2C Time Out
The I2C engine releases SDA and SCL if the I2C bus is held low for Bus Low Time. If the fuel gauge was
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.
Waiting time inserted between two 1-byte write packets for a subcommand and reading results
(required for 100 kHz < f400 kHz)
SCL
£
66 sm
AASA0PADDR [6:0]CMD [7:0]DATA [7:0]66 sm
I2C Command Waiting Time
3.3I2C Command Waiting Time
To ensure proper operation at 400 kHz, a t
packets addressed to the fuel gauge. In addition, if the SCL clock frequency (f
individual 1-byte write commands for proper data flow control. The following diagram shows the standard
waiting time required between issuing the control subcommand and reading the status result. A
DF_CHECKSUM() subcommand requires 100-ms minimum prior to reading the result. For read-write
standard commands, a minimum of 2 s is required to get the result updated. For read-only standard
commands, there is no waiting time required, but the host should not issue all standard commands more
than two times per second; otherwise, the fuel gauge could result in a reset issue due to the expiration of
the watchdog timer.
≥ 66 μs, bus-free waiting time must be inserted between all
(BUF)
) is > 100 kHz, use
SCL
www.ti.com
3.4I2C Clock Stretching
A clock stretch can occur during all modes of fuel gauge operation. In SLEEP mode, 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.
The bq34210-Q1 fuel gauge uses a series of data commands to enable system reading and writing of
battery information. Each data command has an associated command-code pair, as shown in Table 4-1.
Because each command consists of two bytes of data, two consecutive I2C transmissions must be run to
initiate the command function and to read or write the corresponding data. Additional options for
transferring data are described in Table 4-2, Control() commands. Read and write permissions depend on
the active access mode, SEALED or UNSEALED. For details, see Device Access Modes. For I2C details,
see Communications.
Table 4-1. Data Commands
NAMECOMMAND CODEUNIT
Control()/CONTROL_STATUS()CNTL0x00 and 0x01NARW
Temperature()TEMP0x06 and 0x070.1°KRW
Voltage()VOLT0x08 and 0x09mVR
BatteryStatus()0x0A and 0x0BNAR
Current()Current()0x0C and 0x0DmAhR
RemainingCapacity()RC0x10 and 0x11mAhR
FullChargeCapacity()FCC0x12 and 0x13mAhR
AverageCurrent()AI0x14 and 0x15mAR
AverageTimeToEmpty()TTE0x16 and 0x17MinutesR
AverageTimeToFull()TTF0x18 and 0x19MinutesR
AccumulatedCharge()0x1A and 0x1BmAhR
AccumulatedChargeTime()0x1C and 0x1D5 MinutesR
LastAccumulatedCharge()0x1E and 0x1FmAR
LastAccumulatedChargeTime()0x20 and 0x21minR
AveragePower()AP0x24 and 0x25mWR
InternalTemperature()INTTEMP0x28 and 0x290.1°KR
CycleCount()CC0x2A and 0x2BnumR
RelativeStateOfCharge()SOC0x2C and 0x2D%R
StateOfHealth()SOH0x2E and 0x2F%/numR
ChargingVoltage()CV0x30 and 0x31mVR
ChargingCurrent()CC0x32 and 0x33mAR
BLTDischargeSet()0x34 and 0x35mAhRW
BLTChargeSet()0x36 and 0x37mAhRW
OperationStatus()0x3A and 0x3BNAR
DesignCapacity()Design Cap0x3C and 0x3DmAhR
ManufacturerAccessControl()MAC0x3E and 0x3FRW
MACData()0x40 through 0x5FRW
MACDataSum()0x60RW
MACDataLen()0x61RW
EOSLearnStatus()0x64 and 0x65R
EOSSafetyStatus()0x66 and 0x67R
EOSStatus()0x68R
AnalogCount()0x79R
RawCurrent()0x7A and 0x7BmAR
RawVoltage()0x7C and 0x7DmVR
RawIntTemp()0x7E and 0x7F0.1ºKR
RawExtTemp()0x80 and 0x810.1ºKR
4.1Control()/CONTROL_STATUS(): 0x00 and 0x01
Issuing a Control() Manufacturer Access Control (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 fuel gauge during normal operation and additional features when the
device is in different access modes, as described in Table 4-2. 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_NUMBER() and FW_VERSION() subcommands. After these subcommands,
CONTROL_STATUS() will report the value 0xFFA5 one time before reverting to the normal dataresponse. This is a flag to indicate that the data response was moved to MACData(). Writing a 0x0000 to
Control() is no longer necessary to read the CONTROL_STATUS(), although it is okay if it is done.
When executing commands that require data (such as data memory writes), the subcommand can be
written to either Control() or ManufacturerAccessControl() registers; however, it is recommended to write
using the ManufacturerAccessControl() registers, as this allows performing the full command in a single
I2C transaction.
www.ti.com
SEALED
ACCESS
Table 4-2. Control() MAC Subcommands
CNTL/MAC FUNCTION
CONTROL_STATUS0x0000Yes
DEVICE_NUMBER0x0001Yes
FW_VERSION0x0002YesReports the firmware version
BOARD_OFFSET0x0009YesInvokes the board offset correction
CC_OFFSET0x000AYesInvokes the CC offset correction
CC_OFFSET_SAVE0x000BYesSaves the results of the offset calibration process
SET_PROFILE_10x0015YesSelects CEDV Profile 1
SET_PROFILE_20x0016YesSelects CEDV Profile 2
SHUTDOWN_ENABLE0x001BNoEnables the SHUTDOWN command
SHUTDOWN0x001CNoPuts the device into SHUTDOWN mode
ACCUM_DSG_EN0x001ENo
ACCUM_CHG_EN0x001FNo
IGNORE_SELFDSG_EN0x0020No
EOS_EN0x0021No
PIN_CONTROL_EN0x0022NoToggles control of the ALERT pin.
CAL_TOGGLE0x002DNoToggles OperationStatus()[CALMD]
SEAL0x0030NoPlaces the fuel gauge in SEALED access mode
SUBCOMMAND
CODE
SEALED
ACCESS?
DESCRIPTION
Ignored by the gauge (in previous devices, would enable
CONTROL_STATUS() read)
Reports the value from Data Memory device type (The
bq34210-Q1 reports 0x0210.)
This MAC subcommand toggles the value of
ManufacturingStatus()[ACDSG_EN].
This MAC subcommand toggles the value of
ManufacturingStatus()[ACCHG_EN].
This MAC subcommand toggles the value of
ManufacturingStatus()[IGNORE_SD_EN].
This MAC subcommand toggles the value of
ManufacturingStatus()[EOS_EN].
EOS_START_LEARN0x0039YesInitiates an EOS learning phase
EOS_ABORT_LEARN0x003AYesAborts an EOS learning phase
EOS_RCELL_RRATE_LEARN0x003BNo
EOS_WARN_CLEAR0x003CYesClears the EOS Warning flags
EOS_INITIAL_RCELL0x003EYesUsed to read and write the EOS Rcell value
EOS_INITIAL_RRATE0x003FYesUsed to read and write the EOS RRate value
RESET0x0041No
ACCUM_RESET0x004BYesResets the accumulated charge registers
GAUGING_STATUS0x0056Yes
ALERT_SET0x0068YesForces ALERT pin to be set (when enabled)
ALERT_RESET0x0069YesForces ALERT pin to be reset (when enabled)
EDV_THRESHOLD0x0073Yes
EXIT_CAL0x0080NoInstructs the fuel gauge to exit CALIBRATION mode
ENTER_CAL0x0081NoInstructs the fuel gauge to enter CALIBRATION mode
ENTER_CFG_UPDATE0x0090YesEnter CONFIG UPDATE mode
EXIT_CFG_UPDATE_REINIT0x0091YesExit CONFIG UPDATE mode and reinitialize
EXIT_CFG_UPDATE0x0092YesExit CONFIG UPDATE mode without reinitialize
CNTL/MAC FUNCTION
Control()/CONTROL_STATUS(): 0x00 and 0x01
Table 4-2. Control() MAC Subcommands (continued)
SUBCOMMAND
CODE
SEALED
ACCESS?
DESCRIPTION
Initiates the Initial Rcell and Initial RRate learning
procedures
Resets the device (The should only be sent in CFG
UPDATE mode.)
This MAC subcommand returns the information in the
CEDV gauging status register.
This MAC subcommand returns the value of the EDV
Threshold.
An example using the DEVICE_NUMBER() subcommand:
•Write the data bytes 0x01 0x00 to the device address 0xAA starting at command 0x00.
•Then read the response using an incremental read. To the device address 0xAB, starting at command
0x3E, read four bytes. The result would be 0x01 0x00 0x10 0x02 with the first two bytes reflecting the
subcommand, and the second two bytes representing Device Type in little endian order.
4.1.1 CONTROL_STATUS: 0x0000
A read on this command returns the 16-bit CONTROL_STATUS() data. The status word includes the
following information:
Table 4-3. CONTROL_STATUS Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteRSVDRSVDRSVDRSVDRSVDRSVDRSVDRSVD
Low Byte
SHUTDOWN_EN = Enables low power SHUTDOWN mode when subcommand SHUTDOWN is used.
SHUTDOWN
High Byte
Low Byte
_EN
RSVD = Reserved
RSVD = Reserved
CCA = Status bit indicating the fuel gauge Coulomb Counter Calibration routine is active. The CCA routine
BCA = Status bit indicating the fuel gauge board calibration routine is active. Active when set.
RSVD = Reserved
RSVD = Reserved
RSVDCCABCARSVDRSVDRSVDBATT_ID0
takes place approximately one minute after the initialization and periodically as gauging conditions
change. Active when set. (See Autocalibration.)
BATT_ID0 = Battery Identification Setting. Battery identification settings for different chemistries, used to select one of
two chemistry IDs.
0 = CEDV Profile 1
1 = CEDV Profile 2
One of these CEDV profiles is loaded it initial power. The host can modify the memory parameters to fit
the particular requirement of the system battery.
4.1.2 DEVICE_NUMBER: 0x0001
This command instructs the fuel gauge to return Device Type 0x0210 to MACData().
4.1.3 FW_VERSION: 0x0002
This command instructs the fuel gauge to return the firmware revision on MACData() in the following
format:
ddDDvvVVbbBBTTzzZZRREE, where
ddDD: Device Number
vvVV: Version
bbBB: Build number
ttTT: Firmware type.
www.ti.com
4.1.4BOARD_OFFSET: 0x0009
This command instructs the fuel gauge to measure and store the board offset value.
4.1.5CC_OFFSET: 0x000A
This command instructs the fuel gauge to measure the internal CC offset value.
4.1.6CC_OFFSET_SAVE: 0x000B
This command instructs the fuel gauge to store the internal CC offset value.
4.1.7 SET_PROFILE_1: 0x0015
This command selects CEDV Profile 1.
4.1.8 SET_PROFILE_2: 0x0016
This command selects CEDV Profile 2.
4.1.9 SHUTDOWN_ENABLE: 0x001B
This command enables entry into SHUTDOWN mode with the SHUTDOWN command.
4.1.10 SHUTDOWN: 0x001C
This command puts the device into low power SHUTDOWN mode. Exit is done with a power cycle or
through the ALERT pin.
4.1.11 ACCUM_DSG_EN: 0x001E
This MAC subcommand toggles the value of ManufacturingStatus()[ACDSG_EN].
4.1.12 ACCUM_CHG_EN: 0x001F
This MAC subcommand toggles the value of ManufacturingStatus()[ACCHG_EN].
This MAC subcommand toggles the value of ManufacturingStatus()[IGNORE_SD_EN].
4.1.14 PIN_CONTROL_EN: 0x0022
This command toggles control of the ALERT pin via the ALERT_SET and ALERT_RESET commands. It
is indicated by ManufacturingStatus[PCTL_EN]. Care must be taken when using this function when a true
Alert might occur. Use may cause the system to miss the Alert.
4.1.15 CAL_TOGGLE: 0x002D
Toggles the OperationStatus()[CALMD] flag
4.1.16 SEAL: 0x0030
This instructs the fuel gauge to transition from the UNSEALED state to the SEALED state. The fuel gauge
must always be set to the SEALED state for use in end-equipment.
Sending the SEAL command will set Operation Config A [DEFAULTSEAL], which will cause the gauge
to automatically reseal unless the DEFAULTSEAL bit is cleared.
4.1.17 EOS_START_LEARN: 0x0039
This MAC subcommand instructs the bq34210-Q1 device to begin a learning phase.
Control()/CONTROL_STATUS(): 0x00 and 0x01
4.1.18 EOS_ABORT_LEARN: 0x003A
This MAC subcommand instructs the bq34210-Q1 device to stop a learning phase.
4.1.19 EOS_RCELL_RRATE_LEARN: 0x003B
This MAC subcommand instructs the bq34210-Q1 device to initiate an Initial Rcell and an Initial RRate
measurement.
4.1.20 EOS_WARN_CLEAR: 0x003C
This MAC subcommand instructs the bq34210-Q1 device to clear the EOS warning bits (this includes
[DRDWARN], [RSDWARN], and [RSDLWARN]).
4.1.21 EOS_INITIAL_RCELL: 0x003E
This MAC subcommand is used to read the stored Initial_Rcell measurement or to overwrite the value
with a previously measured value.
4.1.22 EOS_INITIAL_RRATE: 0x003F
This MAC subcommand is used to read the stored Initial_RRate measurement or to overwrite the value
with a previously measured value.
4.1.23 RESET: 0x0041
This instructs the fuel gauge to perform a full reset.
NOTE: This subcommand is available only when the fuel gauge is UNSEALED, and should be used
only while in CONFIG UPDATE mode.
4.1.24 ACCUM_RESET: 0x004B
This command resets the accumulated charge registers.
Returns the 16-bit internal gauging status register. The most often checked flags from this register are
copied to the OperationStatus() direct read register for easier access.
Table 4-4. Gauging Status Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteVDQEDV2EDV1RSVDRSVDFCCXRSVDREST
Low ByteCFDSGEDVRSVDTCTDFCFD
High Byte
VDQ = Indicates if the current discharge cycle is NOT qualified or qualified for an FCC updated. Discharge cycle
valid for FCC update is set.
EDV2 = Indicates if measured cell voltage is above or below EDV2 threshold. Below = true when set.
EDV1 = Indicates if measured cell voltage is above or below EDV1 threshold. Below = true when set.
RSVD = Reserved
RSVD = Reserved
FCCX = Control for fcc1hz clock going into CC.
0 = fcc1hz = 1 Hz
1 = fcc1hz = 16 Hz
RSVD = Reserved
REST = Indicates if the device is in RELAXATION mode.
0 = The device has not reached relaxation.
1 = The device has reached relaxation.
Low Byte
CF = Indicates if battery conditioning is needed.
DSG = Set when in DISCHARGE or RELAXATION modes. Clear when in CHARGE mode.
EDV = Indicates if measured cell voltage is above or below EDV0 threshold. Below = true when set.
RSVD = Reserved
TC = Terminate Charge. Controlled by settings in SOC Flag Config A. (This flag is identical to
BatteryStatus()[TCA].)
TD = Terminate Discharge. Controlled by settings in SOC Flag Config A. (This flag is identical to
BatteryStatus()[TDA].)
FC = Full Charge. Controlled by settings in SOC Flag Config A and SOC Flag Config B. (This flag is identical to
BatteryStatus()[FC].)
FD = Full Discharge. Controlled by settings in SOC Flag Config B. (This flag is identical to BatteryStatus()[FD].)
www.ti.com
4.1.26 ManufacturingStatus(): 0x57
This function enables certain functions.
Table 4-5. Manufacturing Status Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteCAL_ENRSVDRSVDRSVDRSVDRSVDRSVDRSVD
Low ByteRSVDRSVDRSVDPCTL_ENEOS_ENIGNORE_SD_EN
High Byte
CAL_EN = Set and cleared by CAL_TOGGLE, it enables calibration commands.
Low Byte
56
Data Commands
PCTL_EN = Set and cleared by PIN_CONTROL_EN, it indicates if ALERT can be controlled via ALERT_SET and
EOS_EN = When set, the EOS Determination function is enabled.
IGNORE_SD_EN = Enables user to ignore cell self-discharge
ACCHG_EN = Enables accumulated charge integration in charge direction
ACSDG_EN = Enables accumulated charge integration in discharge direction
This command forces the ALERT pin to be set, no matter the conditions. The PIN_CONTROL_EN
command must be run to enable this feature.
4.1.28 ALERT_RESET: 0x0069
This command forces a reset on the ALERT pin. The PIN_CONTROL_EN command must be run to
enable this feature.
4.1.29 EDV_Threshold: 0x0073
This MAC subcommand returns the values of the EDV Threshold.
4.1.30 EXIT_ CAL: 0x0080
This instructs the fuel gauge to exit CALIBRATION mode.
4.1.31 ENTER_CAL: 0x0081
This instructs the fuel gauge to enter CALIBRATION mode and reset AnalogCount() to 0 if
OperationStatus()[CALMD] is set. [CALMD] is controlled by the CAL_MODE() command. Voltage must be
above 2.9 V for accurate calibration.
4.1.32 ENTER_CFG_UPDATE: 0x0090
Instructs the fuel gauge to set the OperationStatus()[DFGUPDATE] bit to 1 and enter CONFIG UPDATE
mode. This command is only available when the fuel gauge is UNSEALED.
Control()/CONTROL_STATUS(): 0x00 and 0x01
NOTE: To read the flag, the host must wait at least 2 seconds.
4.1.33 EXIT_CFG_UPDATE_REINIT: 0x0091
This command instructs the fuel gauge to exit CONFIG UPDATE mode and the gauge is reinitialized.
4.1.34 EXIT_CFG_UPDATE: 0x0092
This command instructs the fuel gauge to exit CONFIG UPDATE mode and the gauge is not reinitialized.
4.2Temperature(): 0x06 and 0x07
This read- and write-word function returns an unsigned integer value of the temperature in units of 0.1°K
measured by the fuel gauge. See Table 4-6, Temperature Measurement Options, and Temperature
Measurement.
Table 4-6. Temperature Measurement Options
Operation
Config A
[TEMPS]
0
1Returns external temperature read from an external thermistor.
XReturns the Temperature() value previously written.
This read-word function returns an unsigned integer value of the measured cell-pack voltage in mV with a
range of 0 to 6000 mV.
4.4BatteryStatus(): 0x0A and 0x0B
This read-word function returns the contents of the gas gauge status register, depicting the current battery
status.
Table 4-7. Battery Status Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteRSVDSOCLOWUTCUTDOTCOTDBATHIGHBATLOW
Low ByteSLEEPCHGINHFDFCTCATDACHGDSG
High Byte
RSVD = Reserved
SOCLOW = State-of-charge
UTC = Undertemperature Charge
UTD = Undertemperature Discharge
OTC = Overtemperature in charge condition is detected (Alert_1 [OTC] bit must be set).
OTD = Overtemperature in discharge condition is detected. True when set (Alert_1 [OTD] bit = 1).
BATHIGH = Battery voltage above high threshold
BATLOW = Battery voltage below low threshold
Low Byte
SLEEP = The device is operating in SLEEP mode when set. This will clear temporarily during AD measurements in
SLEEP mode.
CHGINH = Charge inhibit: If set, indicates that charging should not begin because Temperature() is outside the range
[Charge Inhibit Temp Low, Charge Inhibit Temp High]. True when set.
FD = Full discharge is detected. This flag is set and cleared based on the selected SOC Flag Config B options.
FC = Full charged is detected. This flag is set and cleared based on the selected SOC Flag Config A and SOC
Flag Config B options.
TCA = Terminate Charge Alarm. This flag is set and cleared based on the selected SOC Flag Config A options.
TDA = Terminate Discharge Alarm. This flag is set and cleared based on the selected SOC Flag Config A options.
CHG = The device has detected charge current when set.
DSG = The device is in DISCHARGE mode when set; CHARGE or RELAXATION mode when clear.
www.ti.com
4.5Current(): 0x0C and 0x0D
This read-only function returns a signed integer value that is the instantaneous current flow through the
sense resistor. It is updated every second. Units are mA.
4.6RemainingCapacity(): 0x10 and 0x11
This read-only command pair returns the battery remaining capacity. When CEDV Smoothing Config
[SMEN] is set, this will be the result of the smoothing engine. Otherwise, the unfiltered remaining capacity
is returned.
4.7FullChargeCapacity(): 0x12 and 0x13
This read-only command pair returns the compensated capacity of a fully charged battery. Units are mAh.
FullChargeCapacity() is updated at regular intervals, as specified by the CEDV algorithm.
This read-word function returns a signed integer value that approximates a one-minute rolling average of
the current being supplied (or accepted) through the battery terminals in mA with a range of –32,768 to
32,767.
AverageCurrent() is calculated by a rolling IIR filtered average of Current() function data with a period of
14.5 s. During the time after a reset or when switching between charge and discharge currents and before
14.5 s has elapsed, the reported AverageCurrent() = Current() function value.
Table 4-8. AverageCurrent()
Name
AverageCurrentRRRWordI2-3276832769mA
SEUSFA
Access
The data value Filter determines the time constant of the filter operation used in the calculation of
AverageCurrent() as follows:
AverageCurrent() = a × AverageCurrent() old + (1-a) × Current() with:
a = Filter/256; time constant = (1 s) / ln(1/a) (default = 14.5 s)
4.9AverageTimeToEmpty(): 0x16 and 0x17
This read-only function returns an unsigned integer value of the predicted remaining battery life at the
present rate of discharge, in minutes. A value of 65,535 indicates battery is not being discharged.
AverageCurrent(): 0x14 and 0x15
ProtocolTypeMinMaxUnit
Table 4-9. AverageTimeToEmpty()
Name
AverageTimeToEmptyRRRWordU2065535min
SEUSFA
Access
4.10 AverageTimeToFull(): 0x18 and 0x19
This read-only function returns an unsigned integer value of the predicted remaining time until battery
reaches full charge, in minutes, based upon AverageCurrent(). The computation accounts for the taper
current time extension for the linear TTF computation based on a fixed AverageCurrent() rate-of-charge
accumulation. A value of 65,535 indicates the battery is not being charged.
Table 4-10. AverageTimeToFull()
Name
AverageTimeToFullRRRWordU2065535min
SEUSFA
Access
4.11 AccumulatedCharge(): 0x1A and 0x1B
AccumulatedCharge() is covered in detail in Accumulated Charge Measurement.
4.12 AccumulatedChargeTime(): 0x1C and 0x1D
AccumulatedChargeTime() is covered in detail in Accumulated Charge Measurement.
ProtocolTypeMinMaxUnit
ProtocolTypeMinMaxUnit
4.13 LastAccumulatedCharge(): 0x1E and 0x1F
LastAccumulatedCharge() is covered in detail in Accumulated Charge Measurement.
LastAccumulatedChargeTime() is covered in detail in Accumulated Charge Measurement.
4.15 AveragePower(): 0x24 and 0x25
This read-only function returns a signed integer value of the 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.
4.16 InternalTemperature(): 0x28 and 0x29
This read-only function returns an unsigned integer value of the internal temperature sensor in units of
0.1°K measured by the fuel gauge. This function can be useful as an additional system-level temperature
monitor if the main Temperature() function is configured for external or host-reported temperature.
4.17 CycleCount(): 0x2A and 0x2B
This read-only function returns an unsigned integer value of the number of cycles that the active cell has
experienced with a range of 0 to 65535. One cycle occurs when accumulated discharge ≥ cycle threshold.
The cycle threshold is calculated based on CEDV Gauging Configuration [CCT]:
This read-only function returns an unsigned integer value of the predicted remaining battery capacity
expressed as a percentage of FullChargeCapacity(), with a range of 0 to 100%. RelativeStateOfCharge()
= RemainingCapacity() ÷ FullChargeCapacity() rounded up to the nearest whole percentage point.
4.19 StateOfHealth(): 0x2E and 0x2F
The StateOfHealth() (SOH) read-only function returns an unsigned integer value, expressed as a
percentage of the ratio of FullChargeCapacity() over the DesignCapacity(), with a range of 0 to 100%.
StateOfHealth() = FullChargeCapacity() ÷ DesignCapacity() rounded up to the nearest whole percentage
point.
4.20 ChargingVoltage(): 0x30 and 0x31
This read-only function returns an unsigned integer value of the desired charging voltage of the battery. A
value of 65,535 indicates that the battery is requesting the maximum voltage from the battery charger.
4.21 ChargingCurrent(): 0x32 and 0x33
This read-only function returns an unsigned integer value of the desired charging current of the battery. A
value of 65,535 indicates that the battery is requesting the maximum current from the battery charger.
4.22 BLTDischargeSet(): 0x34 and 0x35
This read/write word command updates the BLT set threshold that triggers the BLT interrupt in discharge
direction, and sets the OperationStatus()[BLTINT] bit.
4.23 BLTChargeSet(): 0x36 and 0x37
The read/write word command updates the BLT set threshold that triggers the BLT interrupt in charge
direction, and sets the OperationStatus()[BLTINT] bit.
This read-word function returns the contents of the internal status register.
Table 4-11. Operation Status Bit Definitions
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
High ByteRSVDRSVDRSVDRSVDINITCOMPCFGUPDATERSVDRSVD
Low ByteBLTSMTHACTHRVDQEDV2SEC1SEC0CALMD
High Byte
INITCOMP = Indicates if fuel gauge initialization is complete. This bit can only be set with battery presence. True when
set.
CFGUPDATE = Gauge is in CONFIG UPDATE mode. Gauging is suspended.
Low Byte
BLT = Battery Level Threshold Flag
Setting and clearing this flag depends upon various conditions. See Battery Level Threshold for details.
SMTH = Indicates that RemainingCapacity() accumulation is currently scaled by the smoothing engine.
ACTHR = Accumulated Charge Threshold Flag
1 = The accumulated charge was detected passing a threshold.
0 = The accumulated charge was not detected passing a threshold.
VDQ = Indicates if the current discharge cycle is NOT qualified or qualified for an FCC updated. A discharge cycle
valid for FCC update is set.
EDV2 = Indicates if measured cell voltage is above or below EDV2 threshold. Below = true when set.
SEC[1:0] = Defines Current Security Access
11 = Sealed Access
10 = Unsealed Access
01 = Full Access
00 = Unused
CALMD = Toggles with 0x2D command to enable/disable CALIBRATION mode
OperationStatus(): 0x3A and 0x3B
4.25 DesignCapacity(): 0x3C and 0x3D
This read-only function returns the value stored in Design Capacity mAh. This is intended to be the
theoretical or nominal capacity of a new pack, and is used for the calculation of StateOfHealth().
4.26 ManufacturerAccessControl(): 0x3E and 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 run
immediately (identical to writes to Control()).
4.27 MACData(): 0x40 through 0x5F
This read-write block will return 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.
4.28 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 run 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.
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 run until MACDataSum() and MACDataLen() are written
together as a word.
4.30 EOSLearnStatus(): 0x64 and 0x65
This command returns various flags providing information on the EOS Determination function.
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
LSBLCTOLFAULTLABRTLCMDLPERLRLXLCHGLDSG
MSBLDONELRESLRSTORLCTLEDGELUCDLDPAMLDPATLDPAI
RSVD = Reserved. Do not use.
LCTO = Learn Charge Time Out
This bit is set = 1 if the bq34210-Q1 device is in LEARN CHARGE mode and detects the
charging time has exceeded Learn Charge Time Limit. This bit is reset to 0 when a new
learning phase begins.
1 = A learn excessive charge time was detected.
0 = A learn excessive charge time was not detected.
LFAULT = Learn Fault Flag
This bit is set = 1 whenever a learning phase is terminated for any reason other than a valid
termination, and also if any other fault (such as in GaugingStatus() or BatteryStatus()) occurred
during the learning phase. The bit will be reset to 0 when a new learning phase begins.
1 = A learning phase was stopped.
0 = A learning phase was not stopped.
LABRT = Learn Abort on Command
This bit is set = 1 whenever a learning phase was stopped by the host. A bit that was set = 1
will be reset to 0 when a new learning phase begins.
1 = A requested learning phase was stopped.
0 = A requested learning phase was not stopped.
LCMD = Learn Command
This bit is set = 1 if learning is activated and a learning phase was started by a command. The
bit will remain high until the learning phase is complete (including charging, learning,
discharging, and related calculations).
1 = The device is in a command-initiated learning phase.
0 = The device is not in a command-initiated learning phase.
LPER = Learn Periodic Mode
This bit is set = 1 if learning is activated and the bq34210-Q1 device is in PERIODIC LEARN
mode. This bit is only set while the device is in a learning phase.
1 = The device is in PERIODIC LEARN mode.
0 = The device is not in PERIODIC LEARN mode.
LRLX = Learn RELAXATION mode
This bit is set = 1 if learning is activated and the bq34210-Q1 device is in a RELAXATION
mode during learning. This means the cell is waiting to detect a relaxed condition; it may not
have achieved relaxation yet.
1 = The device is in RELAXATION mode during learning.
0 = The device is not in RELAXATION mode during learning.
This bit is set = 1 if the bq34210-Q1 device is in learn CHARGE mode. If the device is
controlling a charger directly through a device pin, then the value of this signal will be reflected
on the selected pin. If instead the host is controlling the charger, then this bit can be used to
signal the host to initiate charging.
1 = A LEARN CHARGE mode is in progress.
0 = A LEARN CHARGE mode is not in progress.
This bit is set = 1 if the bq34210-Q1 device is in automatic END-OF-SERVICE
DETERMINATION mode and the device intends to begin a Learn Discharge Phase. It is set = 0
when the device intends the Learn Discharge Phase to end. If the device is controlling the
discharge directly using the LEN pin, then the LEN pin will reflect the value of LDSG. If instead
the host is controlling the Learn Discharge Current, this bit will signal the host to enable the
Learn Discharge Current.
1 = A Learn Discharge Phase was requested or is in progress.
0 = A Learn Discharge Phase is requested to stop or was stopped.
This bit is set = 1 when a valid learning phase has completed.
1 = A valid learning phase was completed.
0 = A valid learning phase was not completed.
This bit is set = 1 when the bq34210-Q1 device has completed the computation of a new Rcell
value during the present learning phase. This bit is cleared when the learning phase is
complete.
1 = A new value of Rcell was acquired.
0 = A new value of Rcell has not yet been acquired.
LRSTOR = Learn Voltage Restore
This bit is set = 1 if whenever the Learn Discharge Phase is complete and the voltage can be
restored back to its original level. This bit is cleared when the learning phase is complete.
1 = A Learning Discharge Phase has completed, and the voltage can be restored.
0 = The device has completed the learning phase.
LCTLEDGE = Learn Discharge Flag Edge Detected
This bit is set = 1 if whenever LDSG changes state. This can be used by the host as an
interrupt to recognize when a learning load should be activated and when it should be disabled.
This bit clears when the register is read.
1 = A change in LDSG was detected (this is only applicable when LENCTL=0).
0 = A change in LDSG was not detected.
LUCD = Learn Unexpected Current Detected
This bit is set when the device is in LEARNING mode (but not in the Learn Discharge Phase),
and a current is detected differently than what is expected. It is set if the device is attempting to
charge or relax, and a discharge current in excess of Discharge Detection Threshold is
detected. It is also set if the device is in a RELAXATION mode and a charging current in
excess of Charge Detection Threshold is detected. This detection also terminates the
learning phase, and this bit will remain set as a flag to the host as to why the learning phase
was stopped. This bit will be reset to 0 when a new learning phase begins.
1 = An unexpected system-related current was detected during a learning charge or learning
relax period.
0 = An unexpected system-related current was not detected.
This bit is set = 1 when a Learn Discharge Phase was requested by the host but was declined
due to the time since the last Learn Discharge Phase was less than the interval specified in
Minimum Learn Time. A bit that was set = 1 will be reset to 0 when Minimum Learn Time
has passed.
1 = A requested Learn Discharge Phase was declined.
0 = A requested Learn Discharge Phase was not declined.
LDPAT = Learn Discharge Phase Abort on Temperature
This bit is set = 1 when a Learn Discharge Phase was initiated but was stopped due to
Temperature() measured outside the range allowed by Learn Min Temperature and Learn
Max Temperature. A bit that was set = 1 will be reset to 0 when a new Learn Discharge Phase
begins.
1 = A Learn Discharge Phase was stopped.
0 = A Learn Discharge Phase was not stopped.
LDPAI = Learn Discharge Phase Abort on Current
This bit is set = 1 when a Learn Discharge Phase was initiated but was stopped due to
Current() measured outside the range allowed by Learn Discharge Current and Learn
Discharge Current Boundary. A bit that was set = 1 will be reset to 0 when a new Learn
Discharge Phase begins.
1 = A Learn Discharge Phase was stopped.
0 = A Learn Discharge Phase was not stopped.
www.ti.com
4.31 EOSSafetySatus(): 0x66 and 0x67
This command returns flags generated by the EOS Determination function.
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
LSBRSVDRSVDRSVDRSVDRSVD
MSBRSVDRSVDRSVDRSVDRSVDRSDLWARN RSDWARNDRDWARN
Legend = RSVD = Reserved. Do not use.
RSDLALERT = Resistance Slope Decisioning Long-Term Alert
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [RSDLALERT] signal. This signal is cleared when the register is read or if a
new learning phase begins.
1 = An RSDLALERT was detected.
0 = An RSDLALERT was not detected.
RSDALERT = Resistance Slope Decisioning Alert
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [RSDALERT] signal. This signal is cleared when the register is read or if a
new learning phase begins.
1 = An RSDALERT was detected.
0 = An RSDALERT was not detected.
DRDALERT = Direct Resistance Decisioning Alert
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [DRDALERT] signal. This signal is cleared when the register is read or if a
new learning phase begins.
1 = A DRDALERT was detected.
0 = A DRDALERT was not detected.
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [RSDLWARN] signal. This signal is NOT cleared when the register is read. It
can only be cleared using the command EOS_WARNCLR().
1 = An RSDLWARN was detected.
0 = An RSDLWARN was not detected.
RSDWARN = Resistance Slope Decisioning Warning
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [RSDWARN] signal. This signal is NOT cleared when the register is read. It
can only be cleared using the command EOS_WARNCLR().
1 = An RSDWARN was detected.
0 = An RSDWARN was not detected.
DRDWARN = Direct Resistance Decisioning Warning
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects the condition described
above to trigger the [DRDWARN] signal. This signal is NOT cleared when the register is read. It
can only be cleared using the command EOS_WARNCLR().
1 = A DRDWARN was detected.
0 = A DRDWARN was not detected.
4.32 EOSStatus(): 0x68
This command returns additional flags that provide information related to the EOS Determination function.
EOSStatus(): 0x68
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
SRRLSRCLRSVDLTIRSDLIRCELLRIRRCOMPIRCOMP
Legend = RSVD = Reserved. Do not use.
SRRL = Initial RRate Learning in Progress
This bit is set = 1 if the bq34210-Q1 EOS Determination function begins the required learning
phases to calculate a value of Initial RRate, generally after an EOS_RCELL_RRATE_LEARN()
command was issued. The bit will clear when the Initial RRate learning and computation is
complete.
SRCL = Initial Rcell Learning in Progress
This bit is set = 1 if the bq34210-Q1 EOS Determination function begins the required learning
phases to calculate a value of Initial Rcell, generally after an EOS_RCELL_RRATE_LEARN()
command was issued. The bit will clear when the Initial Rcell learning and computation is complete.
LTI = Learn Timer Invalid
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects that the timer was
interrupted since the most recent Rcell was calculated. In this case, the RSD algorithm must capture
two new Rcell values separated in time to calculate a new value of RRate and evaluate this for
corresponding alerts and warnings.
1 = A timer interruption was detected.
0 = A timer interruption was not detected.
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects that the timer was
interrupted since the Initial RRate was calculated. In this case, the RSDL algorithm will no longer
trigger an alert or warning.
1 = A timer interruption was detected.
0 = A timer interruption was not detected.
This bit is set = 1 if the bq34210-Q1 EOS Determination function detects a value of Rcell that is
more than 2% below the previous value of Rcell. This signal is cleared when the register is read or if
a new learning phase begins.
1 = A reduction in Rcell was detected.
0 = A reduction in Rcell was not detected.
IRRCOMP = Initial RRate Calculation Complete
This bit is set = 1 if the bq34210-Q1 EOS Determination function has completed the required
learning phases to calculate a value of Initial RRate. This bit is reset when a new Initial RRate
calculation is triggered until the new calculation is complete. This bit can be written by the host
through loading data flash if the host chooses to initialize the device with previously calculated InitialRRate data and not trigger a new Initial RRate calculation.
1 = Initial RRate was obtained.
0 = Initial RRate was not obtained.
IRCOMP = Initial Rcell Calculation Complete
This bit is set = 1 if the bq34210-Q1 EOS Determination function has completed the required
learning phases to calculate a value of Initial Rcell. This bit is reset when a new Initial Rcell
calculation is triggered until the new calculation is complete. This bit can be written by the host
through loading data flash if the host chooses to initialize the device with previously calculated InitialRcell data and not trigger a new Initial Rcell calculation.
1 = Initial Rcell was obtained.
0 = Initial Rcell was not obtained.
www.ti.com
4.33 AnalogCount(): 0x79
This read-only function returns the analog counter. The value is incremented every time the analog data
for calibration was updated.
4.34 RawCurrent(): 0x7A and 0x7B
This read-only function returns the raw data from the coulomb counter.
4.35 RawVoltage(): 0x7C and 0x7D
This read-only function returns the raw data from the cell voltage reading.
4.36 RawIntTemp(): 0x7E and 0x7F
This read-only function returns the raw data from the internal temperature measurement.
4.37 RawExtTemp(): 0x80 and 0x81
This read-only function returns the raw data from the external temperature measurement.
The data memory contains initialization, default, cell status, calibration, configuration, and user
information. Most data memory parameters reside in volatile RAM initialized by associated parameters
from ROM. The data memory can be accessed two different ways, depending in which mode the fuel
gauge is operating and what data is being accessed.
Most data memory locations are only accessible in the UNSEALED mode by use of the evaluation
software (bqStudio + EV2400) or by data memory block transfers. These locations should be optimized
and/or fixed during the development and manufacturing processes. They become part of a golden image
file and then can be written to multiple battery packs. Once established, the values generally remain
unchanged during end-equipment operation.
5.2Device Access Modes
The fuel gauge provides two access modes, UNSEALED and SEALED, that control the data memory
access permissions. The default access mode of the fuel gauge is UNSEALED, so the system processor
must send a SEALED subcommand after a gauge reset to use the data protection feature.
Chapter 5
SLUUBE8–September 2018
Data Memory Interface
5.3Sealing and Unsealing Data Memory Access
The fuel gauge implements a key-access scheme to transition from SEALED to UNSEALED mode. Once
SEALED via the associated subcommand, a unique set of two keys must be sent to the fuel gauge via the
Control() command to return to UNSEALED mode. The keys must be sent consecutively, with no other
data being written to the Control() register in between. When in SEALED mode, the OperationStatus[SEC]
bits (SEC1,SEC0) are set to 11; but when the Sealed to Unsealed keys are correctly received by the fuel
gauge, the [SEC] bits (SEC1,SEC0) transition to 10.
The unseal code is 0x1404 followed by 0x7236 and must be sent in little endian order.
CalibrationOffset0x91F2Board OffsetI1–1281270Counts
CalibrationOffset0x91F3Int Temp OffsetI1–12812700.1°C
CalibrationOffset0x91F4Ext Temp OffsetI1–12812700.1°C
CalibrationOffset0x91F5Pack V OffsetI1–1281270mV
CalibrationTemperature0x91F6Internal Model Coefficient 1I2–32768327670Num
CalibrationTemperature0x91F8Internal Model Coefficient 2I2–32768327670Num
CalibrationTemperature0x91FAInternal Model Coefficient 3I2–3276832767–13356Num
CalibrationTemperature0x91FCInternal Model Coefficient 4I2–32768327676661Num
CalibrationTemperature0x91FEExternal Model Coefficient 1I2–3276832767–11130Num
CalibrationTemperature0x9200External Model Coefficient 2I2–327683276719142Num
CalibrationTemperature0x9202External Model Coefficient 3I2–3276832767–19262Num
CalibrationTemperature0x9204External Model Coefficient 4I2–327683276728203Num
CalibrationTemperature0x9206External Model Coefficient 5I2–3276832767892Num
SettingsManufacturing0x9308Mfg Status InitH20x00xFFFF0x0007Hex
Gas GaugingCycle0x92EBCycle Count PercentageU1010090%
Gas GaugingFD0x92F0Set Voltage ThresholdI2050003000mV
Gas GaugingFD0x92F2Clear Voltage ThresholdI2050003100mV
Gas GaugingFD0x92F4Set % RSOC ThresholdU101000%
Gas GaugingFD0x92F5Clear % RSOC ThresholdU101005%
Gas GaugingFC0x92F6Set Voltage ThresholdI2050004200mV
Gas GaugingFC0x92F8Clear Voltage ThresholdI2050004100mV
Gas GaugingFC0x92FASet % RSOC ThresholdU10100100%
Gas GaugingFC0x92FBClear % RSOC ThresholdU1010095%
Gas GaugingTD0x92FCSet Voltage ThresholdI2050003200mV
Gas GaugingTD0x92FEClear Voltage ThresholdI2050003300mV
Gas GaugingTD0x9300Set % RSOC ThresholdU101006%
Gas GaugingTD0x9301Clear % RSOC ThresholdU101008%
Gas GaugingTC0x9302Set Voltage ThresholdI2050004200mV
Gas GaugingTC0x9304Clear Voltage ThresholdI2050004100mV
Gas GaugingTC0x9306Set % RSOC ThresholdU10100100%
Gas GaugingTC0x9307Clear % RSOC ThresholdU1010095%
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas Gauging
Gas GaugingCEDV Cfg0x92DERemCap Init PercentU10110100%
Gas GaugingCEDV Profile 10x9345Gauging ConfigurationH20x00x1FFF0x102AHex
Gas GaugingCEDV Profile 10x9347Full Charge CapacityI20327673000mAh
Gas GaugingCEDV Profile 10x9349Design CapacityI20327672200mAh
Gas GaugingCEDV Profile 10x934DDesign VoltageI20327673700mV
Gas GaugingCEDV Profile 10x934FCharge Termination VoltageI201000100mV
Gas GaugingCEDV Profile 10x9351EMFU20655353743—
Gas GaugingCEDV Profile 10x9353C0U2065535149—
Gas GaugingCEDV Profile 10x9355R0U2065535867—
Gas GaugingCEDV Profile 10x9357T0U20655354030—
Gas GaugingCEDV Profile 10x9359R1U2065535316—
Gas GaugingCEDV Profile 10x935BTCU102559—
Gas GaugingCEDV Profile 10x935CC1U102550—
Gas GaugingCEDV Profile 10x935DAge FactorU102550—
Gas GaugingCEDV Profile 10x935EFixed EDV 0I20327673031mV
Gas GaugingCEDV Profile 10x9360EDV 0 Hold TimeU112551s
Gas GaugingCEDV Profile 10x9361Fixed EDV 1I20327673385mV
Gas GaugingCEDV Profile 10x9363EDV 1 Hold TimeU112551s
Gas GaugingCEDV Profile 10x9364Fixed EDV 2I20327673501mV
Gas GaugingCEDV Profile 10x9366EDV 2 Hold TimeU112551s
Gas GaugingCEDV Profile 10x9367Voltage 0% DODI2–32768327674173mV
Gas GaugingCEDV Profile 10x9369Voltage 10% DODI2–32768327674043mV
Gas GaugingCEDV Profile 10x936BVoltage 20% DODI2–32768327673925mV
Gas GaugingCEDV Profile 10x936DVoltage 30% DODI2–32768327673821mV
Gas GaugingCEDV Profile 10x936FVoltage 40% DODI2–32768327673725mV
Gas GaugingCEDV Profile 10x9371Voltage 50% DODI2–32768327673656mV
Gas GaugingCEDV Profile 10x9373Voltage 60% DODI2–32768327673619mV
Gas GaugingCEDV Profile 10x9375Voltage 70% DODI2–32768327673582mV
Gas GaugingCEDV Profile 10x9377Voltage 80% DODI2–32768327673515mV
Gas GaugingCEDV Profile 10x9379Voltage 90% DODI2–32768327673439mV
Gas GaugingCEDV Profile 10x937BVoltage 100% DODI2–32768327672713mV
Gas GaugingCEDV Profile 10x937DJEITA Charge Current T1-T2I2032767300mA
Gas GaugingCEDV Profile 10x937FJEITA Charge Current T2-T3I20327671100mA
Gas GaugingCEDV Profile 10x9381JEITA Charge Current T3-T4I2032767660mA
Gas GaugingCEDV Profile 10x9383JEITA Charge Voltage T1-T2I20327674100mV
Gas GaugingCEDV Profile 10x9385JEITA Charge Voltage T2-T3I20327674200mV
Gas GaugingCEDV Profile 10x9387JEITA Charge Voltage T3-T4I20327674100mV
The following example shows the command sequence needed to modify a data memory parameter in
RAM. For this example, the default Design Capacity is updated from 2200 mAh to 1200 mAh. All device
writes (wr) and reads (rd) refer to the I2C 8-bit addresses 0xAA and 0xAB, respectively.
StepDescriptionPseudo Code
1
2Send ENTER_CGF_UPDATE command (0x0090).wr 0x00 0x90 0x00;
3
4Write 0x49 to 0x3E to access the MSB of Design Capacity.wr 0x3E 0x49;
5Write 0x93 to 0x3F to access the LSB of Design Capacity.wr 0x3F 0x93;
6Read the 1-byte checksum using MACDataSum() command (0x60).rd 0x60 Old_Chksum; (0x6F)
7
8Write 0x49 to 0x3E to access the MSB of Design Capacity.wr 0x3E 0x49;
9Write 0x93 to 0x3F to access the LSB of Design Capacity.wr 0x3F 0x93;
10Read both Design Capacity bytes starting at 0x40.
11
12
13
14
15
16
17
If the device was previously SEALED, UNSEAL it by sending the
appropriate keys to Control() (0x00 and 0x01).
Confirm CFGUPDATE mode by polling OperationStatus() register
until bit 2 is set. May take up to 1 second.
Read the 1-byte block length using the MACDataLen() command
(0x61).
Write both Design Capacity bytes starting at 0x40. For this example,
the new value is 1200 mAh. (0x04B0 in hex)
Calculate the new checksum. The checksum is (255 – x) where x is
the 8-bit summation of the BlockData() (0x40 to 0x5F) on a byte-bybyte basis. A quick way to calculate the new checksum uses a data
replacement method with the old and new data summation bytes.
Refer to the code for the indicated method.
Write new checksum.
For this example, New_Chksum is 0xB0;
Write the block length. The data is actually transferred to the RAM
when the correct checksum and length for the whole block is written.
For this example, Data_len is 0x24;
Exit CFGUPDATE mode by sending either
EXIT_CFG_UPDATE_REINIT (0x0091) or EXIT_CFG_UPDATE
(0x0092) commands.
Confirm CFGUPDATE mode by polling OperationStatus() register
until bit 2 is clear. May take up to 1 second.
If the device was previously SEALED, return to SEALED mode by
sending the Control (0x0030) subcommand.
GAUGEPARCAL, the Gauge Parameter Calculator (sometimes called GPC), helps battery designers
obtain matching Compensated End of Discharge Voltage (CEDV) coefficients for the specific battery
profile. The GPC tool enables a user to increase the accuracy of the fuel gauge IC over temperature. For
more information and detailed documents, go to the GAUGEPARCAL product page.
TI PROVIDES TECHNICAL AND RELIABILITY DATA (INCLUDING DATASHEETS), DESIGN RESOURCES (INCLUDING REFERENCE
DESIGNS), APPLICATION OR OTHER DESIGN ADVICE, WEB TOOLS, SAFETY INFORMATION, AND OTHER RESOURCES “AS IS”
AND WITH ALL FAULTS, AND DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION ANY
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT OF THIRD
PARTY INTELLECTUAL PROPERTY RIGHTS.
These resources are intended for skilled developers designing with TI products. You are solely responsible for (1) selecting the appropriate
TI products for your application, (2) designing, validating and testing your application, and (3) ensuring your application meets applicable
standards, and any other safety, security, or other requirements. These resources are subject to change without notice. TI grants you
permission to use these resources only for development of an application that uses the TI products described in the resource. Other
reproduction and display of these resources is prohibited. No license is granted to any other TI intellectual property right or to any third
party intellectual property right. TI disclaims responsibility for, and you will fully indemnify TI and its representatives against, any claims,
damages, costs, losses, and liabilities arising out of your use of these resources.
TI’s products are provided subject to TI’s Terms of Sale (www.ti.com/legal/termsofsale.html) or other applicable terms available either on
ti.com or provided in conjunction with such TI products. TI’s provision of these resources does not expand or otherwise alter TI’s applicable
warranties or warranty disclaimers for TI products.