Updated: Dec 1, 2020
What is I2C communication? How do we understand the concepts, working, and application of I2C communication? These are some of the common questions that we get to hear and will answer these in this article.
What is I2C communication?
I2C stands for inter-integrated circuits. This is a communication protocol developed by Philips that is used for data transfer using simple connections. Owing to this advantage, they are widely used in communication between common electronic components such as sensors, display, microcontrollers, etc.
In this communication protocol, data bits are transferred at certain intervals of time and hence is synchronous in nature.
In the year 1982, the first model of I2C was developed by Philips for its chips. This was limited to 100kHz communication and only provided only 7-bit addresses. Later, a publication with a 400kHz fast-mode type was added and published.
Additionally, Intel published a variant SMBus, in order to maximize predictability as well as speeds. These have lost operational costs as well as maximized interoperability.
In this type of communication, data is transferred as messages which as broken up into frames. There includes an address frame that stores the slave's binary address. The message starts stops, read/write, and acknowledgments bits between data frames.
Start: The SDA switches from HIGH to LOW even before the SCL switch does it. Once this is done, all the devices (even if they are in sleep mode) are active and wait for address bits.
Stop: The SCL switches from LOW to HIGH even before SCL does it.
Address Frame: This is a 7-bit sequence which helps to transfer the data between the master and the slave.
Read/Write: This bit is used to specify the direction of data transfer. If the master needs to send data to the slave, this bit is saved to '0'. In the reverse case, the bit is set to '1'.
ACK/NACK: This is the short-form of Acknowledged/not Acknowledged. The default value of this bit is '1' and is set to '0' if the physical address of the slave and master coincide with each other.
Data Frame: If the ACk is detected with data, then the slave is all good to go for the first data frame to be sent. The data frame consists of 8 bits and sends the MSB first. This is immediately acknowledged using ACK/NACK bit to show the scenario.
Once all the data frames are sent, a stop condition is sent by the master so the transmission is completed. This transmits SDA from low to high and the process is completed successfully.
Similar to SPI communication, this also has varied possibilities for masters and slaves. Let us check out these: one master, one slave and one master, multiple slaves.
Multiple masters and multiple slaves.
Due to its low cost, simplicity it is considered as a great option despite lower speeds. Some of the common real-life applications include:
Some of these are mainly used to access certain memory ICs.
These can be really beneficial while accessing DACs and ADCs.
Controlling and transmitting user-directed actions could be facilitated easily using I2C.
They could be taken advantage of while reading hardware.
Communication with multiple micro-controller
There is only a need for two wires.
It provides support for multiple masters and multiple slaves.
Using the acknowledge bits, confirmation can be easily done
Compared to UARTs, the hardware is lesser.
Very popular and widely used protocol.
Slower data transfer rate.
Data Frame size is limited to 8 bits.
Hardware is more complicated to be implemented compared to that of SPI.