Controlling I2C retry attempts

I’m trying to implement a driver for https://www.onsemi.com/pdf/datasheet/cat24c128-d.pdf and the way to check that the device has finished storing data is that making another request is not acknowledged by the slave. Attempting to do this, the address is sent and not ack’d, and then gives a bunch of additional clocks with a byte’s width before the device times out and control is returned and then the check can be run again.

Can I control how often the retries happen? Blue is data (clearing the FRAM), and red is the clocks.

As an update, I’ve found the following:

return Wire.requestFrom(WireTransmission(i2c_addr).quantity(1).stop(false).timeout(1));

But this still gives me the slow clocks and the 50-60ms delay. Is this something that is done by the particle firmware?

1 Like