I2C: All about Inter Integrated Circuit Communication Protocol

by Nov 7, 2020IoT Connectivity

For an embedded system if the microcontroller is the brain then the input and output devices form the sensory parts of the embedded system. In other words, the system consists of two microcontrollers one which overlooks everything and the other is inside the input or output device. Both microcontrollers interact with each other to exchange data. This exchange of data follows a standard set of rules called the communication protocol. In this article, we would be exploring one such protocol called I2C.

Introduction

I2C stands for Inter-Integrated Circuit serial communication protocol. In other words data is sent bit by bit serially to the receiver. It uses two wires(channels) for communication. The two channels respectively are SCL (Serial Clock) and SDA(Serial Data). It compares with other serial communication protocols like UART, SPI with I2C being the hybrid of the two.I2C is a synchronous communication protocol. The master and slave both use the same clock to synchronise the bits and for sampling the data.

The Message

Whenever a system uses I2C protocol the message has a certain specific structure. A standard I2C message consists of the following:

Start Condition: This is the bit which signals to the slave that communication is about to start. The SDA line switches from HIGH to LOW before the SCL line switches HIGH to LOW.

Stop Condition: This is the bit which signals the completion of communication. It is opposite of the Start condition in other words the SDA switches from LOW to HIGH after SCL switches from LOW to HIGH.

Address Frame: This part of the message consists of the address of the slave. The address is used to locate and send or retrieve the data from the slave. It is generally 7-10 bits long. Hence it can identify 2^N slaves uniquely.

Communication protocol message structure

Read/Write: This bit defines the operation to be performed. It tells whether we are sending data to the slave or are requesting the data. Generally, 0 indicates write operation and 1 indicates read operation.

ACK/NACK: It is the acknowledge bit sent in after every message to verify whether the communication was successful or not.

The Data Frame: It is the 8 bits long part of the message which is the actual data that we are sending or have requested from a slave. It is always sandwiched between the ACK/NACK bits for verification. After getting the acknowledgement this 8 bits are sent serially with MSB first.

How it works?

The master first sends the start bit followed by the address of the slave it wants to communicate with. To do so the master pulls the SDA line from HIGH to LOW before SCL goes from HIGH to LOW. Each slave compares the address with its own. If the address matches with that of the slave it sends and acknowledgement by pulling the SDA line low for one bit. The address is followed by read or write bit, after acknowledgement is received the data is transferred from master to slave or vice versa. The communication is terminated after the master pulls SDA HIGH before SCL goes HIGH.

I2C Vs other protocols

As mentioned above I2C is a hybrid version of UART and SPI communication. Unlike SPI communication it gives you the choice of having multiple masters and multiple slaves in the system while using lesser hardware resources. The UART has a pre fixed data transfer rate and hence there is a possibility of data loss. I2C overcomes this by making the data transfer synchronous and hence reducing the possibility of data loss. As, for each data transfer cycle you also have to send the extra bits in form of Start/Stop, ACK it makes system a bit inefficient and also make it slow as compared to SPI. Also, because it doesn’t have a separate bus for address the hardware implementation of a system with multiple masters is a bit more complex. To conclude I2C is a cheaper solution for a system which requires the protocol to be reliable, efficient and fast.

I2C SPECIFICATIONS

Creating a multiplication Skill in Alexa using python

Written By Monisha Macharla

Hi, I'm Monisha. I am a tech blogger and a hobbyist. I am eager to learn and explore tech related stuff! also, I wanted to deliver you the same as much as the simpler way with more informative content. I generally appreciate learning by doing, rather than only learning. Thank you for reading my blog! Happy learning!

RELATED POSTS

What is Edge Intelligence: Architecture and Use Cases

What is Edge Intelligence: Architecture and Use Cases

Introduction With the latest advancements in AI technologies, we have noticed a significant increase in the deployment of AI-based applications and services in recent years. More recently, with the booming IoT industry in particular, billions of mobiles and IoT...

Apache Kafka vs Apache Spark : All you need to know

Apache Kafka vs Apache Spark : All you need to know

Introduction Due to the increase in the volume of data, the demand for Stream processing is on the rise. Just processing the data wouldn't be enough, it should be done quickly too so that organizations can react to changing market conditions on a real-time basis. This...

Creating a Multiplication Skill in Alexa using Python

Creating a Multiplication Skill in Alexa using Python

Introduction In this tutorial, we will be focusing on how to create a custom multiplication skill in Alexa using Python. If you're completely new to Alexa skills, you can get a brief idea about it by clicking here. Subsequently, we have posted regarding account...

Creating a Hello World Skill in Alexa using Python

Creating a Hello World Skill in Alexa using Python

Introduction In this tutorial, we will be focusing on how to create a Hello World Skill in Alexa Developer Console. This is the most basic skill, and it would give us an idea about Skill-building using Alexa's developer console. If you're completely new to Alexa, you...

Creating a custom Date-Time skill in Alexa using Python

