6.5.6.6 Inter-Integrated Circuit (I2C)
The I2C bus provides bidirectional data transfer through a 2-wire design (a serial data line SDA and a serial clock line SCL). The I2C bus interfaces to external I2C devices such as serial memory (RAMs and ROMs), networking devices, LCDs, tone generators, and so on. The I2C bus can also be used for system testing and diagnostic purposes in product development and manufacture.
Each device on the I2C bus can be designated as either a master or a slave. The I2C module supports both sending and receiving data as either a master or a slave and can operate simultaneously as both a master and a slave. Both the I2C master and slave can generate interrupts.
The I2C modules include the following features:
- Devices on the I2C bus can be designated as either a master or a slave
- Supports both transmitting and receiving data as either a master or a slave
- Supports simultaneous master and slave operation
- Four I2C modes
- Master transmit
- Master receive
- Slave transmit
- Slave receive
- Two 8-entry FIFOs for receive and transmit data
- FIFOs can be independently assigned to master or slave
- Four transmission speeds:
- Standard (100 kbps)
- Fast-mode (400 kbps)
- Fast-mode plus (1 Mbps)
- High-speed mode (3.33 Mbps)
- Glitch suppression
- SMBus support through software
- Clock low time-out interrupt
- Dual slave address capability
- Quick command capability
- Master and slave interrupt generation
- Master generates interrupts when a transmit or receive operation completes (or aborts due to an error)
- Slave generates interrupts when data has been transferred or requested by a master or when a START or STOP condition is detected
- Master with arbitration and clock synchronization, multiple-master support, and 7-bit addressing mode
- Efficient transfers using µDMA
- Separate channels for transmit and receive
- Ability to execute single data transfers or burst data transfers using the RX and TX FIFOs in the I2C