diff --git a/drivers/spi/spi_ll_stm32.c b/drivers/spi/spi_ll_stm32.c index 9a3bebdaa4e..418a635589b 100644 --- a/drivers/spi/spi_ll_stm32.c +++ b/drivers/spi/spi_ll_stm32.c @@ -28,6 +28,8 @@ LOG_MODULE_REGISTER(spi_ll_stm32); #include "spi_ll_stm32.h" +#define WAIT_1US 1U + /* * Check for SPI_SR_FRE to determine support for TI mode frame format * error flag, because STM32F1 SoCs do not support it and STM32CUBE @@ -643,6 +645,14 @@ static int transceive(const struct device *dev, LL_SPI_Enable(spi); +#if CONFIG_SOC_SERIES_STM32H7X + /* + * Add a small delay after enabling to prevent transfer stalling at high + * system clock frequency (see errata sheet ES0392). + */ + k_busy_wait(WAIT_1US); +#endif + /* This is turned off in spi_stm32_complete(). */ spi_stm32_cs_control(dev, true);