Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Inter-Integrated Circuit (I2C) is a bidirectional communication protocol commonly used to connect microcontrollers (MCUs) to various integrated circuits (ICs) like IMUs, temperature sensors, multiplexers, and more. It's popular for its simple hardware interface, multi-slave communication capability, and low power consumption.

...

Notice that there is only 1 NMOS transistor that controls Vout. A Pull-up/Pull-down GPIO has two transistors. When Vin is HIGH, Vout = GND. However, when Vin is LOW, we notice that Vout is left floating. That's when the pull-up resistor pulls the line HIGH.

Packet Protocol:

Arbitration:.

Multi-Slave Busses

I2C busses can hold up to 127 slaves on a single bus. Unlike SPI, I2C does not have a chip select line to control communication. Instead I2C relies on IC addressing (each IC on the bus has a different address). Typically each slave has alternative addresses that can be configured in the situation two slaves have the same address.


Arbitration:

Arbitration is used to resolve conflicts that arise from 2 or more devices transmitting on the bus. The bus has a wired-AND system, where only one bus can


Clock Stretching:


Resources:
https://www.circuitbasics.com/basics-of-the-i2c-communication-protocol/
https://en.wikipedia.org/wiki/I%C2%B2C
https://www.allaboutcircuits.com/technical-articles/the-i2c-bus-hardware-implementation-details/