Serial peripheral interface/ inter-IC sound (SPI/I2S) RM0367
890/1043 RM0367 Rev 7
Figure 290. Reception using DMA
31.3.12 SPI status flags
Three status flags are provided for the application to completely monitor the state of the SPI
bus.
Tx buffer empty flag (TXE)
When it is set, the TXE flag indicates that the Tx buffer is empty and that the next data to be
transmitted can be loaded into the buffer. The TXE flag is cleared by writing to the SPI_DR
register.
Rx buffer not empty (RXNE)
When set, the RXNE flag indicates that there are valid received data in the Rx buffer. It is
cleared by reading from the SPI_DR register.
Busy flag (BSY)
The BSY flag is set and cleared by hardware (writing to this flag has no effect).
When BSY is set, it indicates that a data transfer is in progress on the SPI (the SPI bus is
busy). There is one exception in master bidirectional receive mode (MSTR=1 and BDM=1
and BDOE=0) where the BSY flag is kept low during reception.
The BSY flag can be used in certain modes to detect the end of a transfer, thus preventing
corruption of the last transfer when the SPI peripheral clock is disabled before entering a
low-power mode or an NSS pulse end is handled by software.
The BSY flag is also useful for preventing write collisions in a multimaster system.
MISO/MOSI (in)
DATA 1 = 0xA1
software configures the
DMA SPI Rx channel
to receive 3 data items
and enables the SPI
SCK
DATA 2 = 0xA2
DATA 3 = 0xA3
Example with CPOL=1, CPHA=1
RXNE flag
Rx buffer
set by hardware
(read from SPI_DR)
0xA1
0xA2 0xA3
DMA request
DMA reads
DATA3 from
SPI_DR
flag DMA TCIF
set by hardware
clear
by software
DMA read from SPI_DR
The DMA transfer is
complete (TCIF=1 in
DMA_ISR)
DMA reads
DATA2 from
SPI_DR
DMA reads
DATA1 from
SPI_DR
(DMA transfer complete)
b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7
clear by DMA read
ai17350