diff --git a/boards/nucleo-f302r8/include/periph_conf.h b/boards/nucleo-f302r8/include/periph_conf.h index 84172c9a5905c0fa56d45de2eacc4bcff53aa218..f5edf6182063d8c25a3868b2116b21d3de764ee8 100644 --- a/boards/nucleo-f302r8/include/periph_conf.h +++ b/boards/nucleo-f302r8/include/periph_conf.h @@ -194,47 +194,37 @@ static const spi_conf_t spi_config[] = { * @name I2C configuration * @{ */ -#define I2C_NUMOF (2U) -#define I2C_0_EN 1 -#define I2C_1_EN 1 -#define I2C_IRQ_PRIO 1 -#define I2C_APBCLK (36000000U) - -/* I2C 0 device configuration */ -#define I2C_0_DEV I2C1 -#define I2C_0_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_EVT_IRQ I2C1_EV_IRQn -#define I2C_0_EVT_ISR isr_i2c1_ev -#define I2C_0_ERR_IRQ I2C1_ER_IRQn -#define I2C_0_ERR_ISR isr_i2c1_er -/* I2C 0 pin configuration */ -#define I2C_0_SCL_PORT GPIOB -#define I2C_0_SCL_PIN 8 -#define I2C_0_SCL_AF 4 -#define I2C_0_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) -#define I2C_0_SDA_PORT GPIOB -#define I2C_0_SDA_PIN 9 -#define I2C_0_SDA_AF 4 -#define I2C_0_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) - -/* I2C 1 device configuration */ -#define I2C_1_DEV I2C3 -#define I2C_1_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C3EN)) -#define I2C_1_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C3EN)) -#define I2C_1_EVT_IRQ I2C3_EV_IRQn -#define I2C_1_EVT_ISR isr_i2c3_ev -#define I2C_1_ERR_IRQ I2C3_ER_IRQn -#define I2C_1_ERR_ISR isr_i2c3_er -/* I2C 1 pin configuration */ -#define I2C_1_SCL_PORT GPIOA -#define I2C_1_SCL_PIN 8 -#define I2C_1_SCL_AF 3 -#define I2C_1_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOAEN)) -#define I2C_1_SDA_PORT GPIOB -#define I2C_1_SDA_PIN 5 -#define I2C_1_SDA_AF 8 -#define I2C_1_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) +static const i2c_conf_t i2c_config[] = { + { + .dev = I2C1, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_B, 8), + .sda_pin = GPIO_PIN(PORT_B, 9), + .scl_af = GPIO_AF4, + .sda_af = GPIO_AF4, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C1EN, + .rcc_sw_mask = RCC_CFGR3_I2C1SW, + .irqn = I2C1_ER_IRQn + }, + { + .dev = I2C3, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_A, 8), + .sda_pin = GPIO_PIN(PORT_A, 5), + .scl_af = GPIO_AF5, + .sda_af = GPIO_AF8, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C3EN, + .rcc_sw_mask = RCC_CFGR3_I2C3SW, + .irqn = I2C3_ER_IRQn + } +}; + +#define I2C_0_ISR isr_i2c1_er +#define I2C_1_ISR isr_i2c3_er + +#define I2C_NUMOF (sizeof(i2c_config) / sizeof(i2c_config[0])) /** @} */ #ifdef __cplusplus diff --git a/boards/nucleo-f303re/include/periph_conf.h b/boards/nucleo-f303re/include/periph_conf.h index 047ec5e78156b3181187f4df0855afcbab373839..412fcc5a7d7da5643bcf29b62df181a4a23aeb60 100644 --- a/boards/nucleo-f303re/include/periph_conf.h +++ b/boards/nucleo-f303re/include/periph_conf.h @@ -195,47 +195,37 @@ static const spi_conf_t spi_config[] = { * @name I2C configuration * @{ */ -#define I2C_NUMOF (2U) -#define I2C_0_EN 1 -#define I2C_1_EN 1 -#define I2C_IRQ_PRIO 1 -#define I2C_APBCLK (CLOCK_APB1) - -/* I2C 0 device configuration */ -#define I2C_0_DEV I2C1 -#define I2C_0_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_EVT_IRQ I2C1_EV_IRQn -#define I2C_0_EVT_ISR isr_i2c1_ev -#define I2C_0_ERR_IRQ I2C1_ER_IRQn -#define I2C_0_ERR_ISR isr_i2c1_er -/* I2C 0 pin configuration */ -#define I2C_0_SCL_PORT GPIOB -#define I2C_0_SCL_PIN 8 -#define I2C_0_SCL_AF 4 -#define I2C_0_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) -#define I2C_0_SDA_PORT GPIOB -#define I2C_0_SDA_PIN 9 -#define I2C_0_SDA_AF 4 -#define I2C_0_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) - -/* I2C 1 device configuration */ -#define I2C_1_DEV I2C3 -#define I2C_1_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C3EN)) -#define I2C_1_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C3EN)) -#define I2C_1_EVT_IRQ I2C3_EV_IRQn -#define I2C_1_EVT_ISR isr_i2c3_ev -#define I2C_1_ERR_IRQ I2C3_ER_IRQn -#define I2C_1_ERR_ISR isr_i2c3_er -/* I2C 1 pin configuration */ -#define I2C_1_SCL_PORT GPIOA -#define I2C_1_SCL_PIN 8 -#define I2C_1_SCL_AF 3 -#define I2C_1_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOAEN)) -#define I2C_1_SDA_PORT GPIOB -#define I2C_1_SDA_PIN 5 -#define I2C_1_SDA_AF 8 -#define I2C_1_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) +static const i2c_conf_t i2c_config[] = { + { + .dev = I2C1, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_B, 8), + .sda_pin = GPIO_PIN(PORT_B, 9), + .scl_af = GPIO_AF4, + .sda_af = GPIO_AF4, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C1EN, + .rcc_sw_mask = RCC_CFGR3_I2C1SW, + .irqn = I2C1_ER_IRQn + }, + { + .dev = I2C3, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_A, 8), + .sda_pin = GPIO_PIN(PORT_A, 5), + .scl_af = GPIO_AF5, + .sda_af = GPIO_AF8, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C3EN, + .rcc_sw_mask = RCC_CFGR3_I2C3SW, + .irqn = I2C3_ER_IRQn + } +}; + +#define I2C_0_ISR isr_i2c1_er +#define I2C_1_ISR isr_i2c3_er + +#define I2C_NUMOF (sizeof(i2c_config) / sizeof(i2c_config[0])) /** @} */ #ifdef __cplusplus diff --git a/boards/stm32f3discovery/include/periph_conf.h b/boards/stm32f3discovery/include/periph_conf.h index c4842774e49fabfbee0b1bbcf19095ab8917e409..79bd8cad5b4c32756605c34370280064e289cd92 100644 --- a/boards/stm32f3discovery/include/periph_conf.h +++ b/boards/stm32f3discovery/include/periph_conf.h @@ -209,47 +209,37 @@ static const spi_conf_t spi_config[] = { * @name I2C configuration * @{ */ -#define I2C_NUMOF (2U) -#define I2C_0_EN 1 -#define I2C_1_EN 1 -#define I2C_IRQ_PRIO 1 -#define I2C_APBCLK (CLOCK_APB1) +static const i2c_conf_t i2c_config[] = { + { + .dev = I2C1, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_B, 6), + .sda_pin = GPIO_PIN(PORT_B, 7), + .scl_af = GPIO_AF4, + .sda_af = GPIO_AF4, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C1EN, + .rcc_sw_mask = RCC_CFGR3_I2C1SW, + .irqn = I2C1_ER_IRQn + }, + { + .dev = I2C2, + .speed = I2C_SPEED_NORMAL, + .scl_pin = GPIO_PIN(PORT_F, 1), + .sda_pin = GPIO_PIN(PORT_F, 0), + .scl_af = GPIO_AF4, + .sda_af = GPIO_AF4, + .bus = APB1, + .rcc_mask = RCC_APB1ENR_I2C2EN, + .rcc_sw_mask = RCC_CFGR3_I2C2SW, + .irqn = I2C2_ER_IRQn + } +}; -/* I2C 0 device configuration */ -#define I2C_0_DEV I2C1 -#define I2C_0_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C1EN)) -#define I2C_0_EVT_IRQ I2C1_EV_IRQn -#define I2C_0_EVT_ISR isr_i2c1_ev -#define I2C_0_ERR_IRQ I2C1_ER_IRQn -#define I2C_0_ERR_ISR isr_i2c1_er -/* I2C 0 pin configuration */ -#define I2C_0_SCL_PORT GPIOB -#define I2C_0_SCL_PIN 6 -#define I2C_0_SCL_AF 4 -#define I2C_0_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) -#define I2C_0_SDA_PORT GPIOB -#define I2C_0_SDA_PIN 7 -#define I2C_0_SDA_AF 4 -#define I2C_0_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOBEN)) +#define I2C_0_ISR isr_i2c1_er +#define I2C_1_ISR isr_i2c2_er -/* I2C 1 device configuration */ -#define I2C_1_DEV I2C2 -#define I2C_1_CLKEN() (periph_clk_en(APB1, RCC_APB1ENR_I2C2EN)) -#define I2C_1_CLKDIS() (periph_clk_dis(APB1, RCC_APB1ENR_I2C2EN)) -#define I2C_1_EVT_IRQ I2C2_EV_IRQn -#define I2C_1_EVT_ISR isr_i2c2_ev -#define I2C_1_ERR_IRQ I2C2_ER_IRQn -#define I2C_1_ERR_ISR isr_i2c2_er -/* I2C 1 pin configuration */ -#define I2C_1_SCL_PORT GPIOF -#define I2C_1_SCL_PIN 1 -#define I2C_1_SCL_AF 4 -#define I2C_1_SCL_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOFEN)) -#define I2C_1_SDA_PORT GPIOF -#define I2C_1_SDA_PIN 0 -#define I2C_1_SDA_AF 4 -#define I2C_1_SDA_CLKEN() (periph_clk_en(AHB, RCC_AHBENR_GPIOFEN)) +#define I2C_NUMOF (sizeof(i2c_config) / sizeof(i2c_config[0])) /** @} */ #ifdef __cplusplus