Inter Integrated Circuit or I2C is a serial communication protocol which can transfer data from a sender (called master) to reciever(called slave). This is also a synchronous communication protocol, which requires a clock pin to send or receive the data. Compared to SPI communication protocol, it requires less connection pin.
In idle state, the both the connection pins are in logic 1 state with the use of pull-up register. There is no chip select pin in I2C protocol because multiple slaves are connected to these two pins only. The master uses the address to select the slave. The entire communication is hapens in a frame. Each frame has start condition, stop condition, address bits, read write bits, data bits and acknowlegement bit.
Start condition is when, the master changes the state of the SDA pin from high to low and then, the master enables the clock signal. Stop condition is when, the master disables the clocks and changes the state of SDA to high.
After the start condition, the master sends the address of the slave followed by read/write bit using SDA in each clock cycle. Then master release the SDA for acknowlegement from the slave. If it is a read operation, the slave has the access to SDA and it sends the data bits in each clock cycle after the acknowlegement signal. If it is a write operaion, the master sends the data bits in each clock cycle after the acknowlegement signal received from the slave. After the sending or receiving of the data, there is one more acknowlegement signal and then the communication is completed.