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

power optimal twi tx/rx

Hi - I am wondering what is the power optimal way to read/write with the TWI module. I do a tx and rx with the TWI interface. I have something like this, from the examples to read data from a i2c supported device:

// read from i2c device

uint16_t timeout = 10000;
nrf_drv_twi_tx();

while((!twi_tx_done) && --timeout); // twi_tx_done is in the twi_handler for NRF_DRV_TWI_XFER_TX event
twi_tx_done = false;

timeout = 10000;
nrf_drv_twi_rx();
while((!twi_rx_done) && --timeout); // twi_rx_done is in the twi_handler for NRF_DRV_TWI_XFER_RX event
twi_rx_done = false;

I am not sure if this is the most optimal way of waiting, since it's in a busy loop. Is there a better way to write this?

Parents
  • Hi

    What SDK version are you using? If you're using a very old one (before SDK v.14.x) I'd suggest you update it due to implementations of various bug fixes, as well as more and updated example projects.

    An address/data nack should not cause any issues in our TWI examples, you'll just have to resend the transfer. You can take a look at this thread, where a power optimization method is proposed by using the app_timer.

    Best regards,

    Simon

Reply
  • Hi

    What SDK version are you using? If you're using a very old one (before SDK v.14.x) I'd suggest you update it due to implementations of various bug fixes, as well as more and updated example projects.

    An address/data nack should not cause any issues in our TWI examples, you'll just have to resend the transfer. You can take a look at this thread, where a power optimization method is proposed by using the app_timer.

    Best regards,

    Simon

Children
No Data
Related