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";
        };
    };
};
Parents
  • 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

Reply Children
Related