In the process of adding a driver for the SI7020 temp/humidity sensor, I needed to implement clock stretching per the I2C spec. The SI7020 takes a while to gather samples so it will hold SCL low until it's ready. So after issuing the read request, we wait for SCL to go high before reading... This should have zero effect on other devices.
Also when reading multiple bytes, send ACK's after each byte except for the last one.
In the process of adding a driver for the SI7020 temp/humidity sensor, I needed to implement clock stretching per the I2C spec. The SI7020 takes a while to gather samples so it will hold SCL low until it's ready. So after issuing the read request, we wait for SCL to go high before reading... This should have zero effect on other devices.
Also when reading multiple bytes, send ACK's after each byte except for the last one.