This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ40Z80: The BMS is not charging or discharging the battery and can't even access through I2C

Part Number: BQ40Z80
Other Parts Discussed in Thread: BQ25792, , BQSTUDIO, EV2400

I have designed a BMS system with 4 cells in the series configuration using BQ40Z80RSMT IC. I have verified the schematic and footprints and the connections to the IC. I am not able to access the internal registers of the BMS module through I2C the device is not responding to the address 0x16. Also, the DSG pin is low and the battery voltage is only coming up to the VCC pin. Can you please help me to identify the issue?

The BMS is connected to a battery charger IC BQ25792 for charging and discharging. The charging is happening when I connect the battery externally without BMS. The battery voltage at VPACK is zero in discharging conditions. Please use the attached schematics

  • Hi Dileep,

    Do you have pull-up resistors on the SMBus? Those are needed to communicate correctly. If that doesn't fix your issue you may want to try communication through the EVM - that can tell you if the issue is with the gauge. You may also want to double check that your messages are SMBus compatible too. The discharge pin is likely off because the FETs are disabled, which I don't believe you can change unless you have communication with the device.

  • There is a 10K pullup in the I2C bus and the same I2C bus is connected to PCA9548APW,118 and we can communicate to that device with 100KHz speed. Is there any reason why the DSG pin is low even though the battery input voltage is correct?

  • Dileep,

    The discharge pin is likely low because the FETs are disabled, and you need communication to change those settings. Ensure that the I2C messages are SMBus compatible, since the BQ40Z80 officially supports SMBus, not I2C. It may be helpful to provide logic analyzer waveforms as well.

  • Thank you for the reply. The issue with communication is resolved when we used the SMBus protocol.

  • Now we can able to communicate with the IC through SMBUS. We tried by reading some registers (0x09 - voltage = 15235 mV and 0x0A - current = 81mA) as expected(4 cells in series mode)
    But, we cannot able to read any of the 32 bytes register or any of the register which has greater than 10 bytes, when we try  to read 0x71 register (DA status1) we got only 20 bytes in the
    response(when we send the block read command in SMBUS for 0x71 register, the first byte which is read back is itself 20 - indicates the number of bytes in the response).
    There is no discharge from the IC, discharge FET is in off state. we tried to toggle the Discharge by sending the command -( 0x00 0x00 0x20 ) and (0x40 0x02 0x20 0x00) .
    It is not helping.

    Then we try to read the operation status register - 0x54 , we got the output as  (00 00 6D 81 -- format converted from little endian). we have decoded that one and found out the following,

    1. charging and discharging disabled -  Active
    2. Shutdown triggered via low battery stack voltage - Active
    3. Pre discharge, Pre- charge, CHG and DCHG FET's - Inactive
    4. System present low - Active

  • Dileep,

    0x20 is 32, so this is the correct response from the gauge.

    Have you manually enabled the FETs? Discharge will not work unless you have FETs enabled, and the operation status indicates that they're disabled. You can enable them by setting the FET Control command (0x0022 in Manufacturing Access) and checking the FET_EN bit in the ManufacturingStatus register to see if it's enabled. Alternatively you can set the enable bit in MfgStatusInit in data memory and reset the gauge for the registers to update.

  • We have tried the same but there are no responses from BMS CHG and DSG pins. 

    We have tried to send the command (0x0022) ,restart the gauge and check the FET_EN bit in   ManufacturingStatus register. Even it is enabled, we did not see any charging or Discharging from the IC. Charging and Discharging FET status in the Operation status is disabled only.

  • Dileep,

    Can you provide a .gg.csv file and a log of charging and discharging?

  • Battery is neither charging nor discharging. Can you please tell me which details you want in csv file

  • Are you using BQStudio? If so you can export the csv file under the Data Memory tab, and there should be a button to export. Under the Registers tab you can also begin logging.

  • No I don't have ev2400. I am manually checking the register status using smbus

  • It's difficult to debug this issue without a log that will provide a clearer picture of what's going on, but I would guess it could be because some protections are activated. You can check the safety status register or the SS bit in the operation status register to see if any protections are on. If not that, you may want to check if any permanent fails are activated using the PF status register.

  • The register values (all are in Hex) which we have read are as follows :

    0x54 (Operation Status register) = 00 00 6D 81

    0x51 (Safety Status Register) = 00 00 40 01

    0x16 (Battery Status Register) = 235

    0x53 (Permanent Fail Register) = 00 00 00 00
    Since SS bit is enabled, we have read the safety status register and it is showing CUV and CUVC bits as enabled which means cell under voltage protection is ON.
    All 4 cells are having more than 3.2 V and the CUV, CUVC thershold values (which are in 0x4BC2 and 0x4BC7) are in default values of 2500 and 2400 mV respectively.