SLUUC54C February   2020  – March 2024 BQ27Z558 , BQ27Z561 , BQ27Z561-R2

 

  1.   1
  2. Preface
    1. 1.1 Read this First
    2. 1.2 Notational Conventions
    3. 1.3 Trademarks
  3.   Introduction
  4. Basic Measurement System
    1. 2.1 Introduction
    2. 2.2 Current and Coulomb Counting
    3. 2.3 Voltage
    4. 2.4 Temperature
      1. 2.4.1 Internal Temperature
      2. 2.4.2 Cell Temperature
      3. 2.4.3 Temperature Configuration
  5. Power Modes
    1. 3.1 Introduction
    2. 3.2 NORMAL Mode
    3. 3.3 SLEEP Mode
      1. 3.3.1 Device Sleep
    4. 3.4 DEEP SLEEP Mode
    5. 3.5 HIBERNATE Mode
    6. 3.6 Power Modes Configuration
  6. Gauging
    1. 4.1  Impedance Track (IT) Model
    2. 4.2  Thermal Model
    3. 4.3  Gauging Capacities
    4. 4.4  Learning Cycles
    5. 4.5  Impedance Track Configuration
    6. 4.6  Gas Gauge Modes
    7. 4.7  QMax and Ra
      1. 4.7.1 QMax Initial Values
      2. 4.7.2 QMax Update Conditions
        1. 4.7.2.1 Base Required Conditions
        2. 4.7.2.2 Tracking QMax Updates
        3. 4.7.2.3 Relaxed Cell OCV
        4. 4.7.2.4 OCV Prediction
        5. 4.7.2.5 Cycle Count Based QMax Degradation
        6. 4.7.2.6 38
        7. 4.7.2.7 Fast QMax Update Conditions
        8. 4.7.2.8 QMax and Fast QMax Update Boundary Check
      3. 4.7.3 Ra Table Initial Values
        1. 4.7.3.1 R_a0 Table
        2. 4.7.3.2 R_a0x Table
      4. 4.7.4 Ra Table Update Conditions
      5. 4.7.5 Fast Resistance Scaling
        1. 4.7.5.1 Calculation of Resistance Scale
        2. 4.7.5.2 Negative Resistance Scale
        3. 4.7.5.3 Reset of Resistance Scale
        4. 4.7.5.4 Application of Resistance Scale
        5. 4.7.5.5 Fast Resistance Scaling Configuration
    8. 4.8  FullChargeCapacity (FCC), RemainingCapacity (RemCap), and RelativeStateOfCharge (RSOC)
      1. 4.8.1 Smoothing Engine
        1. 4.8.1.1 Smoothing to 0% in DISCHARGE Mode
        2. 4.8.1.2 Smoothing to 100% in CHARGE Mode
        3. 4.8.1.3 Smoothing in RELAX Mode
    9. 4.9  Impedance Track (IT) Configuration Options
    10. 4.10 State-Of-Health (SOH)
    11. 4.11 TURBO Mode 3.0
    12. 4.12 Battery Trip Point (BTP)
  7. Lifetime Data Collection
    1. 5.1 Description
    2. 5.2 Reset
  8. Host Interrupts
    1. 6.1 Description
    2. 6.2 Voltage and Temperature Interrupts
    3. 6.3 RSOC Interrupts
    4. 6.4 Host Interrupts Configuration
  9. Programmable Pulse Width
    1. 7.1 Description
    2. 7.2 Programmable Pulse Width Configuration
  10. Device Security
    1. 8.1 Description
    2. 8.2 SHA-256 Authentication
      1. 8.2.1 Secure Key
      2. 8.2.2 Authentication Flow
    3. 8.3 Security Modes
      1. 8.3.1 SEALING and UNSEALING Data Flash
      2. 8.3.2 SEALED to UNSEALED
      3. 8.3.3 UNSEALED to FULL ACCESS
  11. Advanced Charge Algorithm
    1. 9.1  Introduction
    2. 9.2  Charge Temperature Ranges
    3. 9.3  Voltage Range
      1. 9.3.1 RelativeStateofCharge() Range
    4. 9.4  Charging Current
    5. 9.5  Charging Voltage
      1. 9.5.1 Charge Voltage Compensation for System Impedance
    6. 9.6  Charging Degradation Modes
    7. 9.7  Cell Swelling Control (via Charging Voltage Degradation)
    8. 9.8  Valid Charge Termination
    9. 9.9  Charge and Discharge Alarms
    10. 9.10 Terminate Charge and Discharge Alarms
    11. 9.11 Precharge
    12. 9.12 Maintenance Charge
    13. 9.13 Charge Inhibit
  12. 10Communications
    1. 10.1 HDQ Single-Pin Serial Interface
    2. 10.2 I2C Interface
      1. 10.2.1 I2C Clock Frequency
      2. 10.2.2 I2C Time Out
      3. 10.2.3 I2C Command Waiting Time
      4. 10.2.4 I2C Clock Stretching
  13. 11Manufacture Production
    1. 11.1 Manufacture Testing
      1. 11.1.1 Manufacturing Status Configuration
    2. 11.2 I2C Configuration
    3. 11.3 Manufacturer Information Blocks
    4. 11.4 Verification of Data Flash
    5. 11.5 Calibration
  14.   Calibration
    1. 12.1 Cell (BAT) Voltage Calibration
      1. 12.1.1 Voltage Calibration Data Flash
    2. 12.2 Current Calibration
      1. 12.2.1 CC Gain/Capacity Gain Calibration
      2. 12.2.2 Deadbands
        1. 12.2.2.1 Current Deadband
        2. 12.2.2.2 Coulomb Counter Deadband
      3. 12.2.3 Current Calibration Data Flash
    3. 12.3 Temperature Calibration
      1. 12.3.1 Internal Temperature Sensor Calibration
      2. 12.3.2 TS Calibration
      3. 12.3.3 Temperature Calibration Data Flash
      4. 12.3.4 Cell Temp Model
      5. 12.3.5 Internal Temp Model
  15. 12Data Commands
    1. 12.1 Standard Data Commands
      1. 12.1.1  0x00/01 ManufacturerAccess()/ControlStatus()
      2. 12.1.2  0x02/03 AtRate()
      3. 12.1.3  0x04/05 AtRateTimeToEmpty()
      4. 12.1.4  0x06/07 Temperature()
      5. 12.1.5  0x08/09 Voltage()
      6. 12.1.6  0x0A/0B BatteryStatus()
      7. 12.1.7  0x0C/0D Current()
      8. 12.1.8  0x10/11 RemainingCapacity()
      9. 12.1.9  0x12/13 FullChargeCapacity()
      10. 12.1.10 0x14/15 AverageCurrent()
      11. 12.1.11 0x16/17 AverageTimeToEmpty()
      12. 12.1.12 0x18/19 AverageTimeToFull()
      13. 12.1.13 0x1E/1F MaxLoadCurrent()
      14. 12.1.14 0x20/21 MaxLoadTimeToEmpty()
      15. 12.1.15 0x22/23 AveragePower()
      16. 12.1.16 0x28/29 InternalTemperature()
      17. 12.1.17 0x2A/2B CycleCount()
      18. 12.1.18 0x2C/2D RelativeStateOfCharge()—RSOC
      19. 12.1.19 0x2E/2F StateOfHealth()
      20. 12.1.20 0x30/31 ChargingVoltage()
      21. 12.1.21 0x32/33 ChargingCurrent()
      22. 12.1.22 0x34/35 TerminateVoltage()
      23. 12.1.23 0x36/0x37/0x38/0x39 Timestamp()
      24. 12.1.24 QMax Cycles() 0x3A/3B
      25. 12.1.25 0x3C/3D DesignCapacity()
      26. 12.1.26 0x3E/3F AltManufacturerAccess()
      27. 12.1.27 0x40/0x5F MACData()
      28. 12.1.28 0x60 MACDataChecksum()
      29. 12.1.29 0x61 MACDataLength()
      30. 12.1.30 0x62/63 VoltHiSetThreshold
      31. 12.1.31 0x64/65 VoltHiClearThreshold
      32. 12.1.32 0x66/67 VoltLoSetThreshold
      33. 12.1.33 0x68/69 VoltLoClearThreshold
      34. 12.1.34 0x6A TempHiSetThreshold
      35. 12.1.35 0x6B TempHiClearThreshold
      36. 12.1.36 0X6C TempLoSetThreshold
      37. 12.1.37 0x6D TempLoClearThreshold
      38. 12.1.38 0x6E InterruptStatus()
      39. 12.1.39 0x6F SOCSetDeltaThreshold
    2. 12.2 0x70, 0x71 SusTurboPwr()
    3. 12.3 0x72, 0x73 MaxTurboPwr()
    4. 12.4 0x74, 0x75 SusTurboCurr()
    5. 12.5 0x76, 0x77 MaxTurboCurr()
    6. 12.6 0x78, 0x79 TurboSysR()
    7. 12.7 0x7A, 0x7B TurboEdv()
    8. 12.8 0x00, 0x01 ManufacturerAccess() and 0x3E, 0x3F AltManufacturerAccess()
      1. 12.8.1  AltManufacturerAccess() 0x0001 Device Type
      2. 12.8.2  AltManufacturerAccess() 0x0002 Firmware Version
      3. 12.8.3  AltManufacturerAccess() 0x0003 Hardware Version
      4. 12.8.4  AltManufacturerAccess() 0x0004 Instruction Flash Signature
      5. 12.8.5  AltManufacturerAccess() 0x0005 Static DF Signature
      6. 12.8.6  AltManufacturerAccess() 0x0006 Chemical ID
      7. 12.8.7  AltManufacturerAccess() 0x0007 Pre_MACWrite
      8. 12.8.8  AltManufacturerAccess() 0x0008 Static Chem DF Signature
      9. 12.8.9  AltManufacturerAccess() 0x0009 All DF Signature
      10. 12.8.10 AltManufacturerAccess() 0x0012 Device Reset
      11. 12.8.11 AltManufacturerAccess() 0x0017 QMax Day
      12. 12.8.12 AltManufacturerAccess() 0x0021 Gauging
      13. 12.8.13 AltManufacturerAccess() 0x0023 Lifetime Data Collection
      14. 12.8.14 AltManufacturerAccess() 0x0028 Lifetime Data Reset
      15. 12.8.15 AltManufacturerAccess() 0x002D CALIBRATION Mode
      16. 12.8.16 ManufacturerAccess() 0x002E Lifetime Data Flush
      17. 12.8.17 ManufacturerAccess() 0x002F Lifetime Data SPEED UP Mode
      18. 12.8.18 AltManufacturerAccess() 0x0030 Seal Device
      19. 12.8.19 AltManufacturerAccess() 0x0035 Security Keys
      20. 12.8.20 AltManufacturerAccess() 0x0037 Authentication Key
      21. 12.8.21 AltManufacturerAccess() 0x0041 Device Reset
      22. 12.8.22 AltManufacturerAccess() 0x0044 Set Deep Sleep
      23. 12.8.23 AltManufacturerAccess() 0x0045 Clear Deep Sleep
      24. 12.8.24 AltManufacturerAccess() 0x0046 Pulse GPIO
      25. 12.8.25 AltManufacturerAccess() 0x0047 Tambient Sync
      26. 12.8.26 AltManufacturerAccess() 0x0047 Clear GPIO
      27. 12.8.27 AltManufacturerAccess() 0x0047 Set GPIO
      28. 12.8.28 AltManufacturerAccess() 0x004A Device Name
      29. 12.8.29 AltManufacturerAccess() 0x004B Device Chem
      30. 12.8.30 AltManufacturerAccess() 0x004C Manufacturer Name
      31. 12.8.31 AltManufacturerAccess() 0x004D Manufacture Date
      32. 12.8.32 AltManufacturerAccess() 0x004E Serial Number
      33. 12.8.33 AltManufacturerAccess() 0x0054 OperationStatus
        1. 12.8.33.1 Operation Status A
        2. 12.8.33.2 Operation Status B
      34. 12.8.34 AltManufacturerAccess() 0x0055 ChargingStatus
        1. 12.8.34.1 Temp Range
        2. 12.8.34.2 Charging Status
      35. 12.8.35 AltManufacturerAccess() 0x0056 GaugingStatus
      36. 12.8.36 AltManufacturerAccess() 0x0057 ManufacturingStatus
      37. 12.8.37 AltManufacturerAccess() 0x0060 Lifetime Data Block 1
      38. 12.8.38 AltManufacturerAccess() 0x0062 Lifetime Data Block 3
      39. 12.8.39 ManufacturerAccess() 0x0063 Lifetime Data Block 4
      40. 12.8.40 ManufacturerAccess() 0x0065-0x006B Lifetime SOC Range Table Data Blocks
      41. 12.8.41 AltManufacturerAccess() 0x0070 ManufacturerInfo
      42. 12.8.42 AltManufacturerAccess() 0x0071 DAStatus1
      43. 12.8.43 AltManufacturerAccess() 0x0072 DAStatus2
      44. 12.8.44 AltManufacturerAccess() 0x0073 ITStatus1
      45. 12.8.45 AltManufacturerAccess() 0x0074 ITStatus2
      46. 12.8.46 AltManufacturerAccess() 0x0075 ITStatus3
      47. 12.8.47 AltManufacturerAccess() 0x0077 FCC_SOH
      48. 12.8.48 AltManufacturerAccess() 0x0078 Filtered Capacity
      49. 12.8.49 AltManufacturerAccess() 0x007A ManufacturerInfoB
      50. 12.8.50 AltManufacturerAccess() 0x007B ManufacturerInfoC
      51. 12.8.51 ManufacturerAccess() 0x00B0 ChargingVoltageOverride
      52. 12.8.52 AltManufacturerAccess() 0x0F00 ROM Mode
      53. 12.8.53 Data Flash Access() 0x4000–0x5FFF
      54. 12.8.54 AltManufacturerAccess() 0x7C40 Switch to HDQ
      55. 12.8.55 AltManufacturerAccess() 0xF080 Exit Calibration Output Mode
      56. 12.8.56 AltManufacturerAccess() 0xF081 Output CC and ADC for Calibration
  16. 13Data Flash Access and Format
    1. 13.1 Data Flash Access
      1. 13.1.1 Minimum Voltage
    2. 13.2 Data Formats
      1. 13.2.1 Unsigned Integer
      2. 13.2.2 Integer
      3. 13.2.3 Floating Point
      4. 13.2.4 Hex
      5. 13.2.5 String
  17. 14Data Flash Summary
    1. 14.1 Data Flash Table
  18. 15Revision History

