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: SMBus Communication Failing During Calibration

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

Hello,

 

I am currently working on a 4S2P battery pack with a BQ40Z80 fuel gauge. Recently, I have begun noticing an issue consistently enough that I do not believe it is a soldering/manufacturing problem. I am flashing the Data Memory with a Golden File which I created by following the instructions in How to Complete a Successful Learning Cycle for the bq40z80 and I have attached my golden file at the end of this post.

The issue occurs during calibration. Everything works well during initial connection. As you can see in the image below, I was able to send a reset command followed by CHEM_ID and two CAL_TOGGLEs. I also had Scan enabled the whole time and was able to see the registers updating throughout this process.

After verifying that this worked, I went on to calibrate the voltages, measuring the voltages at VC1 for Applied Cell 1 Voltage, VC4 for Applied VC6-VSS Voltage, and PACK for Applied Pack Voltage, then clicking Calibrate Gas Gauge. As you can see in the image below, the Calibration failed with an error message "Calibration - No acknowledge from device".

After the communication failure during Calibration, I lose all communication with the fuel gauge. In the image below I have tried issuing a CHEM_ID command like I did before the calibration, but it failed with the error message "WriteMACReadBlock communication error :No acknowledge from device."

I have had this same issue happen on 6 separate battery packs recently and I am unable to fix it. Below is a list of things I have tried so far:

  1. Reloading the firmware "bq40z80_v0_04_build_5.srec" which I downloaded from the BQ40Z80 webpage. Then re-loading the Chemistry Profile and Golden File.
  2. Exporting the firmware from a functional battery pack and then loading that firmware onto one of the bad battery packs.
  3. Changing the SMBus frequency from 400kHz to 100kHz.

After the error occurs I am able to get communication back by simply closing and re-opening Battery Management Studio, at which point the CAL_EN bit will be set high (presumably because it was set during calibration, but not cleared because calibration did not finish). I am able to repeat this cycle as much as I would like, but if I ever try calibrating the battery packs I will get a No Ack error and lose communication until I restart Battery Management Studio.

 

Nathan

BQ40Z80_4S_2P_Golden_File.gg.csv

  • Hello Nathan,

    Please try updating your BQStudio to the most recent TEST build, it has the most up to date features and fixes in it. Also make sure you update the EV2400 firmware to the most recent, I see you have V0.18 which is an older firmware version.

    Sincerely,

    Wyatt Keller

  • Hello Wyatt,

    Thank you for the recommendation, it has mostly solved my issue. I updated the EV2400 firmware and bqStudio version like you recommended and I was able to calibrate the BQ40Z80 ONLY at 100kHz. I still see the same behavior I previously described when running at 400kHz where I get No Acknowledge and then lose communication entirely during calibrating. My guess is that it is because of the 20kOhm pullup resistors not allowing the SMBus voltages to rise quickly enough. My first thought is to add 10kOhm pullups in parallel to see if the 400kHz performance improves.

    Are there any better solutions I can try? If not I will give this a go and report back with my results.

    Let me know what you think,

    Nathan

  • I wanted to report back, I tried adding parallel resistance on the SMBus lines, dropping the pullup resistance to ~2.8kOhm and producing a relatively clean waveform at 400kHz. Even with this I am still getting the same communication disconnection when calibrating at 400kHz and a functional calibration at 100kHz. For now I will carry on configuring everything at 100kHz then setting it to High Speed mode as the final step, but it would be much more convenient if there was a way to make this work at 400kHz.

  • Hello Nathan,

    There shouldn't be a need for 400kHz during calibration because this action already takes time. The main reason we have the 400kHz is for faster SREC upload time. I would not recommend using 400kHz during any of the initial gauge setup. Many times for production level programming customers will calibrate a few dozens packs and if he calibration values are very similar they don't calibrate every pack.

    Sincerely,

    Wyatt Keller