Home - Blog

I2C vs SPI: Differences You Should Know

Are you designing a project, and it’s crucial to choose between I2C vs. SPI? But you don’t know which one to pick? If yes, we’ll help you decide which one is better for your project.

First off, the I2C and SPI are “low-end” protocols. But they are easy to use and work perfectly for communication between chips on your PCB.

However, selecting the wrong protocol for your project can result in undesirable results. Nevertheless, we’re here to help you understand the difference between these two similar protocols.

Are you ready? Let’s begin!

What is an SPI Protocol?

In the 1980s, Motorola developed the SPI protocol to establish communication between the microcontrollers of that time with other peripherals like EEPROM.

So, the SPI protocol utilizes four signal lines for communication between parts. However, it’s crucial to note that these don’t include the ground and power lines. Here are the four active signal lines:

  • SS: Slave Select line (controlled by the master SPI)
  • MOSI: Master Out Slave In (owned by the master SPI)
  • SCLK: Serial Clock (owned by the master SPI)
  • MISO: Master In Slave Out (owned by the master SPI device)

On this note, the four lines allow a master SPI (controlling device) to communicate with a slave SPI (peripheral device).

SPI Protocol Interface

SPI Protocol Interface

Moreover, you can only have one controller device on an SPI bus. But, there is no limit to the number of peripherals you can add. Also, adding more peripherals means increasing the SS lines. Hence, here is an illustration of how you can use three separate SS lines to control different peripherals.

SPI Protocol Interface With Multiple Slaves

SPI Protocol Interface With Multiple enslaved people

Furthermore, when the master SPI wants to communicate with the peripherals by sending or receiving data, it pulls the matching SS line. Consequently, the line will be below. Hence, the SCLK line activates and is high and low at a set frequency.

Additionally, the master SPI uses the MISO line to send out data and samples simultaneously. Also, keep in mind that there can only be communication between one peripheral and the master SPI simultaneously.

What is an I2C

In 1982, Philips Semiconductors (now NXP Semiconductors) developed the first I2C protocol to systematize communications between chips on one PCB.

Unlike its SCI counterpart, the I2C protocol has two communication lines–excluding the ground and power lines. These lines include:

  • SDA: Serial Data line
  • SCL: Serial Clock line

So, you can attach any number of enslaver and agent devices to one bus. Also, you must keep both the SCL and SDA lines as open-drain lines. As a result, your devices will only have one low line at a time. In addition, you’ll need a pull-up resistor on your pipes. That way, you can pull your line back to high.

I2C Protocol Interface

I2C Protocol Interface

Due to the open-drain design of the I2C protocol, you can use multiple masters on the same bus. But if two controller devices start communicating simultaneously, there will be an arbitration that causes one of the devices to stop transmitting.

Meanwhile, the controller devices monitor the SDA line while communication occurs. So, if one device detects that the SDA line is low while transmitting, it will stop sending. And this allows another controller device to communicate.

Also, the controller I2C device will transmit a START condition to initiate communication. Consequently, the SDA line will be low while the SCL line will remain high. 

Then, the controller device will transmit a 7-bit address of the recipient it wants to send to and a read bit (1) or write bit (0). At this point, a device on the bus will only respond if it has a matching 7-bit rate address by making the SDA line low.

Differences Between the I2C and SPI

The SPI and I2C are similar because they are “low-end” protocols. Additionally, both protocols lack the speed and other features boasted by their heavy-weight cousins (SATA, Ethernet, USB, and others). 

But when it comes to the working principles and features. Let’s take a closer look at the differences between the two protocols.

First, you can set four modes on the SPI protocol to determine how the clock works. And for the communication to work, the enslaver and agent devices must use the same model. 

  1. Mode 0: data sampled on a rising clock edge, clock idles low
  2. Mode 1: data sampled on falling clock edge, clock idles low
  3. mode 2: data sampled on losing clock edge, clock idles high
  4. Mode 3: data sampled on a rising clock edge, clock idles high

In addition, SPI data transfer speeds can go beyond 10 Mbps, making it perfect for transferring vast amounts of data. Also, you can find SPI protocols on sensors with fast update rates like LCDs and accelerometers.

Alternatively, the I2C can only send data in a one-byte packet at a time. Plus, the receiving peripheral must acknowledge each byte with an ACK bit. Additionally, the I2C protocol has three modes with different data transfer speeds. 

