From 5974ac256b04a86e1ec88fd98cc8d68243f9d6be Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Wed, 13 Apr 2022 12:40:11 +0200 Subject: [PATCH] stm32/qspi: Wait for a free FIFO location before writing to DR. Must always check the FIFO before writing to DR. Without this, this function hangs on the H747. --- ports/stm32/qspi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ports/stm32/qspi.c b/ports/stm32/qspi.c index 027061fd70..d741cf9aad 100644 --- a/ports/stm32/qspi.c +++ b/ports/stm32/qspi.c @@ -228,6 +228,10 @@ STATIC void qspi_write_cmd_data(void *self_in, uint8_t cmd, size_t len, uint32_t | cmd << QUADSPI_CCR_INSTRUCTION_Pos // write opcode ; + // Wait for at least 1 free byte location in the FIFO. + while (!(QUADSPI->SR & QUADSPI_SR_FTF)) { + } + // This assumes len==2 *(uint16_t *)&QUADSPI->DR = data; }