I have implemented it as the last thing in the wspi_lld_serve_interrupt() routine:
Code: Select all
if ((wspip->qspi->SR) & QUADSPI_SR_BUSY)
wspip->qspi->CR |= QUADSPI_CR_ABORT; /* This avoids a situation described in Errata for some devices */
I found that the test for BUSY was necessary.
I suspect that the scope of this problem may be much wider than the erratum suggests; I have been trying to track down a very similar problem on the 32F767, although not all the conditions were met. Not the whole answer, though.