Hi there,
XIAO nRF54LM20A + nPM1300 Fast Charger Demo
I wrapped up a standalone battery charger demo for the Seeed XIAO nRF54LM20A using the onboard Nordic nPM1300 PMIC and the 1.54" 200×200 e-paper display.
This project is intended as both a PMIC demonstration and a reference for anyone wanting to build battery-powered devices with the XIAO platform.
Features
- Native nPM1300 charger control
- Selectable charge currents
- 200 mA
- 500 mA
- 800 mA
- One-button user interface
- Battery voltage monitoring
- Estimated State-of-Charge
- Charge current monitoring
- PMIC temperature monitoring
- USB input detection
- Session statistics
- Estimated charge time remaining
- RGB status indication throughout the charging cycle
- Low-power e-paper interface
The UI is designed around a single USER button, making it easy to operate without any external controls.
User Flow
- Fire Horse splash screen
- Charger setup
- Select desired charge current
- Start / Cancel
- 15-second safety countdown
- Live charging dashboard
- Statistics pages
- Fire Horse “sleep” screen on completion or cancel
The charging dashboard provides live information including:
- Battery voltage
- Battery current
- PMIC temperature
- Charge time
- Battery percentage
- Peak current
- Peak temperature
- USB voltage
- Session statistics
The countdown and live displays use partial e-paper refreshes to minimize flashing while keeping updates responsive.
Hardware
- Seeed XIAO nRF54LM20A
- Onboard Nordic nPM1300 PMIC
- 1.54" SSD1681 (200×200) e-paper display
- Single LiPo battery (tested with 1000–2000 mAh cells)
Purpose
This isn’t intended to replace a commercial battery charger. It’s a demonstration of how much capability is already available on the XIAO board with very little additional hardware. It also serves as a starting point for portable instruments, IoT devices, asset trackers, environmental sensors, and other battery-powered projects that need intelligent charging and battery management.
I hope it gives others a useful example of integrating the nPM1300 with a clean, low-power e-paper user interface. Feedback and suggestions are always welcome!
Here is the serial output …
=== CHARGE STATUS ===
Set: 200 mA
VBAT: 4227 mV
IBAT: 42 mA
PMIC temp: 33245 mC
Session SOC: 94%
Added: 0.21 mAh
_Update_Full : 1294663
=== CHARGE STATUS ===
Set: 200 mA
VBAT: 4227 mV
IBAT: 42 mA
PMIC temp: 33245 mC
Session SOC: 94%
Added: 0.41 mAh
_Update_Full : 1294663
=== CHARGE STATUS ===
Set: 200 mA
VBAT: 4227 mV
IBAT: 41 mA
PMIC temp: 33245 mC
Session SOC: 94%
Added: 0.60 mAh
_Update_Full : 1294663
=== CHARGE STATUS ===
Set: 200 mA
VBAT: 4227 mV
IBAT: 37 mA
PMIC temp: 34830 mC
Session SOC: 94%
Added: 6.23 mAh
_Update_Full : 1294661
_Update_Full : 1294663
_Update_Full : 1294662
_Update_Full : 1294663
=== CHARGE STATUS ===
Set: 200 mA
VBAT: 4227 mV
IBAT: 37 mA
PMIC temp: 34037 mC
Session SOC: 94%
Added: 6.70 mAh
HTH
GL
PJ ![]()
Here is the Code… ![]()
Firehorse_Fast_charge_demo.zip (11.6 KB)