0x00, 0x01 ManufacturerAccess() and 0x3E, 0x3F AltManufacturerAccess()

AltManufacturerAccess() provides a method of reading and writing data in the Manufacturer Access System (MAC). The MAC command is sent via AltManufacturerAccess() by a block protocol. The result is returned on AltManufacturerAccess() via a block read.

Commands are sent by writing to registers 0x00/0x01 or 0x3E/0x3F. 0x3E and 0x3F work the same as 0x00 and 0x01, but are primarily intended for block writes and reads.

Example: Send a MAC Gauging() to enable IT via AltManufacturerAccess().

  1. With Impedance Track disabled, send Gauging() (0x0021) to AltManufacturerAccess()
    1. Command Write, start address = 0x3E (or 0x00). Data = 21 00 (data must be sent in little endian).
  2. IT is enabled, ManufacturingStatus()[GAUGE_EN] = 1.

Example: Read Chemical ID() (0x0006) via AltManufacturerAccess().

  1. Send Chemical ID() to AltManufacturerAccess().
    1. Command Write, start address = 0x3E (or 0x00). Data sent = 06 00 (data must be sent in little endian).
  2. Read the result from AltManufacturerAccess() and MACData().
    1. Command Read, start address = 0x3E length = 36 bytes. The first 4 bytes of the response will be 06 00 10 12.
    2. The first two bytes "06 00" is the MAC command (for verification).
    3. The second two bytes "10 12" are the Chem ID in little endian. That is, 0x1210 for ChemID 1210.
    4. The last two bytes of the 36-byte block will be the checksum and length. The length in this case will be 6. The checksum is 0xFF – (sum of the first length – 2 bytes). The length and checksum are used to validate the block response.

