Here is a list of terminology used in I2C use.

BUS

The wires used to connect I2C devices from TARGETs to the CONTROLLER. The bus consists of the SDA and SCL wires and should also have a common ground wire. If distributing power, a power line may be added.

CONTROLLER

This is the host device and has most of the responsibility for controlling the I2C bus. Typically, there is only one controller. Examples are Arduino boards, CircuitPython boards, Raspberry Pi's, etc. Your user code runs on the controller.

TARGET

This is the target device being talked to by the controller. There can be more than one target on the I2C bus as long as each has a unique address. Examples are the various I2C sensor breakouts.

ADDRESS

All I2C target devices have an address. Typically, this is a 7 bit value. Each target on an I2C bus must have a unique address.

SDA

This is the Serial DAta pin and/or signal. It carries the data being sent. It is one of the two main I2C signals. The other being SCL.

SCL

This is the Serial CLock pin and/or signal. It provides the clock signal used for synchronizing reading the data. It is one of the two main I2C signals. The other being SDA.

TRANSACTION

An I2C exchange between a controller and a target. It begins with a START and ends with STOP. In between is the actual exchange, the specifics for which can vary.

START

As the name implies, this is what starts an I2C transaction. A start condition is generated by transitioning SDA from HIGH to LOW while SCL is HIGH.

STOP

An I2C stop signals the end of an I2C transaction. It is generated by transitioning SDA from LOW to HIGH while SCL is HIGH.

REPEATED START

This is the same as a START. The only difference is that it occurs after an initial start and without a subsequent STOP.

ACK/NACK

Acknowledge (ACK) and Not Acknowledge (NACK). This is a single bit used within the I2C protocol to indicate various conditions. It is sent on SDA after each byte has been transferred. Generally:

  • ACK = SDA LOW
  • NACK = SDA HIGH

PULL UP RESISTORS

These are the resistors required by the I2C bus. There are two. One between SDA and VCC. One between SCL and VCC.

This will be explained more as we go along.

This guide was first published on Mar 09, 2022. It was last updated on Mar 09, 2022.

This page (Terminology) was last updated on May 28, 2022.

Text editor powered by tinymce.