MPF42791 Fuel Gauge: Pack SOC always 0% despite valid voltage/current/temp inputs

Hello,

I am working with the MPS MPF42791 fuel gauge IC along with the MP2787 AFE evaluation board, connected to a 16S1P LiFePO4 battery pack.

I am able to successfully feed all required inputs to the fuel gauge via I2C:

Cell voltages (via VRDG_CELLxx)

Pack voltage (via VRDG_PACK)

Pack current (via IRDG_PACK)

Temperatures (via TRDG_TSx and TRDG_DIE)

After feeding all the values, I am triggering the fuel gauge execution using the EXE_CMD (0x7FFE) register and waiting for FG_EXE_FLAG (0x0F00) to become 0 before reading results.

SOC calculation flow seems to execute successfully. However, the SOC_PACK (0x05AC) register continues to show 0.00%, even after charging the pack from ~11% to ~47%.

All other internal values like Cell SOC (0x0592 to 0x05A1) update with new values, and SOH is also computed.

Can someone from MPS team guide me? Why is SOC_PACK still showing 0%?

Could this be an issue with input scaling or missing configuration?

Thanks in advance for your support!

Hello gaurav.lokhande,

I am looking into this and will get back to you with our team’s input.

Update:
I have continued testing the MPF42791 Fuel Gauge and observed the following:

After charging the battery pack from 70% to 95%, and continuously feeding current, voltage, and temperature data (approximately 1000 cycles), the Pack SOC register (0x05AC) finally updated and reported a value of 0.98%.

However, after powering off and restarting the Fuel Gauge, the Pack SOC value reverted to 0%. I then charged the pack further from 95% to 98%, but the register continued to report 0%.

Next, I stopped charging and left the battery pack on standby for 30 minutes, while still feeding current, voltage, and temperature data.

After that, I began discharging the pack from 98% down to 65%, but the SOC reading remained stuck at 0% throughout.

Additionally, for current data, I’m feeding positive current values during charging and negative values during discharging.

Could you please confirm if this is the correct polarity convention? The datasheet does not clearly mention the expected sign convention for current values during charge/discharge operations.

Looking forward to your team’s input. Thanks again.

Hello gaurav.lokhande,

Could you share all the configuration parameters you have for the Fuel Gauge?

have you all loaded a cell model?

Hello Eduardo,

Thank you for your response.

Here are the configuration parameters I have currently set on the fuel gauge:

CONFIG_MODE_CMD (0x7FFB) = 0x01 — Enter configuration mode

VRDG_PACK_EN (0x1040) = 0xD3 — Enable VRDG_PACK input

NTSS (0x1202) = 0x04 — 4 temperature sensors configured

MDLCELL_QNOM (0x2020) = 0x52D0 — Nominal cell capacity = 106Ah × 5mAh = 21,200

MDLINFO_QMEAS (0x20A0) = 0x5208 — Measured cell capacity = 105Ah × 5mAh = 21,000

CONFIG_EXIT_CMD (0x7FFA) = 0x01 — Exit configuration mode

As of now, I have not loaded a full cell model. Could you please guide me on the correct procedure to generate and load the cell model?

Now I am currently getting the SOC readings but observing issues with SOC not updating correctly and suspect this may be due to the missing or incomplete cell model configuration.

Looking forward to your guidance.

Best regards,
Gaurav Lokhande

Hello gaurav.lokhande,

You are now able to read proper SOC? It just doesn’t update properly at times? Did you modify anything to get SOC to read?

Hello Eduardo,

Thanks for following up.

I am now able to read SOC from the fuel gauge, but the values are not accurate. The SOC register is updating, but the reported value increases linearly. For example, during a charge cycle where the actual SOC increased by only about 7% (verified using another BMS), the fuel gauge showed the SOC reaching 100%.

I did not modify anything specific to enable SOC updates. I simply discharged the battery pack down to ~10% using another BMS, and then began charging. During this charge cycle, the SOC register began updating—but, as mentioned, the readings are not reflecting actual charge levels and seem to increment uniformly with each data feed and execution cycle.

Could you please guide me on how to properly configure the cell model in the fuel gauge? We are using 106Ah, 3.2V nominal LFP prismatic cells in the battery pack.

Best regards,
Gaurav Lokhande

Hello gaurav.lokhande,

can you also give me VPACK_MAX/MIN, VCELL_MAX/MIN? I have reached out to our team on how to do configure the cell model.

Hello Eduardo,

Based on the cell datasheet shared by the manufacturer, here are the values:

VCELL_MAX: 3.490 V (100% SOC during charge)

VCELL_MIN: 2.738 V (0% SOC during discharge)

For our 16S1P pack configuration:

VPACK_MAX: 55.840 V (3.49 V × 16 cells)

VPACK_MIN: 43.808 V (2.738 V × 16 cells)

Let me know if you need any additional information.

Best regards,
Gaurav Lokhande.

Hello Eduardo,
Any update regarding configure the cell model?