
Serial peripheral interface (SPI)
RM0008
698/1096
Doc ID 13902 Rev 12
The I
2
S shares three common pins with the SPI:
●
SD: Serial Data (mapped on the MOSI pin) to transmit or receive the two time-
multiplexed data channels (in simplex mode only).
●
WS: Word Select (mapped on the NSS pin) is the data control signal output in master
mode and input in slave mode.
●
CK: Serial Clock (mapped on the SCK pin) is the serial clock output in master mode
and serial clock input in slave mode.
An additional pin could be used when a master clock output is needed for some external
audio devices:
●
MCK: Master Clock (mapped separately) is used, when the I
2
S is configured in master
mode (and when the MCKOE bit in the SPI_I2SPR register is set), to output this
additional clock generated at a preconfigured frequency rate equal to 256 × F
S
, where
F
S
is the audio sampling frequency.
The I
2
S uses its own clock generator to produce the communication clock when it is set in
master mode. This clock generator is also the source of the master clock output. Two
additional registers are available in I
2
S mode. One is linked to the clock generator
configuration SPI_I2SPR and the other one is a generic I
2
S configuration register
SPI_I2SCFGR (audio standard, slave/master mode, data format, packet frame, clock
polarity, etc.).
The SPI_CR1 register and all CRC registers are not used in the I
2
S mode. Likewise, the
SSOE bit in the SPI_CR2 register and the MODF and CRCERR bits in the SPI_SR are not
used.
The I
2
S uses the same SPI register for data transfer (SPI_DR) in 16-bit wide mode.
25.4.2
Supported audio protocols
The three-line bus has to handle only audio data generally time-multiplexed on two
channels: the right channel and the left channel. However there is only one 16-bit register for
the transmission or the reception. So, it is up to the software to write into the data register
the adequate value corresponding to the considered channel side, or to read the data from
the data register and to identify the corresponding channel by checking the CHSIDE bit in
the SPI_SR register. Channel Left is always sent first followed by the channel right (CHSIDE
has no meaning for the PCM protocol).
Four data and packet frames are available. Data may be sent with a format of:
●
16-bit data packed in 16-bit frame
●
16-bit data packed in 32-bit frame
●
24-bit data packed in 32-bit frame
●
32-bit data packed in 32-bit frame
When using 16-bit data extended on 32-bit packet, the first 16 bits (MSB) are the significant
bits, the 16-bit LSB is forced to 0 without any need for software action or DMA request (only
one read/write operation).
The 24-bit and 32-bit data frames need two CPU read or write operations to/from the
SPI_DR or two DMA operations if the DMA is preferred for the application. For 24-bit data
frame specifically, the 8 nonsignificant bits are extended to 32 bits with 0-bits (by hardware).
For all data formats and communication standards, the most significant bit is always sent
first (MSB first).