summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/i2c.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/ports/stm32/i2c.c b/ports/stm32/i2c.c
index 5a6edc329..6cb6538cb 100644
--- a/ports/stm32/i2c.c
+++ b/ports/stm32/i2c.c
@@ -89,6 +89,10 @@
#define PYB_I2C_MASTER (0)
#define PYB_I2C_SLAVE (1)
+#define PYB_I2C_SPEED_STANDARD (100000L)
+#define PYB_I2C_SPEED_FULL (400000L)
+#define PYB_I2C_SPEED_FAST (1000000L)
+
#if defined(MICROPY_HW_I2C1_SCL)
I2C_HandleTypeDef I2CHandle1 = {.Instance = NULL};
#endif
@@ -137,12 +141,12 @@ const pyb_i2c_obj_t pyb_i2c_obj[] = {
// The value 0x40912732 was obtained from the DISCOVERY_I2Cx_TIMING constant
// defined in the STM32F7Cube file Drivers/BSP/STM32F746G-Discovery/stm32f7456g_discovery.h
#define MICROPY_HW_I2C_BAUDRATE_TIMING { \
- {100000, 0x40912732}, \
- {400000, 0x10911823}, \
- {1000000, 0x00611116}, \
+ {PYB_I2C_SPEED_STANDARD, 0x40912732}, \
+ {PYB_I2C_SPEED_FULL, 0x10911823}, \
+ {PYB_I2C_SPEED_FAST, 0x00611116}, \
}
-#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (400000)
-#define MICROPY_HW_I2C_BAUDRATE_MAX (1000000)
+#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (PYB_I2C_SPEED_FULL)
+#define MICROPY_HW_I2C_BAUDRATE_MAX (PYB_I2C_SPEED_FAST)
#elif defined(STM32F722xx) || defined(STM32F723xx) \
|| defined(STM32F732xx) || defined(STM32F733xx) \
@@ -150,20 +154,20 @@ const pyb_i2c_obj_t pyb_i2c_obj[] = {
// These timing values are for f_I2CCLK=54MHz and are only approximate
#define MICROPY_HW_I2C_BAUDRATE_TIMING { \
- {100000, 0xb0420f13}, \
- {400000, 0x70330309}, \
- {1000000, 0x50100103}, \
+ {PYB_I2C_SPEED_STANDARD, 0xb0420f13}, \
+ {PYB_I2C_SPEED_FULL, 0x70330309}, \
+ {PYB_I2C_SPEED_FAST, 0x50100103}, \
}
-#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (400000)
-#define MICROPY_HW_I2C_BAUDRATE_MAX (1000000)
+#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (PYB_I2C_SPEED_FULL)
+#define MICROPY_HW_I2C_BAUDRATE_MAX (PYB_I2C_SPEED_FAST)
#elif defined(MCU_SERIES_L4)
// The value 0x90112626 was obtained from the DISCOVERY_I2C1_TIMING constant
// defined in the STM32L4Cube file Drivers/BSP/STM32L476G-Discovery/stm32l476g_discovery.h
-#define MICROPY_HW_I2C_BAUDRATE_TIMING {{100000, 0x90112626}}
-#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (100000)
-#define MICROPY_HW_I2C_BAUDRATE_MAX (100000)
+#define MICROPY_HW_I2C_BAUDRATE_TIMING {{PYB_I2C_SPEED_STANDARD, 0x90112626}}
+#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (PYB_I2C_SPEED_STANDARD)
+#define MICROPY_HW_I2C_BAUDRATE_MAX (PYB_I2C_SPEED_STANDARD)
#else
#error "no I2C timings for this MCU"
@@ -198,8 +202,8 @@ uint32_t i2c_get_baudrate(I2C_InitTypeDef *init) {
#else
-#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (400000)
-#define MICROPY_HW_I2C_BAUDRATE_MAX (400000)
+#define MICROPY_HW_I2C_BAUDRATE_DEFAULT (PYB_I2C_SPEED_FULL)
+#define MICROPY_HW_I2C_BAUDRATE_MAX (PYB_I2C_SPEED_FULL)
STATIC void i2c_set_baudrate(I2C_InitTypeDef *init, uint32_t baudrate) {
init->ClockSpeed = baudrate;