SLUUCD5 January   2023 BQ27427

 

  1.   Read This First
    1. 1.1 Notational conventions used in this document:
    2. 1.2 Trademarks
    3. 1.3 Glossary
  2. 1General Description
  3. 2Functional Description
    1. 2.1 Fuel Gauging
    2. 2.2 Temperature Measurement
    3. 2.3 Current Measurement
    4. 2.4 Operating Modes
      1. 2.4.1 SHUTDOWN Mode
      2. 2.4.2 POR and INITIALIZATION Modes
      3. 2.4.3 CONFIG UPDATE Mode
      4. 2.4.4 NORMAL Mode
      5. 2.4.5 SLEEP Mode
    5. 2.5 Pin Descriptions
      1. 2.5.1 GPOUT Pin
      2. 2.5.2 Battery Detection (BIN)
  4. 3Communications
    1. 3.1 I2C Interface
    2. 3.2 I2C Time Out
    3. 3.3 I2C Command Waiting Time
    4. 3.4 I2C Clock Stretching
  5. 4Application Examples
    1. 4.1 Data Memory Parameter Update Example
    2. 4.2 Chemistry Profile Change Example
  6. 5Standard Commands
    1. 5.1  Control(): 0x00 and 0x01
      1. 5.1.1  CONTROL_STATUS: 0x0000
      2. 5.1.2  DEVICE_TYPE: 0x0001
      3. 5.1.3  FW_VERSION: 0x0002
      4. 5.1.4  DM_CODE: 0x0004
      5. 5.1.5  PREV_MACWRITE: 0x0007
      6. 5.1.6  CHEM_ID: 0x0008
      7. 5.1.7  BAT_INSERT: 0x000C
      8. 5.1.8  BAT_REMOVE: 0x000D
      9. 5.1.9  SET_CFGUPDATE: 0x0013
      10. 5.1.10 SMOOTH_SYNC: 0x0019
      11. 5.1.11 SHUTDOWN_ENABLE: 0x001B
      12. 5.1.12 SHUTDOWN: 0x001C
      13. 5.1.13 SEALED: 0x0020
      14. 5.1.14 PULSE_SOC_INT: 0x0023
      15. 5.1.15 CHEM_A:/B/C 0x0030/0x0031/0x0032
      16. 5.1.16 RESET: 0x0041
      17. 5.1.17 SOFT_RESET: 0x0042
    2. 5.2  Temperature(): 0x02 and 0x03
    3. 5.3  Voltage(): 0x04 and 0x05
    4. 5.4  Flags(): 0x06 and 0x07
    5. 5.5  NominalAvailableCapacity(): 0x08 and 0x09
    6. 5.6  FullAvailableCapacity(): 0x0A and 0x0B
    7. 5.7  RemainingCapacity(): 0x0C and 0x0D
    8. 5.8  FullChargeCapacity(): 0x0E and 0x0F
    9. 5.9  AverageCurrent(): 0x10 and 0x11
    10. 5.10 AveragePower(): 0x18 and 0x19
    11. 5.11 StateOfCharge(): 0x1C and 0x1D
    12. 5.12 InternalTemperature(): 0x1E and 0x1F
    13. 5.13 RemainingCapacityUnfiltered(): 0x28 and 0x29
    14. 5.14 RemainingCapacityFiltered(): 0x2A and 0x2B
    15. 5.15 FullChargeCapacityUnfiltered(): 0x2C and 0x2D
    16. 5.16 FullChargeCapacityFiltered(): 0x2E and 0x2F
    17. 5.17 StateOfChargeUnfiltered(): 0x30 and 0x31
  7. 6Extended Data Commands
    1. 6.1 DataClass(): 0x3E
    2. 6.2 DataBlock(): 0x3F
    3. 6.3 BlockData(): 0x40 Through 0x5F
    4. 6.4 BlockDataChecksum(): 0x60
    5. 6.5 BlockDataControl(): 0x61
    6. 6.6 Reserved—0x62 Through 0x7F
  8. 7Data Memory
    1. 7.1 Data Memory Interface
      1. 7.1.1 Accessing the Data Memory
      2. 7.1.2 Access Modes
      3. 7.1.3 SEALING and UNSEALING Data Memory Access
    2. 7.2 Data Types Summary
    3. 7.3 Data Flash Summary
    4. 7.4 Data Memory Parameter Descriptions
      1. 7.4.1 Configuration Class
        1. 7.4.1.1 Safety Subclass
          1. 7.4.1.1.1 Over-Temperature Threshold, Under-Temperature Threshold, Temperature Hysteresis
        2. 7.4.1.2 Charge Termination Subclass
          1. 7.4.1.2.1 Terminate Charge Alarm Set %, Terminate Charge Alarm Clear %
          2. 7.4.1.2.2 Full Charge Set %, Full Charge Clear %
          3. 7.4.1.2.3 DOD at EOC Delta Temperature
        3. 7.4.1.3 Discharge Subclass
          1. 7.4.1.3.1 State-of-Charge 1 Set Threshold, State-of-Charge 1 Clear Threshold
          2. 7.4.1.3.2 State-of-Charge Final Set Threshold, State-of-Charge Final Clear Threshold
        4. 7.4.1.4 Registers
          1. 7.4.1.4.1 Operation Configuration (OpConfig) Register
          2. 7.4.1.4.2 Operation Configuration B (OpConfigB) Register
          3. 7.4.1.4.3 Operation Configuration C (OpConfigC) Register
          4. 7.4.1.4.4 Operation Configuration D (OpConfigD) Register
      2. 7.4.2 Gas (Fuel) Gauging Class
        1. 7.4.2.1 IT Cfg Subclass
          1. 7.4.2.1.1  OCV Wait Time
          2. 7.4.2.1.2  Ra Filter
          3. 7.4.2.1.3  Resistance Update Voltage Drop
          4. 7.4.2.1.4  Samples to Wake
          5. 7.4.2.1.5  Qmax Max Time
          6. 7.4.2.1.6  Fast Qmax Start DOD%, Fast Qmax Start Voltage Delta, Fast Qmax Current Threshold
          7. 7.4.2.1.7  Fast Qmax End DOD%, Fast Qmax Minimum Data Points
          8. 7.4.2.1.8  Maximum Qmax Change
          9. 7.4.2.1.9  Qmax Maximum Delta %
          10. 7.4.2.1.10 Maximum % Default Qmax
          11. 7.4.2.1.11 Qmax Filter
          12. 7.4.2.1.12 Simulation ResRelax Time (ResRelax Time)
          13. 7.4.2.1.13 User-Defined Rate-Current
          14. 7.4.2.1.14 User-Defined Rate-Power
          15. 7.4.2.1.15 Maximum Simulation Rate, Minimum Simulation Rate
          16. 7.4.2.1.16 Ra Max Delta
          17. 7.4.2.1.17 Minimum Delta Voltage, Maximum Delta Voltage
          18. 7.4.2.1.18 DeltaV Maximum Delta Voltage
          19. 7.4.2.1.19 Terminate Voltage Valid Time
          20. 7.4.2.1.20 Trace Resistance
          21. 7.4.2.1.21 Downstream Resistance
          22. 7.4.2.1.22 Predict Ambient Time
          23. 7.4.2.1.23 Design Energy Scale
          24. 7.4.2.1.24 Fast Scale Load Select
          25. 7.4.2.1.25 Chg DOD Correction Start SOC
          26. 7.4.2.1.26 Chg DOD Correction Taper Ratio
        2. 7.4.2.2 Current Thresholds Subclass
          1. 7.4.2.2.1 Discharge and Charge Detection Threshold, Quit Current and Relax Time, Discharge and Charge Relax Time
          2. 7.4.2.2.2 Max IR Correct
        3. 7.4.2.3 State Subclass
          1. 7.4.2.3.1  Qmax Cell 0
          2. 7.4.2.3.2  Update Status
          3. 7.4.2.3.3  Reserve Capacity (mAh)
          4. 7.4.2.3.4  Load Select, Load Mode
          5. 7.4.2.3.5  Design Capacity, Design Energy, Default Design Capacity
          6. 7.4.2.3.6  Terminate Voltage
          7. 7.4.2.3.7  Thermal Rise Factor (T Rise)
          8. 7.4.2.3.8  Thermal Time Constant (T Time Constant)
          9. 7.4.2.3.9  SOC Interrupt Delta
          10. 7.4.2.3.10 Taper Rate, Taper Voltage
          11. 7.4.2.3.11 Sleep Current
          12. 7.4.2.3.12 Voltage at Charge Termination
          13. 7.4.2.3.13 Average Current Last Run
          14. 7.4.2.3.14 Average Power Last Run
          15. 7.4.2.3.15 Delta Voltage
      3. 7.4.3 Ra Table Class
        1. 7.4.3.1 R_a RAM Subclass
      4. 7.4.4 Chemistry Class
        1. 7.4.4.1 Chem Data Subclass
          1. 7.4.4.1.1 Q Invalid Max V and Q Invalid Min V
          2. 7.4.4.1.2 V at Chg Term
          3. 7.4.4.1.3 Taper Voltage
      5. 7.4.5 Calibration Class
        1. 7.4.5.1 Data Subclass
          1. 7.4.5.1.1 Board Offset
          2. 7.4.5.1.2 Internal Temperature Offset and External Temperature Offset
          3. 7.4.5.1.3 Pack Voltage Offset
          4. 7.4.5.1.4 Ext a Coef and Ext b Coef
        2. 7.4.5.2 CC Cal Subclass
          1. 7.4.5.2.1 CC Cal Temp
        3. 7.4.5.3 Current Subclass
          1. 7.4.5.3.1 Deadband
      6. 7.4.6 Security Class
        1. 7.4.6.1 Codes Subclass
          1. 7.4.6.1.1 Sealed to Unsealed
  9. 8Updating BQ27427 Configuration Parameters
    1. 8.1 Gauge Mode FlashStream (gm.fs) Files
    2. 8.2 Write Command
    3. 8.3 Read and Compare Command
    4. 8.4 Wait Command
    5. 8.5 CONFIG UPDATE Mode
  10. 9Revision History