Creating a custom Date-Time skill in Alexa using Python

Introduction In this tutorial, we will look at how to create a simple date-time skill in Alexa using Python. For this skill, the only prerequisites required are an Alexa developer account and some basic understanding of Python. Also, we have created a post on how to...

All you need to know about Amazon Alexa Skills

All you need to know about Amazon Alexa Skills

Introduction In this tutorial, we will be taking a quick look at Amazon Alexa Skills. So, let us get started with the most common question - What Is Amazon Alexa? Alexa is nothing but a cloud-based voice service provided by the tech giant Amazon. In today's world,...

Wi-Fi HaLow: IEEE 802.11ah Wireless Networking Protocol

Wi-Fi HaLow (pronounced "HEY-Low") is an IEEE 802.11ah wireless networking protocol. It was released in 2017 as an update to the IEEE 802.11-2007 wireless networking standard. It uses 900 MHz, license-exempt bands, to provide extended range Wi-Fi networks, as opposed...

What is IoT Cisco Virtualized Packet Core (VPC)?

What is IoT Cisco Virtualized Packet Core (VPC)?

In this article, we will discuss about what is Cisco Virtualized Packet Core (VPC), How it supports IOT. Finally, we discus about its use cases. What is Virtualized Packet Core (VPC)? Virtualized Packet Core (VPC) is a technology providing all services for 4G, 3G, 2G,...

10 Best FTP clients for Windows and MAC users

10 Best FTP clients for Windows and MAC users

FTP is the abbreviation for File Transfer Protocol. Its a commonly used protocol to exchange files over any network. FTP clients are specifically designed software to transfer files between PC and servers over the internet. When a file is being transferred from one...

What is DNS and How does it work?

What is DNS and How does it work?

The Internet is just a network of 'n' computers that can communicate over various communication channels. Now, anything you do on the Internet is only an exchange of information(through files, scripts, etc.) So for the exchange to happen, you need to locate the other...

VIDEOS – FOLLOW US ON YOUTUBE

EXPLORE OUR IOT PROJECTS

IoT Smart Gardening System – ESP8266, MQTT, Adafruit IO

Gardening is always a very calming pastime. However, our gardens' plants may not always receive the care they require due to our active lifestyles. What if we could remotely keep an eye on their health and provide them with the attention they require? In this article,...

How to Simulate IoT projects using Cisco Packet Tracer

In this tutorial, let's learn how to simulate the IoT project using the Cisco packet tracer. As an example, we shall build a simple Home Automation project to control and monitor devices. Introduction Firstly, let's quickly look at the overview of the software. Packet...

All you need to know about integrating NodeMCU with Ubidots over MQTT

In this tutorial, let's discuss Integrating NodeMCU and Ubidots IoT platform. As an illustration, we shall interface the DHT11 sensor to monitor temperature and Humidity. Additionally, an led bulb is controlled using the dashboard. Besides, the implementation will be...

All you need to know about integrating NodeMCU with Ubidots over Https

In this tutorial, let's discuss Integrating NodeMCU and Ubidots IoT platform. As an illustration, we shall interface the DHT11 sensor to monitor temperature and Humidity. Additionally, an led bulb is controlled using the dashboard. Besides, the implementation will be...

How to design a Wireless Blind Stick using nRF24L01 Module?

Introduction Let's learn to design a low-cost wireless blind stick using the nRF24L01 transceiver module. So the complete project is divided into the transmitter part and receiver part. Thus, the Transmitter part consists of an Arduino Nano microcontroller, ultrasonic...

Sending Temperature data to ThingSpeak Cloud and Visualize

In this article, we are going to learn “How to send temperature data to ThingSpeak Cloud?”. We can then visualize the temperature data uploaded to ThingSpeak Cloud anywhere in the world. But "What is ThingSpeak?” ThingSpeak is an open-source IoT platform that allows...

Amaze your friend with latest tricks of Raspberry Pi and Firebase

Introduction to our Raspberry Pi and Firebase trick Let me introduce you to the latest trick of Raspberry Pi and Firebase we'll be using to fool them. It begins with a small circuit to connect a temperature sensor and an Infrared sensor with Raspberry Pi. The circuit...

How to implement Machine Learning on IoT based Data?

Introduction The industrial scope for the convergence of the Internet of Things(IoT) and Machine learning(ML) is wide and informative. IoT renders an enormous amount of data from various sensors. On the other hand, ML opens up insight hidden in the acquired data....

Smart Display Board based on IoT and Google Firebase

Introduction In this tutorial, we are going to build a Smart Display Board based on IoT and Google Firebase by using NodeMCU8266 (or you can even use NodeMCU32) and LCD. Generally, in shops, hotels, offices, railway stations, notice/ display boards are used. They are...

Smart Gardening System – GO GREEN Project

Automation of farm activities can transform agricultural domain from being manual into a dynamic field to yield higher production with less human intervention. The project Green is developed to manage farms using modern information and communication technologies....