It is recommended to send “command only” operations to 0x00 and 0x01, and to set the command for a read back in the same way. The reason for this is that it can always reset any legacy support options that may be in effect; whereas, some legacy support options use 0x3E and 0x3F for other purposes. However, 0x3E and 0x3F can always safely be used for block reads. For backward compatibility, a request of the device number or version reports a value for a read on 0x00/0x01. The response word for the MAC commands DEV and VERSION (0x0001 and 0x0002) should report 0xFFA5 as the legacy response. This is meant as a token to indicate to the host that the real response is on the extended block. “Command only” operations take place immediately after the word write.

Table 12-2 AltManufacturerAccess() Command List
CommandFunctionAccessFormatData Read on MACData()Not Available in SEALED ModeTypeUnits
0x0001DeviceTypeRBlockhex
0x0002FirmwareVersionRBlockhex
0x0003HardwareVersionRBlockhex
0x0004IFChecksumRBlockhex
0x0005StaticDFSignatureRBlockhex
0x0006ChemIDRBlockhex
0x0007Prev_MacWriteRBlockhex
0x0008StaticChemDFSignatureRBlockhex
0x0009AllDFSignatureRBlockhex
0x012ResetWhex
0x0017QMax DayRBlockU2days
0x0021Gauging (IT Enable)Whex
0x0023LifetimeDataCollectionWhex
0x0028LifetimeDataResetWhex
0x002DCalibrationModeWhex
0x002ELifetimeDataFlushWhex
0x002FLifetimeDataSpeedUp
Mode
Whex
0x0030SealDeviceWhex
0x0035SecurityKeysR/WBlockhex
0x0041ResetWhex
0x0044SetDeepSleepWhex
0x0045ClearDeepSleepWhex
0x0046PulseGPIOWhex
0x0047TambientSyncWhex
0x0048ClearGPIOWhex
0x0049SetGPIOWhex
0x004ADevice NameR/WBlockhex
0x004BDevice ChemR/WBlockhex
0x004CManufacturer NameR/WBlockhex
0x004DManufacture DateR/WBlockhex
0x004ESerial NumberR/Whex
0x0054OperationStatusRBlockhex
0x0055ChargingStatusRBlockhex
0x0056GaugingStatusRBlockhex
0x0057ManufacturingStatusRBlockhex
0x0060LifetimeDataBlock1RBlockMixedMixed
0x0061LifetimeDataBlock2RBlockMixedMixed
0x0062LifetimeDataBlock3RBlockU4s
0x0063LifetimeDataBlock4RBlockMixedMixed
0x0065LifetimeDataBlock6RBlockMixedMixed
0x0065LifetimeDataBlock7RBlockMixedMixed
0x0067LifetimeDataBlock8RBlockMixedMixed
0x0068LifetimeDataBlock9RBlockMixedMixed
0x0069LifetimeDataBlock10RBlockMixedMixed
0x006ALifetimeDataBlock11RBlockMixedMixed
0x006BLifetimeDataBlock12RBlockMixedMixed
0x0070ManufacturerInfoR/WBlockhex
0x0071DAStatus1RBlockMixedMixed
0x0072DAStatus2RBlockMixedMixed
0x0073ITStatus1RBlockMixedMixed
0x0074ITStatus2RBlockMixedMixed
0x0075ITStatus3RBlockMixedMixed
0x0077FCC_SOHRBlockhex
0x0078Filtered CapacityRBlockHexMixed
0x007AManufacturerInfoBR/WBlockHex
0x007BManufacturerInfoCR/WBlockHex
0x00B0ChargingVoltageOverrideR/WBlockI2mV
0x01yyDFAccessRowAddressR/WBlockhex
0x0F00ROMModeWhex
0x7C40SwitchToHDQWhex
0xF080ExitCalibrationOutputR/WBlockhex
0xF081OutputCCandADCforCalibrationR/WBlockhex