I2C CURRENT LEAK

Hi,

I have a current leak on a new board.

I'm using a nrf52840.

My development environment is nRF Connect SDK v2.6.0.

I am using power management on I2C1.

When I initialize i2c1 i run 

   err = pm_device_action_run(i2c1, PM_DEVICE_ACTION_SUSPEND);                  // after opening and configuring the i2c device, suspend it

I've checked and err is 0 after the SUSPEND

I2c1 is defined in app.overlay as 

&i2c1 {
status = "okay";
pinctrl-0 = <&i2c1_default>;
pinctrl-1 = <&i2c1_sleep>;
pinctrl-names = "default", "sleep";
};

&pinctrl {

i2c1_default: i2c1_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
<NRF_PSEL(TWIM_SCL, 0, 37)>;
//bias-pull-up;
};
};

i2c1_sleep: i2c1_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
<NRF_PSEL(TWIM_SCL, 0, 37)>;
//low-power-enable;
};
};

In this state - (i2c initialized and suspended) I see around 100 mV on the SDA and SCL lines.

I expected to see no voltage there at all.

Am I incorrect?

};

Parents
  • Hi,

     

    When using GPIO Port P1, you should describe it a bit different:

    i2c1_default: i2c1_default {
    group1 {
    psels = <NRF_PSEL(TWIM_SDA, 1, 2)>,
    <NRF_PSEL(TWIM_SCL, 1, 5)>;
    //bias-pull-up;
    };
    };

     

    In this state - (i2c initialized and suspended) I see around 100 mV on the SDA and SCL lines.

    I expected to see no voltage there at all.

    In this state the IOs will be floating, as there's no pull applied internally nor externally.

     

    Kind regards,

    Håkon

  • Håkon,

    I solved it in a diffefrent way

    I added bias_pull_up and bias_pull_down statemts to the i2c pinctrl statements. They are now

        i2c1_default: i2c1_default {
            group1 {
                psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
                    <NRF_PSEL(TWIM_SCL, 0,  37)>;
                bias-pull-up;
            };
        };

        i2c1_sleep: i2c1_sleep {
            group1 {
                psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
                    <NRF_PSEL(TWIM_SCL, 0, 37)>;
                    bias-pull-down;

            };
    When the i2c1 port is suspended SDA and SCL are quite low - less than a milli-VOLT.
    When the i2c1 port is acrive SDA and SCL are at 3.3 Volts.
Reply
  • Håkon,

    I solved it in a diffefrent way

    I added bias_pull_up and bias_pull_down statemts to the i2c pinctrl statements. They are now

        i2c1_default: i2c1_default {
            group1 {
                psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
                    <NRF_PSEL(TWIM_SCL, 0,  37)>;
                bias-pull-up;
            };
        };

        i2c1_sleep: i2c1_sleep {
            group1 {
                psels = <NRF_PSEL(TWIM_SDA, 0, 34)>,
                    <NRF_PSEL(TWIM_SCL, 0, 37)>;
                    bias-pull-down;

            };
    When the i2c1 port is suspended SDA and SCL are quite low - less than a milli-VOLT.
    When the i2c1 port is acrive SDA and SCL are at 3.3 Volts.
Children
No Data
Related