summaryrefslogtreecommitdiff
path: root/ports/stm32/i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/stm32/i2c.c')
-rw-r--r--ports/stm32/i2c.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/ports/stm32/i2c.c b/ports/stm32/i2c.c
index 9d128acc3..a1fde7e6b 100644
--- a/ports/stm32/i2c.c
+++ b/ports/stm32/i2c.c
@@ -312,19 +312,15 @@ int i2c_init(i2c_t *i2c, mp_hal_pin_obj_t scl, mp_hal_pin_obj_t sda, uint32_t fr
// Enable I2C peripheral clock
volatile uint32_t tmp;
(void)tmp;
- switch (i2c_id) {
- case 0:
- case 1:
- case 2:
- RCC->APB1ENR |= RCC_APB1ENR_I2C1EN << i2c_id;
- tmp = RCC->APB1ENR; // delay after RCC clock enable
- break;
- #if defined(STM32H7)
- case 3:
- RCC->APB4ENR |= RCC_APB4ENR_I2C4EN;
- tmp = RCC->APB4ENR; // delay after RCC clock enable
- break;
- #endif
+ #if defined(STM32H7)
+ if (i2c_id == 3) {
+ RCC->APB4ENR |= RCC_APB4ENR_I2C4EN;
+ tmp = RCC->APB4ENR; // delay after RCC clock enable
+ } else
+ #endif
+ {
+ RCC->APB1ENR |= RCC_APB1ENR_I2C1EN << i2c_id;
+ tmp = RCC->APB1ENR; // delay after RCC clock enable
}
// Initialise I2C peripheral