I2C - интерфейс передачи данных микроконтроллера STM32F10x


Offset: 0x00
I2C Control register 1
Первый регистр управления интерфейсом I2C
Offset: 0x04
I2C Control register 2
Второй регистр управления интерфейсом I2C
Offset: 0x08
I2C Own address register 1
Первый регистр собственного адреса
Offset: 0x0C
I2C Own address register 2
Второй регистр собственного адреса
Offset: 0x10
I2C Data register
Регистр данных интерфейса I2C
Offset: 0x14
I2C Status register 1
Первый регистр состояния интерфейса I2C
Offset: 0x18
I2C Status register 2
Второй регистр состояния интерфейса I2C
Offset: 0x1C
I2C Clock control register
Регистр управления тактированием интерфейса I2C
Offset: 0x20
I2C TRISE register


//-  stm32f10x.h

#define PERIPH_BASE         ((uint32_t)0x40000000)      /* Peripheral base address in the alias region */
#define APB1PERIPH_BASE     PERIPH_BASE
#define I2C1_BASE           (APB1PERIPH_BASE + 0x5400)
#define I2C2_BASE           (APB1PERIPH_BASE + 0x5800)
#define I2C1                ((I2C_TypeDef *) I2C1_BASE)
#define I2C2                ((I2C_TypeDef *) I2C2_BASE)


typedef struct
{
  __IO uint16_t CR1;
       uint16_t  RESERVED0;
  __IO uint16_t CR2;
       uint16_t  RESERVED1;
  __IO uint16_t OAR1;
       uint16_t  RESERVED2;
  __IO uint16_t OAR2;
       uint16_t  RESERVED3;
  __IO uint16_t DR;
       uint16_t  RESERVED4;
  __IO uint16_t SR1;
       uint16_t  RESERVED5;
  __IO uint16_t SR2;
       uint16_t  RESERVED6;
  __IO uint16_t CCR;
       uint16_t  RESERVED7;
  __IO uint16_t TRISE;
       uint16_t  RESERVED8;
} I2C_TypeDef;


I2C1_EV_IRQn   = 31,     /* I2C1 Event Interrupt  */
I2C1_ER_IRQn   = 32,     /* I2C1 Error Interrupt  */
I2C2_EV_IRQn   = 33,     /* I2C2 Event Interrupt  */
I2C2_ER_IRQn   = 34,     /* I2C2 Error Interrupt  */