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 */