Data Memory Parameter Update Example

The following example shows the command sequence needed to modify a Data Memory parameter. For this example, the default Design Capacity is updated from 1000 mAh to 1200 mAh. All device writes (wr) and reads (rd) refer to the I2C 8-bit addresses 0xAA and 0xAB, respectively.

StepDescriptionPseudo Code
1If the device has been previously SEALED, UNSEAL it by sending the appropriate keys to Control() (0x00 and 0x01). Write the first 2 bytes of the UNSEAL key using the Control(0x8000) command. Without writing any other bytes to the device, write the second (identical) 2 bytes of the UNSEAL key using the Control(0x8000) command.
Note: The remaining steps in this table will use this single-packet method when writing multiple bytes.
//Two-byte incremental Method
  wr 0x00 0x00 0x80;
  wr 0x00 0x00 0x80;
//Alternative single byte method
  wr 0x00 0x00;
  wr 0x01 0x80;
  wr 0x00 0x00;
  wr 0x01 0x80;
2Send SET_CFGUPDATE subcommand, Control(0x0013).
wr 0x00 0x13 0x00;
3Confirm CFGUPDATE mode by polling Flags() register until bit 4 is set. May take up to 1 second.
rd 0x06 Flags_register;
4Write 0x00 using BlockDataControl() command (0x61) to enable block data memory control.
wr 0x61 0x00;
5Write 0x52 using the DataBlockClass() command (0x3E) to access the State subclass (82 decimal, 0x52 hex) containing the Design Capacity parameter.
wr 0x3E 0x52;
6Write the block offset location using DataBlock() command (0x3F).
Note: To access data located at offset 0 to 31, use offset = 0x00. To access data located at offset 32 to 41, use offset = 0x01.
wr 0x3F 0x00;
7Read the 1-byte checksum using the BlockDataChecksum() command (0x60).
rd 0x60 OLD_Csum;
8Read both Design Capacity bytes starting at 0x46 (offset = 6). Block data starts at 0x40, so to read the data of a specific offset, use address 0x40 + mod(offset, 32).
Note: LSB byte is coincidentally the same value as the checksum.
rd 0x46 OLD_DesCap_MSB;
rd 0x47 OLD_DesCap_LSB;
9Write both Design Capacity bytes starting at 0x46 (offset = 6). For this example, the new value is 1200 mAh. (0x04B0 hex)
wr 0x46 0x04;
wr 0x47 0xB0;
10Compute the new block checksum. The checksum is (255 – x) where x is the 8-bit summation of the BlockData() (0x40 to 0x5F) on a byte-by-byte 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.
temp = mod(255 - OLD_Csum
  - OLD_DesCap_MSB
  - OLD_DesCap_LSB, 256);
NEW_Csum = 255 - mod(temp + 
  + 0x04 + 0xB0, 256);
11Write new checksum. The data is actually transferred to the Data Memory when the correct checksum for the whole block (0x40 to 0x5F) is written to BlockDataChecksum() (0x60). For this example New_Csum is 0x1F.
wr 0x60 New_Csum;
//Example: wr 0x60 0x1F
12Exit CFGUPDATE mode by sending SOFT_RESET subcommand, Control(0x0042).
wr 0x00 0x42 0x00;
13Confirm CFGUPDATE has been exited by polling Flags() register until bit 4 is cleared. May take up to 1 second.
rd 0x06 Flags_register;
14If the device was previously SEALED, return to SEALED mode by sending the Control(0x0020) subcommand.
wr 0x00 0x20 0x00;