Tool/software:
I'm working on a project using the **BQ27427** fuel gauge, integrated with an **nRF5340 MCU** running **Zephyr RTOS**. We're using the upstream Zephyr driver:
github.com/.../bq274xx
---
### Hardware and Devicetree setup:
```dts
&i2c3 {
clock-frequency = <I2C_BITRATE_STANDARD>;
compatible = "nordic,nrf-twim";
status = "okay";
pinctrl-0 = <&i2c3_default>;
pinctrl-1 = <&i2c3_sleep>;
pinctrl-names = "default", "sleep";
bq27427: bq27427@55 {
compatible = "ti,bq27427";
reg = <0x55>;
design-voltage = <3700>;
design-capacity = <150>;
taper-current = <5>;
terminate-voltage = <3000>;
chemistry-id = <4610>; // corresponds to 0x1202 for 4.2V batteries
int-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
status = "okay";
};
};
```
---
### Device behavior:
- Device wakes on button press, runs for ~1 hour, then enters low-power mode.
- In low-power mode, BQ27427 is placed into **SHUTDOWN**.
- During active mode, SoC is read every 5 seconds and sent over BLE to a central (nRF Connect app) for logging.
---
### Problem:
After waking from SHUTDOWN, the SoC reported by the BQ27427 **drops sharply after ~4 minutes**, even though the battery voltage remains stable and within expected range. For example, the value changes for 2 neighbouring polls with a period of 5 sec: from 81% to 72%, from 49% to 44%, from 21% to 14%. This behavior is consistent and reproducible.
#### Example timeline:
```
20:41 - Full charge, power off
20:44 - Battery voltage (power off): 4.198V
20:45 - Power ON, SoC = 99%
21:45 - Power OFF, SoC = 81% (log saved)
21:49 - Battery voltage (power off): 3.96V
21:50 - Power ON, SoC = 81%
21:54 - SoC suddenly drops to 72% (voltage = 3.89V under load, expected: 65–75%)
22:50 - Power OFF, SoC = 49% (log saved)
22:54 - Battery voltage (power off): 3.80V
22:55 - Power ON, SoC = 49%
22:59 - SoC suddenly drops to 44% (voltage = 3.76V under load, expected: 35–50%)
23:55 - Power OFF, SoC = 21% (log saved)
23:59 - Battery voltage (power off): 3.699V
00:00 - Power ON, SoC = 21%
00:04 - SoC drops to 14%
```
Related log files attached. Log 2025-07-07 21_45_35.txt Log 2025-07-07 22_50_39.txt Log 2025-07-07 23_55_33.txt
nRF Connect, 2025-07-08 ZTENS_6F94EC (EC:94:6F:32:40:12) V 00:00:05.246 Connecting to EC:94:6F:32:40:12... D 00:00:05.246 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M) D 00:00:05.722 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2) I 00:00:05.722 Connected to EC:94:6F:32:40:12 V 00:00:05.726 Discovering services... D 00:00:05.726 gatt.discoverServices() D 00:00:05.762 [Callback] Services discovered with status: 0 I 00:00:05.762 Services discovered V 00:00:05.771 Generic Attribute (0x1801) - Service Changed [I] (0x2A05) Client Characteristic Configuration (0x2902) - Client Supported Features [R W] (0x2B29) - Database Hash [R] (0x2B2A) Generic Access (0x1800) - Device Name [R] (0x2A00) - Appearance [R] (0x2A01) - Peripheral Preferred Connection Parameters [R] (0x2A04) Battery Service (0x180F) - Battery Level [N R] (0x2A19) Client Characteristic Configuration (0x2902) Characteristic Presentation Format (0x2904) Control Service (00001630-1212-efde-1000-785feabcd123) - Command [R W] (00001630-1212-efde-1002-785feabcd123) - Unknown Characteristic [R W] (00001630-1212-efde-1003-785feabcd123) Status Service (00001630-1212-efde-0000-785feabcd123) - State [N R] (00001630-1212-efde-0001-785feabcd123) Client Characteristic Configuration (0x2902) - Session Time [N R] (00001630-1212-efde-0002-785feabcd123) Client Characteristic Configuration (0x2902) - Session Time Remaining [N R] (00001630-1212-efde-0003-785feabcd123) Client Characteristic Configuration (0x2902) Device Information (0x180A) - Model Number String [R] (0x2A24) - Manufacturer Name String [R] (0x2A29) - Serial Number String [R] (0x2A25) - Firmware Revision String [R] (0x2A26) - Hardware Revision String [R] (0x2A27) D 00:00:05.771 gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true) D 00:00:05.774 gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true) D 00:00:05.775 gatt.setCharacteristicNotification(00001630-1212-efde-0001-785feabcd123, true) D 00:00:05.776 gatt.setCharacteristicNotification(00001630-1212-efde-0002-785feabcd123, true) D 00:00:05.777 gatt.setCharacteristicNotification(00001630-1212-efde-0003-785feabcd123, true) D 00:00:05.882 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED I 00:00:05.933 PHY updated (TX: LE 2M, RX: LE 2M) V 00:00:07.908 Enabling notifications for 00002a19-0000-1000-8000-00805f9b34fb D 00:00:07.908 gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true) D 00:00:07.910 gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x0100) I 00:00:07.976 Data written to descr. 00002902-0000-1000-8000-00805f9b34fb, value: (0x) 01-00 A 00:00:07.976 "Notifications enabled" sent V 00:00:07.987 Notifications enabled for 00002a19-0000-1000-8000-00805f9b34fb I 00:00:10.741 Connection parameters updated (interval: 30.0ms, latency: 0, timeout: 420ms) I 00:00:12.542 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:12.542 "21%" received I 00:00:17.519 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:17.519 "21%" received I 00:00:22.524 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:22.524 "21%" received I 00:00:27.546 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:27.546 "21%" received I 00:00:32.524 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:32.524 "21%" received I 00:00:37.526 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:37.526 "21%" received I 00:00:42.510 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:42.510 "21%" received I 00:00:47.512 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:47.512 "21%" received I 00:00:52.530 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:52.530 "21%" received I 00:00:57.507 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:00:57.507 "21%" received I 00:01:02.519 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:02.519 "21%" received I 00:01:07.528 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:07.528 "21%" received I 00:01:12.508 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:12.508 "21%" received I 00:01:17.523 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:17.523 "21%" received I 00:01:22.535 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:22.535 "21%" received I 00:01:27.515 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:27.515 "21%" received I 00:01:32.526 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:32.526 "21%" received I 00:01:37.498 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:37.498 "21%" received I 00:01:42.519 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:42.519 "21%" received I 00:01:47.686 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:47.686 "21%" received I 00:01:52.673 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:52.673 "21%" received I 00:01:57.682 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:01:57.682 "21%" received I 00:02:02.518 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:02.518 "21%" received I 00:02:07.677 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:07.677 "21%" received I 00:02:12.514 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:12.514 "21%" received I 00:02:17.670 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:17.670 "21%" received I 00:02:22.499 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:22.499 "21%" received I 00:02:27.512 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:27.512 "21%" received I 00:02:32.498 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:32.498 "21%" received I 00:02:37.508 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:37.508 "21%" received I 00:02:42.520 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:42.520 "21%" received I 00:02:47.497 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:47.497 "21%" received I 00:02:52.511 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:52.511 "21%" received I 00:02:57.490 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:02:57.490 "21%" received I 00:03:02.498 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:02.499 "21%" received I 00:03:07.682 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:07.682 "21%" received I 00:03:12.669 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:12.669 "21%" received I 00:03:17.678 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:17.678 "21%" received I 00:03:22.676 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:22.676 "21%" received I 00:03:27.690 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:27.690 "21%" received I 00:03:32.493 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:32.493 "21%" received I 00:03:37.505 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:37.505 "21%" received I 00:03:42.490 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:42.490 "21%" received I 00:03:47.504 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:47.504 "21%" received I 00:03:52.482 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:52.482 "21%" received I 00:03:57.487 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:03:57.487 "21%" received I 00:04:02.502 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 15 A 00:04:02.502 "21%" received I 00:04:07.481 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:07.481 "14%" received I 00:04:12.496 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:12.496 "14%" received I 00:04:17.506 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:17.506 "14%" received I 00:04:22.482 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:22.483 "14%" received I 00:04:27.491 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:27.491 "14%" received I 00:04:32.472 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:32.472 "14%" received I 00:04:37.480 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:37.480 "14%" received I 00:04:42.497 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:42.497 "14%" received I 00:04:47.477 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:47.477 "14%" received I 00:04:52.478 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:52.478 "14%" received I 00:04:57.494 Notification received from 00002a19-0000-1000-8000-00805f9b34fb, value: (0x) 0E A 00:04:57.494 "14%" received D 00:05:02.937 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0) E 00:05:02.938 Error 8 (0x8): GATT CONN TIMEOUT I 00:05:02.938 Disconnected D 00:05:03.046 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
---
### What I’ve checked:
- Configuration registers (design voltage, capacity, taper current, chemistry ID) are **correctly restored** after power-up.
- Battery voltage under load matches expected values from STC3115 discharge table (I just used it as a reference).
- No voltage instability or supply brownout observed.
---
### My questions:
- What could cause these **delayed SoC drops (~4 minutes after wakeup)**?
- Is there any internal learning or compensation algorithm that re-engages shortly after SHUTDOWN exit?
- Any advice or best practices for SoC accuracy after exiting SHUTDOWN?
Thanks in advance!