U-Boot I2C Driver

The page describes the configuration process and usage of the U-Boot i2c driver used on Zynq-7000 and Zynq Ultrascale+. 

Table of Contents


Introduction

The I2C module is a bus controller that can function as a master or a slave in a multi-master design. It supports a wide clock frequency range up to 400 Kb/s.  The controller supports multi-master mode for 7-bit and extended addressing modes.

U-boot Configuration

For ZynqMP

For I2C Cadence

For Zynq


Device Tree

Device tree entry for I2C


Test Procedure

Writes different patterns to the I2C EEPROM, reads back the contents of the EEPROM and performs data verification.


I2C controller Features

Zynq Ultrascale+

The processing system (PS) supports I2C devices with these key features.

  • I2C bus specification version 2
  • 16-byte FIFO
  • Programmable normal and fast bus data rates
  • Multi master support

Zynq-7000

The PS supports two I2C devices with these key features:

  • I2C bus specifications version 2
  • Supports 16-byte FIFO
  • Programmable normal and fast bus data rates
  • Master mode
  • Write transfer
  • Read transfer
  • Extended address support
  • Support HOLD for slow processor service
  • Supports TO interrupt flag to avoid stall condition
  • Slave monitor mode