This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

TWI consuming extra current (nRF52)

Hello,

I am working on product based on the NRF52. It has an external EEPROME wired via I2C bus (no external pullups). I see an extra 300uA ish current consumption after performing an I2C transaction. 

I have init the peripheral in this way:

nrf_gpio_cfg_input(EEPROM_SCL_PIN,NRF_GPIO_PIN_PULLUP);
nrf_gpio_cfg_input(EEPROM_SDA_PIN,NRF_GPIO_PIN_PULLUP);

const nrf_drv_twi_config_t twi_eeprom_config = {
.scl = EEPROM_SCL_PIN,
.sda = EEPROM_SDA_PIN,
.frequency = NRF_DRV_TWI_FREQ_100K,
.interrupt_priority = APP_IRQ_PRIORITY_LOWEST,
.clear_bus_init = false,
.hold_bus_uninit = true
};

err_code = nrf_drv_twi_init(&m_twi, &twi_eeprom_config, NULL, NULL);
APP_ERROR_CHECK(err_code);

The I perform an I2C transaction like this:

nrf_drv_twi_enable(&m_twi);

err_code = nrf_drv_twi_tx(&m_twi, EEPROM_I2C_ADDRESS, write_data, 2, true);
APP_ERROR_CHECK(err_code);

err_code = nrf_drv_twi_rx(&m_twi, EEPROM_I2C_ADDRESS, read_buffer, read_bytes_num);
APP_ERROR_CHECK(err_code);

nrf_drv_twi_disable(&m_twi);

And here I can see the device drawing extra 300uA. If I comment out the nrf_drv_twi_tx/rx functions the extra current disappears.

I do not think it is the peripheral drawing the extra current because I can see the current increase also if I use a different I2C ADDRESS.

I am using SDK 16.

Thanks and Regards,


Andrea

Parents
  • Hi

    Due to the summer vacation period we are currently understaffed, so delayed replies must be expected. I am sorry about any inconvenience this might cause.

    What nRF52 device exactly are you seeing this current consumption on exactly? This could be linked to this erratum, where the TWI peripheral isn't disabled correctly by the nrf_drv_twi_disable() function, and it stays on. If so, please check out the workaround explained in here, where you can turn the TWI instance you're using off and on again by power cycling the peripheral.

    Best regards,

    Simon

Reply
  • Hi

    Due to the summer vacation period we are currently understaffed, so delayed replies must be expected. I am sorry about any inconvenience this might cause.

    What nRF52 device exactly are you seeing this current consumption on exactly? This could be linked to this erratum, where the TWI peripheral isn't disabled correctly by the nrf_drv_twi_disable() function, and it stays on. If so, please check out the workaround explained in here, where you can turn the TWI instance you're using off and on again by power cycling the peripheral.

    Best regards,

    Simon

Children
Related