11.2 The I²C Protocol

<aside> <img src="/icons/map-pin_gray.svg" alt="/icons/map-pin_gray.svg" width="40px" />

As is, there is a lot of stuff covered just for this one section. The main takeaway or of importance is data transfer signal components — such as knowing the different conditions.

</aside>

An $\textrm{I}^2\textrm{C}$ is an inter-integrated circuit; a very popular bus widely used for communication.

Characteristics of I²C Protocol

At a block diagram level, there is the simplest interpretation of $\textrm{I}^2\textrm{C}$. It follows a master/slave model, where the master device controls the clock line (SCL).

Figure 11.1 Basic block diagram of an inter-integrated circuit.

Figure 11.1 Basic block diagram of an inter-integrated circuit.

One of the advantages of using $\textrm{I}^2\textrm{C}$ is the low pin count:

Note that these are also these two pull-up resistors $R_P$ which will cover in a bit, but just know that they exist.

Signal Levels

So internally, how does the $\textrm{I}^2\textrm{C}$ work? A master or a slave device drives the I2C bus using an open-drain (or open-collector) driver.

Figure 11.2 Connecting standard- and fast-mode devices to the I2C bus.

Figure 11.2 Connecting standard- and fast-mode devices to the I2C bus.

The concept of open-drain driver can get a bit complicated as it dives in the topic of NMOS transistor. Nonetheless, if you are interested, this video provides a great explanation on how it works.

I2C_Open_Drain.mp4

I²C Data Transfer Signal Components

Suppose you want to send data from master to slave or read data from the slave to master, how does it work? An $\textrm{I}^2\textrm{C}$ data transfer consists of the following fundamental signal components: