Hi,
I am experiencing an issue with the nPM2100 I2C communication when using nRF Connect SDK 3.2.3. My hardware is a custom PCB with nPM2100QEAA and nRF52840QFAA
I am running the official Zephyr sample for the nPM2100 EK:
docs.zephyrproject.org/.../index.html
The same firmware and hardware behave differently depending on the SDK version.
NCS 3.1.1 → works correctly, got cyclic status message of nPM2100 status
NCS 3.2.3 → I2C communication stops on initialization stage and the log reports "Error: LDOSW device is not ready"
Initially the I2C communication works, but after several transactions the bus activity stops and the driver reports that the controller is not ready. After this happens there is no more activity on the bus.
DeviceTree overlay:
&i2c0 {
status = "okay";
pinctrl-0 = <&i2c0_default>;
pinctrl-1 = <&i2c0_sleep>;
pinctrl-names = "default", "sleep";
};
&pinctrl {
i2c0_default: i2c0_default {
group1 {
psels = <NRF_PSEL(TWIM_SCL, 0, 5)>, <NRF_PSEL(TWIM_SDA, 0, 7)>;
bias-pull-up;
};
};
i2c0_sleep: i2c0_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SCL, 0, 5)>, <NRF_PSEL(TWIM_SDA, 0, 7)>;
low-power-enable;
};
};
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 24)>,
<NRF_PSEL(UART_RX, 0, 23)>;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 24)>,
<NRF_PSEL(UART_RX, 0, 23)>;
low-power-enable;
};
};
};
&uart0 {
status = "okay";
pinctrl-0 = <&uart0_default>;
pinctrl-1 = <&uart0_sleep>;
pinctrl-names = "default", "sleep";
};I captured the I2C bus using a logic analyzer.
Trace with NCS 3.1.1 (working)

Trace with NCS 3.2.3 (failing)

Are there any known changes in the nPM2100 driver between NCS 3.1.1 and 3.2.3 that could explain this behaviour? Maybe it is related with Arduino I2C driver?
Since this is the official Zephyr sample, I would expect it to work on both SDK versions.
Any suggestions how should I configure nPM2100 in Zephyr with the newest SDK?
Thanks
