diff --git a/src/omv/boards/OPENMV2/omv_boardconfig.h b/src/omv/boards/OPENMV2/omv_boardconfig.h index 0dfa447d3..b9ecebc42 100644 --- a/src/omv/boards/OPENMV2/omv_boardconfig.h +++ b/src/omv/boards/OPENMV2/omv_boardconfig.h @@ -156,6 +156,7 @@ #define WINC_SPI (SPI2) #define WINC_SPI_AF (GPIO_AF5_SPI2) #define WINC_SPI_TIMEOUT (1000) +#define WINC_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_2) #define WINC_SPI_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE() #define WINC_SPI_SCLK_PIN (GPIO_PIN_13) diff --git a/src/omv/boards/OPENMV3/omv_boardconfig.h b/src/omv/boards/OPENMV3/omv_boardconfig.h index cd085880f..f048a0e35 100644 --- a/src/omv/boards/OPENMV3/omv_boardconfig.h +++ b/src/omv/boards/OPENMV3/omv_boardconfig.h @@ -153,6 +153,8 @@ #define WINC_SPI (SPI2) #define WINC_SPI_AF (GPIO_AF5_SPI2) #define WINC_SPI_TIMEOUT (1000) +// SPI1/2/3 clock source is PCLK1 (54MHz/2 == 27MHz). +#define WINC_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_2) #define WINC_SPI_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE() #define WINC_SPI_SCLK_PIN (GPIO_PIN_13) diff --git a/src/omv/boards/OPENMV4/omv_boardconfig.h b/src/omv/boards/OPENMV4/omv_boardconfig.h index c6fa3a03c..a6c53df0a 100644 --- a/src/omv/boards/OPENMV4/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4/omv_boardconfig.h @@ -167,6 +167,8 @@ #define WINC_SPI (SPI2) #define WINC_SPI_AF (GPIO_AF5_SPI2) #define WINC_SPI_TIMEOUT (1000) +// SPI1/2/3 clock source is PLL2 (160MHz/4 == 40MHz). +#define WINC_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_4) #define WINC_SPI_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE() #define WINC_SPI_SCLK_PIN (GPIO_PIN_13) diff --git a/src/winc1500/src/nm_bus_wrapper.c b/src/winc1500/src/nm_bus_wrapper.c index 7127ab5ab..d1c0258de 100644 --- a/src/winc1500/src/nm_bus_wrapper.c +++ b/src/winc1500/src/nm_bus_wrapper.c @@ -136,7 +136,7 @@ sint8 nm_bus_init(void *pvinit) SPI_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW; SPI_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE; SPI_HANDLE.Init.NSS = SPI_NSS_SOFT; - SPI_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + SPI_HANDLE.Init.BaudRatePrescaler = WINC_SPI_PRESCALER; SPI_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB; SPI_HANDLE.Init.TIMode = SPI_TIMODE_DISABLED; SPI_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;