stm32/i2c: Use macros instead of magic numbers for I2C speed grades.
This commit is contained in:
parent
db702ba722
commit
618aaa4a53
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user