I2C Master and Slave

I2C is a two-wire, bi-directional serial bus that provides a simple and efficient method of data exchange between devices. It is most suitable for applications requiring occasional communication over a short distance between many devices. The I2C standard is a true multi-master bus including collision detection and arbitration that prevents data corruption if two or more masters attempt to control the bus simultaneously.

The interface defines 3 transmission speeds:

  • Normal: 100Kbps
  • Fast: 400Kbps
  • High speed: 3.5Mbps


  • Compatible with Philips I2C standard
  • Multimaster Operation
  • Software programmable clock frequency
  • Clock Stretching and Wait state generation
  • Software programmable acknowledge bit
  • Interrupt or bit-polling driven byte-by-byte data-transfers
  • Arbitration lost interrupt, with automatic switching from master to slave
  • Called as Slave interrupt
  • Start/Stop/Repeated Start generation
  • Acknowledge bit generation/detection
  • Start/Stop detection
  • Bus busy detection
  • Supports 7 and 10bit addressing mode in both master and slave modes
  • Operates from a wide range of input clock frequencies
  • Static synchronous design
  • Fully synthesizable