fixes a race condition when reading qspi data register

This commit is contained in:
Eyck Jentzsch 2025-05-23 20:24:02 +02:00
parent b9e5f33cb6
commit 5353d7d258

View File

@ -66,9 +66,11 @@ static inline uint8_t spi_read(volatile qspi_t *qspi) {
qspi->DATA = SPI_CMD_READ; qspi->DATA = SPI_CMD_READ;
while (spi_rsp_occupied(qspi) == 0) while (spi_rsp_occupied(qspi) == 0)
; ;
while ((qspi->DATA & 0x80000000) == 0) int32_t data;
; do {
return qspi->DATA; data = qspi->DATA ;
} while (data<0);
return data;
} }
static inline void spi_select(volatile qspi_t *qspi, uint32_t slaveId) { static inline void spi_select(volatile qspi_t *qspi, uint32_t slaveId) {