Much information can be found online presenting an overview of I2C. This document explains I2C using LabVIEW. The I2C bus is a two-wire, half-duplex serial interface. The two lines, Serial Data (SDA) and Serial Clock (SCL), are both bidirectional. The I2C specification defines three speeds: standard, 100 kHz; fast, 400 kHz; and high speed, 3.4 MHz.
Each device connected to the I2C bus has a unique 7-bit I2C address to facilitate identification and communication by the master. Commonly, the upper four bits are fixed and assigned to specific categories of devices (for example, 1010 is assigned to serial EEPROMs). The three lower bits are programmable through hardware address pins, allowing up to eight devices of the same type to be connected to a single I2C bus.
Each device on the bus (both master and slave) can be a receiver and/or transmitter. For example, an LCD is typically only a receiver, while an EEPROM is both a transmitter and receiver. Temperature sensors are commonly transmitters in function.
The I2C is a multi master bus, meaning that multiple masters can be connected to the bus at the same time. While a master is initiating a transfer on the bus, all other devices, including other masters, are acting like slaves. However, if another master is trying to control the bus at the same time, I2C defines an arbitration mechanism to determine which master gets control of the bus.