I2C stands for the inter-integrated controller. It is a serial communication protocol that can connect low-speed devices. It is a master-slave communication in which we can link and control multiple slaves from a single master. In this, each slave device has a specific address.
SPI is an interface that enables the serial (one bit at a time) exchange of data between two devices, one called a master, and the other called a slave. In this protocol, devices are linked in the master-slave relationship.
The major differences between I2C protocol and SPI protocol are as follows −
|I2C Protocol||SPI Protocol|
|There are two bus lines required as a serial data line (SDA) and a serial clock line (SCL).||Three bus lines are needed; a data input line (SI1), a data output line (SO1) and a serial clock line (SCK1) [plus 1 Chip Select (CS)].|
|It can support transfer speeds of around 100kHz (original standard, or 400kHz using the most recent standard)||It is used at higher data rates (up to 10 MHz or more).|
|It is used to be more efficient in multi-master, multi-slave applications.||It is used to be more efficient in point-to-point (single master, single slave) applications.|
|It is used for a built-in addressing scheme, and straightforward.||It can lack built-in device addressing.|
|It is used for more overhead when handling point-to-point applications.||It can take less overhead when running a point-to-point application.|
|It can be suited better for communication with onboard devices that are accessed on an occasional basis.||It can be served better for applications that are naturally thought of as data streams.|
|It has an acknowledgement mechanism to confirm receipt of data.||It does not have an acknowledgement mechanism to confirm receipt of data.|