Can I run the nRF54L15 I2C peripheral SCL in push-pull mode?

Hi all,

It is a common convention to configure the I2C SCL signal to be push-pull instead of open-collector if there are no other I2C masters in the system (saves a pull up resistor, simplifies circuitry, etc). I’m assuming that there’s a way to do it with the L15 and H20, but a cursory glance at the I2C configuration files for Zephyr didn’t make it clear how we’d set that up.

 

Can you give us some insights? Or, if the L15/H20 I2C block is limited to only drive the clock as an open-collector, let us know that as well?

 

We’re revising our dev board, and I don’t want to remove the pull-up resistor, if it’ll break things.

Thanks!

Calvin Taylor

Parents
  • Yes, of course, push-pull works fine. Sadly you will have to fight with the version of nRFConnect which you are using, unless using nRFx.

    This is how to normally set (say) H0H1:

        nordic,drive-mode = <NRF_DRIVE_H0H1>;
    

    .. but note: nordic,drive-mode int

    "Pin output drive mode. Available drive modes are pre-defined in nrf-pinctrl.h. Note that extra modes may not be available on certain devices. Defaults to standard mode for 0 and 1 (NRF_DRIVE_S0S1), the SoC default, except for the "nordic,nrf-twi" and "nordic,nrf-twim" nodes where NRF_DRIVE_S0S1 is always overridden with NRF_DRIVE_S0D1 (standard '0', disconnect '1')."

    Some effort will be required to defeat this, Nordic may supply the relevant notes

    Edit: I should add that we found that some slave I2C devices hold SCL low for clock-stretching (to create a delay between byte transfer) without this being explicitly mentioned in the data sheet; that would cause anything other than S0D1 or H0D1 mode to fail with those I2C slave devices.

Reply
  • Yes, of course, push-pull works fine. Sadly you will have to fight with the version of nRFConnect which you are using, unless using nRFx.

    This is how to normally set (say) H0H1:

        nordic,drive-mode = <NRF_DRIVE_H0H1>;
    

    .. but note: nordic,drive-mode int

    "Pin output drive mode. Available drive modes are pre-defined in nrf-pinctrl.h. Note that extra modes may not be available on certain devices. Defaults to standard mode for 0 and 1 (NRF_DRIVE_S0S1), the SoC default, except for the "nordic,nrf-twi" and "nordic,nrf-twim" nodes where NRF_DRIVE_S0S1 is always overridden with NRF_DRIVE_S0D1 (standard '0', disconnect '1')."

    Some effort will be required to defeat this, Nordic may supply the relevant notes

    Edit: I should add that we found that some slave I2C devices hold SCL low for clock-stretching (to create a delay between byte transfer) without this being explicitly mentioned in the data sheet; that would cause anything other than S0D1 or H0D1 mode to fail with those I2C slave devices.

Children
No Data
Related