I2C Communication Issue with nPM1300 on Custom Board (nRF54L15)

Hello,

I’m working with a custom board using the nRF54L15 and the latest Nordic SDK, and I’m facing an issue while trying to communicate with an nPM1300 over I2C.

Here’s what I’ve observed:

  • On the logic analyzer, I can see that the SDA line is being pulled down, but nothing happens afterward.

  • The SCL line remains high after the SDA is pulled down.

  • I’ve checked the I2C lines and confirmed that neither is shorted, and I have 4.7k pull-up resistors on both lines.

  • To verify the MCU can drive the SCL line, I swapped the pins in the configuration, and the MCU is able to pull SCL low.

I’m getting a -5 error code, which seems to occur at this line in the i2c_nrfx_twim.c file:

ret = k_sem_take(&dev_data->completion_sync, I2C_TRANSFER_TIMEOUT_MSEC);

Any help troubleshooting this or suggestions on what might be causing the issue would be greatly appreciated.

Thanks!

Im attaching my overlay, config and zephyr.dts file

foxgym_sensor_nrf54l15_cpuapp.overlay1738.zephyr.dts22464.prj.conf

Parents
  • Hi,

    Which version of NCS are you using? 

    regards

    Jared

  • Hi Adam,

    From the description in the driver:

                /* Whatever the frequency, completion_sync should have
                 * been given by the event handler.
                 *
                 * If it hasn't, it's probably due to an hardware issue
                 * on the I2C line, for example a short between SDA and
                 * GND.
                 * This is issue has also been when trying to use the
                 * I2C bus during MCU internal flash erase.
                 *
                 * In many situation, a retry is sufficient.
                 * However, some time the I2C device get stuck and need
                 * help to recover.
                 * Therefore we always call i2c_nrfx_twim_recover_bus()
                 * to make sure everything has been done to restore the
                 * bus from this error.
                 *
    Can you double check that the SDA line hasn't been shorted or if you're performing a flash erase? Are you testing on a custom board or development kit?
     
    regards
    Jared 
  • SDA is not shorted, i measured it with meter, and i can see SDA being pulled low by MCU at the start of transaction. Code in only trying to read register from nPM1300, so i doubt the mcu is doing flash erase.  Im testing on Custom board.

Reply Children
No Data
Related