Introduction

Author: Christopher Best, Microchip Technology Inc.

Inter-Integrated Circuit, more commonly referred to as I2C, is a synchronous, two-wire, bidirectional serial communications bus. The I2C module can be used to communicate with other I2C compatible EEPROMs, display drivers, sensors, or other microcontroller devices. This technical brief discusses the features and functions of the stand-alone I2C module in Client mode. The stand-alone I2C module should not be confused with the traditional Host Synchronous Serial Port (MSSP), which contained both I2C and Serial Peripheral Interface (SPI) functions.

I2C Module Modes and Features

The I2C module provides the following operational modes and features:

  • Host Mode
  • Client Mode with Byte NACKing
  • Multi-Host Mode
  • Dedicated Receive and Transmit Buffers
  • Up to Four Dedicated Client Address Registers(1)
  • 7-Bit and 10-Bit Addressing with Masking
  • General Call Addressing
  • Interrupts
  • Bus Collision Detection
  • Bus Time-Out Detection with Programmable Sources
  • SDA Hold Time Selection
  • Programmable Bus-Free Time Selection
  • I2C, SMBus 2.0, and SMBus 3.0 Input Level Selection
  • Direct Memory Access (DMA) Support(2)
Note:
  1. Support for four dedicated client registers is only available when in 7-bit Addressing mode. When in 10-bit Addressing mode, only two dedicated Address registers are available.
  2. Direct Memory Access (DMA) is not available on all devices. Refer to the device data sheet to determine if the DMA is available.