GD32VF103 User Manual
403
16-bit data packed in 32-bit frame in the audio standards except the LSB justified
standard (DTLEN = 00, CHLEN = 1, and I2SSTD is not equal to 0b10)
1. Wait for the last RBNE.
2. Then wait one I2S clock cycle.
3. Clear the I2SEN bit.
7.
For all other cases
2. Wait for the second last RBNE.
3. Then wait one I2S clock cycle.
4. Clear the I2SEN bit.
I2S slave transmission sequence
The transmission sequence in slave mode is similar to that in master mode. The differences
between them are described below.
In slave mode, the slave has to be enabled before the external master starts the
communication. The transmission sequence begins when the external master sends the clock
and when the I2S_WS signal requests the transfer of data. The data has to be written to the
SPI_DATA register before the master initiates the communication. Software should write the
next audio data into SPI_DATA register before the current data finishes. Otherwise,
transmission underrun error occurs. The TXURERR flag is set and an interrupt may be
generated if the ERRIE bit in the SPI_CTL1 register is set. In this case, it is mandatory to
disable and enable I2S to resume the communication. In slave mode, I2SCH is sensitive to
the I2S_WS signal coming from the external master.
In order to disable I2S, it is mandatory to clear the I2SEN bit after the TBE flag is high and
the TRANS flag is low.
I2S slave reception sequence
The reception sequence in slave mode is similar to that in master mode. The differences
between them are described below.
In slave mode, the slave has to be enabled before the external master starts the
communication. The reception sequence begins when the external master sends the clock
and when the I2S_WS signal indicates a start of the data transfer. In slave mode, I2SCH is
sensitive to the I2S_WS signal coming from the external master.
In order to disable I2S, it is mandatory to clear the I2SEN bit immediately after receiving the
last RBNE.
18.9.4.
DMA function
DMA function is the same as SPI mode. The only difference is that the CRC function is not
available in I2S mode.