I am using the STM32F303 with SPI1 in slave mode and no data packing. I am seeing an issue where I will get an interrupt when a byte is received, but the status register says that there is nothing in the receive FIFO. My interrupt loops over and reads from the receive FIFO as long as it is not empty. The byte is never recovered from the FIFO in future interrupts.
A little bit about my test setup - I have a GPIO line which goes high when entering the interrupt handler and low when leaving the interrupt handler. I have another GPIO line which toggles every time a byte is read from the receive FIFO. Most of the time the lines toggle as I would expect them to - as the interrupt GPIO is high, other other GPIO toggles. Once in a while though the GPIO for reading from the FIFO does not toggle after getting the interrupt. I tried switching from SPI1 to SPI2 and have not seen the issue in this setup.
Has anyone had an issue similar to this using SPI1 in slave mode?