nPM1300 Development Board – Battery Charging Too Slow (950 mAh Li-ion, 800 mA setting)

Hello Nordic team,

I’m using the  nPM1300 development board to charge a 950 mAh Li-ion battery, and I’ve configured the charger as follows:

  • Charge current: 800 mA

  • Termination voltage: 4.20 V

  • NTC monitoring: Disabled

  • VBUS limit (read value): 1500 mA

  • Power source: Tested with both USB from PC and a 5V adapter

The charging process completes successfully, but it takes approximately 6–7 hours to reach full voltage, which seems slower than expected for an 800 mA setting.

Could you please clarify the following points:

  1. Are there any internal limits or thermal restrictions in the nPM1300 that might reduce the effective charge current?

  2. Does the 1500 mA VBUS limit from the USB input restrict charging performance when connected to a PC port?

  3. Are there specific register configurations or I²C commands to verify that the charger is actually sourcing the configured 800 mA?

  4. Can disabling the NTC or using USB from a computer affect charging current regulation?

Any guidance to achieve optimal and faster charging performance on this configuration would be appreciated.

Thank you,

  • Hello, 

    Is this development board nPM1300-EK or something else? If you are using nPM1300-EK you can see the charging current in real time in nPM PowerUp app. It allows you to check the settings and see the effect without writing code for configuration. You can also use the nPM1300-EK with the Fuel Gauge add-on board to characterize the battery and create battery model for accurate state of charge prediction.

    1. Yes, if die temperature rises to high it can cause the charging to stop (110deg default). See datasheet Charger thermal regulation section for more details. 

    2. Have you set the VBUS current limiter to 1500mA? The CC/USB port detection is only used as an indication that the USB host is capable to reach 1500mA limit for example. But you still have to set the VBUS current limit manually to the 1500mA setting. It is 100mA by default, which could explain the 6-7hour charge time. If the VBUS current limiter is set to 1500mA already, then it won't be the limiting factor, but the USB host current capability can start limiting the charging current.

    3. Yes, you can read the battery current with the ADC, see System Monitor section for more details. 

    4. The USB port current limitation can affect the charging time. 

    Thanks.

  • Hello,

    Thank you for the detailed response.

    I’m not using the nPM1300-EK board — my setup is based on the Mikroe nPM1300 PMIC Click Board, which I’ve interfaced with an ESP32 over I²C. I’m controlling the charger through custom firmware (Arduino-style code), as shown in the snippet above.

    In my implementation:

    I configure the charge current to 800 mA and termination voltage to 4.2 V.
    I have disabled the NTC.
    I only read the VBUS limit register and get a value of 1500 mA, but I have not manually set the limit anywhere in the code.
    So, I’d like to confirm:

    1.Does the nPM1300 default to a 100 mA VBUS current limit unless it’s explicitly written through I²C?
    2.Should I write the VBUS limit register to 1500 mA manually to enable faster charging?
    3.Could you please share which exact register and bits are used to configure the VBUS current limit?
    4.Additionally, could you suggest which other parameters or registers I can monitor or configure for debugging (e.g., battery current, die temperature, charge phase status, thermal regulation flags, etc.) that might help optimize or verify full-speed charging?
    Thanks again for your help and clarification!

  • Hello,

    1. Yes that is correct. Default is 100mA and you have to write it to 1500mA with VBUSINLIM0 and then TASK.UPDATE.ILIMSW to take effect

    2. Yes, that is correct. Otherwise the VBUS current limits the maximum charging current.

    3. You can see details in the USB port detection

    4. You can use the internal ADC to read the VBAT, IBAT, Battery temp (if NTC is used), Die temp, VSYS and VBUS voltages. These are very handy for debugging and monitoring purposes. You can also check events and set interrupts for the events for various status flags, see Event and interrupt registers (just click on the links for online spec)

    Hope this helps!

  • Hello,

    Thank you for the clarification.

    I have now written the VBUSINLIM0 register to 1500 mA and triggered TASK.UPDATE.ILIMSW, and it is working correctly — the charging current increased and charging speed improved as expected.

Related