14.4 I2C Register Map

The internal register address map and reset values of each APB accessible register for I2C peripherals are listed in the following table. The I2C_0 base address resides at 0x40002000 and extends to address 0x40002FFF in the Cortex-M3 processor memory map. The I2C_1 base address resides at 0x40012000 and extends to address 0x40012FFF in the Cortex-M3 processor memory map.

Table 14-4. I2C Register Map
Register NameAddress OffsetR/WReset ValueDescription
CTRL0x00R/W0x00Control register: Used to configure the I2C peripheral.
STATUS0x04R0xF8Status register: Read-only value which indicates the current state of the I2C peripheral.
DATA0x08R/W0x00Data register: Read/write data to/from the serial interface.
SLAVE0 ADR0x0CR/W0x00Slave0 address register: Contains the primary programmable address of the I2C peripheral.
SMBUS0x10R/W0b01X1X000SMBus register: Configuration register for SMBus timeout reset condition and for the optional SMBus signals SMBALERT_N and SMSBUS_N.
FREQ0x14R/W0x08Frequency register: Necessary for configuring real-time timeout logic. Can be set to the PCLK frequency for 25 ms SMBus timeouts, or the timeout value maybe increased/decreased.
GLITCHREG0x18R/W0x03Glitch Reg length register: Used to adjust the input glitch filter length. If GLITCHREG_FIXED = 0, then the register can be set from 3 to 21.
SLAVE1 ADR0x1CR/W0x00Slave1 address register: Contains the secondary programmable address of the I2C peripheral.