I2C stands for the inter-integrated controller. This is a serial communication protocol that can connect low-speed devices. It is a master-slave communication in which we can connect and control multiple slaves from a single master. In this, each slave device has a specific address.
The I2C is developed to overcome the complexities of transmitting data through other communication protocols, including Universal Asynchronous Receiver Transmitter (UART) and Serial Peripheral Interface (SPI).
UART is an asynchronous transmission protocol. It is a device using them that should agree ahead of time on a data cost. The clocks of the machines should also have clocks with almost the same data rate. The data rate in UART is decreased because of the requirement of additional start and stop bits.
There are the following advantages of I2C, which are as follows −
It supports flexible data transmission rates.
It supports long-distance communication than SPI.
Each device on the bus is controlled separately.
It increases the complexity of firmware or low-level hardware.
This protocol imposes overhead that also reduces throughput.
This protocol requires only two cables.
It can accommodate several master interactions through arbitration and collision detection.
The devices can work as both master and slave.
There are the following disadvantages of I2C, which are as follows −
The complexity of hardware raises when the number of master/slave devices are high in the circuit.
It supports a half-duplex mode for communication.
It is handled by the stack.
Many devices have multiple addresses saved, which can cause conflicts.
I2C is a half-duplex protocol that adds complexity.