# I2C Source: [https://docs.qualcomm.com/doc/80-70030-8/topic/i2c.html](https://docs.qualcomm.com/doc/80-70030-8/topic/i2c.html) Interintegrated circuit (I2C) is a bidirectional 2-wire bus for an efficient inter‑IC control bus developed by Philips in the 1980s. Every device on the bus has its own unique address (registered with the I2C general body headed by Philips). The I2C core supports a multicontroller mode and 10‑bit target address and 10‑bit extendable address. For more information about I2C, see [https://www.i2c-bus.org/fileadmin/ftp/i2c_bus_specification_1995.pdf](https://www.i2c-bus.org/fileadmin/ftp/i2c_bus_specification_1995.pdf). ### I2C communication sequence overview The following figure shows the communication sequence between the controller and targets in I2C. Figure : I2C controller and target communication sequence  For example, no device can use 1111-0XX listed in the I2C specification and high-speed mode with 3.4 MHz clock frequency. Following are the I2C modes and supported speeds. - Standard mode: 100 kbps - Fast mode: 400 kbps - Fast mode plus: 1 Mbps The maximum supported bandwidth is 1 MHz. ### I2C data packet format The controller sends a 7‑bit or 10‑bit address as shown in the following figure. Along with the address, a 1‑bit read/write indicating the type of operation is also sent. Data is transferred in sequences of 8 bits placed on an SDA line. For every byte transferred, the device receiving the data sends back an ACK bit (totaling nine clock pulses). - ACK bit LOW: receives the data and is ready to accept the next byte. - ACK bit HIGH: receives the data and can't accept further data. The controller then terminates the transmission with the STOP sequence. Figure : I2C data packet ### I2C sequences When the SCL is high, the SDA must remain stable and can't change. Only when the clock line is low can the data line change. However, there are two exceptions: START and STOP sequences. Figure : I2C sequence  ## I2C features Source: [https://docs.qualcomm.com/doc/80-70030-8/topic/i2c.html](https://docs.qualcomm.com/doc/80-70030-8/topic/i2c.html) This section explains the I2C serial engine transfer modes and the different scenarios where each mode is used. The following table lists the transfer modes enabled in the various I2C subsystem drivers. | Subsystem | Transfer mode | Description | | --- | --- | --- | | Linux |