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

is byte boundary/ suspend necessary for twi ?

I'm struggling in implemented interrupt driven twi.

I found it always returned a overrun error after a successful RXD.

I saw an implementation by nordic employee in the devzone. I found they use byte boundary and resume mechanism.

So I ask this BB/ Resume mechanism is what the CPU clock stretching mentioned in Reference Manual? So BB / Resume is required for RX ?

My sequences :

TXD:75
byte boundary
txd sent
byte boundary
rxdready
issuing stop  // I2C_REG->TASKS_STOP = 1;
RXD:0x68    // uint8_t d = I2C_REG->RXD;
rxdready     // I think this is the wrong status due to read RXD, regardless if I set stop flag 
stopped      // EVENTS_STOP
error src: OVERRUN
I2C_EVENT_ERROR
byte boundary
Related