NPM1300 on custom board cannot start battery charging

I have a custom board with bl54u and NPM1300. Working fine.

But now replaced with a NPM1304 as it is pin compatible. Worked fine with fuel gauge NPM1300 on SDK 3.0.1.

Now I have upgraded SDK to 3.1.1 and have to use NPM13XX fuel gauge. Works almost ok... But cannot start the battery charging.

On SDK 3.0.1 charging is possible without problem. 

I understand this has nothing to do with the fuel gauge application but more on the HW side. 

What do work is,

program the BL54u with old SDK 3.0.1 fuel gauge and start charging the battery.

Then reprogram with the new SDK 3.1.1 fuel gauge NPM13XX. And charging will continue with new settings.

Not work 

But removing the battery and reconnect it the charging will not work.

I guess old SDK did some config to the NPM1300 as not done for NPM13XX !?

Is this a known bug or is there a new requirement on the HW. I dont use NTC

Use battery for battery_model_20mAh.inc
And using the battery with NPM1304 dk works fine!

schematic attached.

 

&i2c20 {
    status = "okay";
    compatible = "nordic,nrf-twim";
    pinctrl-0 = <&i2c20_default>;
    pinctrl-1 = <&i2c20_sleep>;
    pinctrl-names = "default", "sleep";
    clock-frequency = <I2C_BITRATE_FAST>;
    zephyr,concat-buf-size=<32>;
    zephyr,flash-buf-max-size=<32>;
    aem13920: aem13920@41{
        compatible = "i2c-device";
        reg = < 0x41 >;    
    };
    npm1304_ek_pmic: pmic@6b {
        compatible = "nordic,npm1304";
        reg = <0x6b>;

        npm1304_ek_regulators: regulators {
            compatible = "nordic,npm1304-regulator";

            /* limits are set to min/max allowed values */
            npm1304_ek_buck1: BUCK1 {
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                retention-microvolt = <1200000>;
            };
        };
            npm1304_ek_charger: charger {
            compatible = "nordic,npm1304-charger";
            term-microvolt = <4150000>;
            term-warm-microvolt = <4000000>;
            current-microamp = <12000>;     // Must be 32000 for NPM1300
            vbus-limit-microamp = <500000>;
            thermistor-ohms = <10000>;
            thermistor-beta = <3380>;
            charging-enable;
            // vbatlow-charge-enable;
            // dischg-limit-microamp = <1000000>; //Must be uncomment for NPM1300 (SDK 3.0.1)
        };
        npm1304_ek_leds: leds {
            compatible = "nordic,npm1304-led";
            nordic,led0-mode = "error";
            nordic,led1-mode = "charging";
            nordic,led2-mode = "host";
        };
    };
};

          current-microamp = <12000>;

            vbus-limit-microamp = <500000>;
            thermistor-ohms = <10000>;
            thermistor-beta = <3380>;
            charging-enable;            // vbatlow-charge-enable;
            // dischg-limit-microamp = <1000000>;
        };
        npm1304_ek_leds: leds {
            compatible = "nordic,npm1304-led";
            nordic,led0-mode = "error";
            nordic,led1-mode = "charging";
            nordic,led2-mode = "host";
        };
    };
};
  • Hi

    From your schematic it seems like you haven't followed our reference schematic guidelines, with input capacitors from the battery and VBUS inputs missing, and pull-up resistors on SDA/SCL missing.

    That being said there shouldn't be a specific reasaon upgrading to NCS 3.1.1 should break charging. However, is VBUS connected when the battery is removed and plugged back in? If not, this will power cycle the PMIC, and should not cause problems in a design where the PMIC powers the SoC. But, if the SoC is powered separately, the scenario you describe will result in an uninitialized PMIC since the SoC won't execute the init code without a power cycle/reset, and thus charging would be disabled by default.

    And finally, can you try uncommenting this line in your charger config file and see if that makes a difference? 

    // vbatlow-charge-enable;

    Best regards,

    Simon

  • I have rationalised away some componetnts. But have not had any issues from that yet. I dont see those have anything to do with the charging problem.

    I have tried some more with yet another board but with the same problem. No charging.

    vbatlow does not help.

    I dont have the time right now do dig deeper and I revert back to sdk 3.0.1 and continue my testing.. and hope some else find a solution.

    By the way, the fuelgauge example in sdk 3.1.1 is not possible to compile with nrf54L15. I guess no one have tested the fuel gauge on sdk 3.1.1.

    You may close the ticket...

  • Hi Per

    There were some changes to add support for both the nPM1300 and nPM1304 in NCS 3.1.1, so some extra build configs must be added to get the nPM Fuel Gauge sample to work correctly. The Extra CMake argument  and Extra Devicetree overlay seen here must be added for the sample to build correctly:

    This is also described in the 3.1.1 page of the documentation: https://docs.nordicsemi.com/bundle/ncs-3.1.1/page/nrf/samples/pmic/native/npm13xx_fuel_gauge/README.html 

    I can confirm the sample builds for the nRF54L15 DK with these build configs.

    Best regards,

    Simon

  • Now I have dived deeper into this issue and here my conclusion,

    • Its correct that the fuelgauge works well in nrf sdk 3.1.1. I have tried it with the nrf54L15 dk together with npm1304 dk.
    • But not working with my custom board. I2C works well but not the charging. (tried with pull-up resistors 10K)
    • My board has the NTC pin connected to ground as suggested in the npm1304 datasheet.
    • If I connect NTC to ground on npm1304 dk(instead of 10k ohm), I will end up in charging not working. Same symptoms as with my custom board. Fuel gauge will say 'Charger idle' regardless if I connect or dissconnect VBUS.

    connecting the NTC to ground worked well in nrf sdk 3.0.1 but not in the latest sdk. In latest SDK NTC cannot be connected to GND or floating. Must be connected to VDDIO via 10K(?)

    Can you please verify if my conclusion is correct. And if soo.. is it then possible to get a patch.. as a new pcb will take some time to create?

  • Hi Per

    I have reported this to the developers now, and we're looking into it. I'll get back to you by the end of week at the latest with an update on this issue. Thank you for your thorough investigation, this does indeed seem like a bug to me.

    Best regards,

    Simon

Related