The standard model reaches a maximum of 100 kbps, the fast mode caps at 400 kbps, and the high-speed mode maxes out at 3.4 Mbps. Hence, the I2C protocol is significantly slower than the SPI protocol. As a result, I2C protocols work best in temperature sensors and analog-to-digital converters.

Comparing I2C and SPI

The table below further shows the significant differences between the I2C and SPI:

FeatureSPII2C
Pin drivePush-pull modeOpen-drain mode
Max. SpeedNone (But you can find 10 – 100 Mbps)100 kbps (standard method), 400 kbps (fast way), 3.4 Mbps (high-speed mode)
Multi-masterNoYes
Signal lines4 (extra devices add extra lines)2
No. of PeripheralsThe number of pins available for SS lines on the master SPI is the only limit to the number of peripherals you can haveMax. of 112 with 7-bit addressing
Flow controlNoYes

SPI vs. I2C Protocols – Pros and Cons

SPI 

Pros

  • The SPI protocols consume a small amount of power
  • It also supports high-speed full-duplex communications.

Cons

  • There are different versions and customized variants that cause compatibility issues.
  • You need extra signal lines to communicate on the same bus with multiple peripherals.
  • Only supports short-distance communications. You can’t transfer data to devices on separate boards.

I2C 

Pros

  • You don’t need additional lines to control multiple devices on the same bus.
  • Can transmit data to other PCBs but with low transmission speeds
  • Has a lower noise sensitivity
  • Can send data over longer distances
  • Less expensive to use than SPI

Cons

  • Transfer speeds are slower than SPI
  • Uses more power than the SPI protocol
  • The failure of one device to release the communication bus can lock up the I2C protocol

Factors You Should Consider When Choosing Between SPI and I2C

Selecting the best protocol for your project goes beyond the price tag. So, here are a few things to consider before making your choice:

Limited Pins

Here are the advantages and disadvantages of both SPI and I2C protocols: if you don’t enjoy using microcontrollers with more than 100 pins, this is a crucial factor to consider. In this case, you should opt for a protocol requiring fewer communication lines.

Power

Depending on your design, you might want to minimize or maximize power consumption. So, you must choose a protocol that best suits your consumption needs.

Speed

When it comes to transferring data in enormous amounts, every microsecond is crucial. So, if you need speed, go for a protocol that meets your speed standards.

PCB Size

It’s vital to consider the size of your PCB before choosing any protocol. Consequently, you’ll boost your chances of getting desirable results.

Choosing Between SPI and I2C

Here are the features of each protocol to help you make the best decision for your design:

FeaturesSPII2C
SpeedThe SPI protocol is the best choice if your design requires higher-speed transmissions.You can choose I2C for designs for low-speed devices
PCB sizeIf you’re not bothered about the size of your PCB, you can’t go wrong with either SPI or I2C.If your PCB has a smaller size and fewer tracks, consider choosing the I2C
Limited PinsGo for the SPI protocol if you don’t mind adding extra lines for communication.If you’re not comfortable with many tracks, then I2C is an ideal choice.
PowerFor lower power consumption devices, use the SPI protocolFor higher power consumption devices, use the I2C protocol

Understanding UART

UARTs are physical circuits in an integrated or microcontroller that establish serial communication between devices in embedded systems. 

Also, when dealing with UART communication, there’s always direct communication between the UART transmitter and the UART receiver.

UART vs. I2C vs. SPI

In contrast with other communication protocols like SPI and I2C, the  UART is purely physical. Plus, it doesn’t use a master/slave paradigm to communicate. Instead, the microcontroller uses two UART devices to send and receive data. Additionally, you only need two wires for UART communication. And the cables will help transmit data from the transmitter’s Tx pin to the receiver’s Rx pin.

UART Protocol Interface 

Rounding Up

In reality, the SPI and I2C protocols are used in various applications. Sometimes, you might find yourself with devices with SPI and I2C interfaces on one chip. So, you don’t have to choose between the two.

However, if you need to choose between the two protocols, the SPI is better for projects that need faster transfer speeds. On the other hand, if your microcontroller has limited pins, the I2C protocol would work better.

Have any questions? Feel free to contact us. We’ll be more than happy to help.

Avatar photo
Hommer Zhao
Hi, I am Hommer, the founder of WellPCB. So far, we have more than 4,000 customers worldwide. If you have any questions, you can feel free to contact me. I really appreciate any help you can provide.

Services