...
We notice that I2C uses 8-bit data frames. For every 8 bits, we receive an ACK/NACK on the 9th bit. We can also take note of the following characteristics:
START BIT = Pulling SDA low while SCL is high
END BIT = Pulling SCL SDA high while SDA SCL is lowhigh
ACK/NACK BIT = This is the 9th bit. ACK means the message was received properly, bit will be 0. NACK means the message was not received, bit will be 1
We define the bus in an “idle” state when both SDA and SCL are high, and we sample always on the rising edge
Standard I2C Communication Steps:
...