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 transferred. 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
Text editor powered by tinymce.