nPM13xx EK
Overview
This sample is provided for evaluation of nPM1300 EK and nPM1304 EK. The sample demonstrates use of Dynamic Voltage Scaling (DVS) regulator API feature which allows to switch between chosen voltage levels or regulator modes by toggling configured GPIOs with a single regulator API call.
It also provides a shell interface to support the features of the nPM1300 and nPM1304 PMICs, including:
Regulators (BUCK1/2, LDO1/2)
GPIO
Requirements
The shield needs to be wired to a host board featuring the Arduino I2C connector. PMIC’s GPIO3 acts as an interrupt output, pins GPIO1 and GPIO2 are configured to control regulator modes (controlled by the MCU software through DVS).
In addition, PMIC’s VDDIO pin should be connected to an appropriate voltage reference.
E.g. for an nRF52 Series DK the wiring is as follows:
nPM13xx EK pins
SDA
SCL
GPIO1
GPIO2
GPIO3
VDDIO
GND
nRF52 DK pins
P0.26
P0.27
P0.17
P0.18
P0.22
VDD
GND
Building and Running
The sample is designed so that it can run on any platform (references to host GPIOs connected to
the nPM13xx EK need to be updated in the npm13xx.overlay
files to reflect chosen HW).
For example, when building for the nRF52 DK and the nPM1300 EK, the following command can be used:
west build -b nrf52dk/nrf52832 --shield npm1300_ek samples/shields/npm13xx_ek
Testing
After flashing the sample FW, you need to connect to the shell interface, where in case of successful initialization you will see the nPM13xx PMIC status messages containing charger status and battery voltage, current and temperature. Pressing and releasing the SHPHLD button on the EK will generate interrupts and these events will also be printed in the shell.
Pressing a dedicated button on the host DK (Button 1 on an nRF52 Series DK) will cycle DVS states.
DVS state (GPIO1 | GPIO2 level)
BUCK2 mode
LDO1 mode
LDO2 mode
0 (HIGH | HIGH)
OFF
OFF
OFF
1 (LOW | HIGH)
ON retention
OFF
OFF
2 (HIGH | LOW)
OFF
ON
ON
3 (LOW | LOW)
ON PWM
ON
ON
Note
On an nRF52 Series DK, DVS pins are also used for the onboard LED1 and LED2, so you can observe the DVS state pins visually: an LED lights up when the respective pin is LOW
Regulators
The regulator
shell interface provides several subcommand to test
the regulators embedded in the PMIC. Below you can find some command examples.
# list all the supported voltages by BUCK1
uart:~$ regulator vlist BUCK1
1.000 V
1.100 V
...
# enable BUCK2
uart:~$ regulator enable BUCK2
# disable BUCK2
uart:~$ regulator disable BUCK2
# set BUCK2 voltage to exactly 2V
uart:~$ regulator vset BUCK2 2V
# obtain the actual BUCK1 configured voltage
uart:~$ regulator vget BUCK1
1.800 V
# set BUCK1 voltage to a value between 2.35V and 2.45V
uart:~$ regulator set BUCK1 2.35V 2.45V
# obtain the actual BUCK1 configured voltage
uart:~$ regulator get BUCK1
2.400 V