45.6.2 Basic Operation

The following description is only valid when the FIFO is disabled (I2SMCC_MRB.FIFOEN = 0).

When the FIFO is enabled, the flags RXLRDYx, RXRRDYx, TXLRDYx and TXRRDYx are not relevant in I2SMCC_ISRA. For details, see Holding Registers.

The receiver can be operated by reading the Receiver Holding register (I2SMCC_RHR) or the Receiver Holding Left x registers (I2SMCC_RHLxR) and the Receiver Holding Right x registers (I2SMCC_RHRxR), whenever the Receive Left x Ready (RXLRDYx) bit or the Receive Right Ready (RXRRDYx) bit in the Interrupt Status register A (I2SMCC_ISRA) is set. Successive values read from I2SMCC_RHR correspond to the samples from the first left audio channel to the last left audio channel enabled then from the first right audio channel to the last right audio channel enabled, or from channels 0 to I2SMCC_MRA.NBCHAN in TDM mode for the successive frames.

The transmitter can be operated by writing to the Transmitter Holding register (I2SMCC_THR) or the Transmitter Holding Left x registers (I2SMCC_THLxR) and the Transmitter Holding Right x registers (I2SMCC_THRxR), whenever the Transmit Left x Ready (TXLRDYx) bit or the Transmit Right x Ready (TXRRDYx) bit in the I2SMCC_ISRA is set. Successive values written to I2SMCC_THR correspond to the samples from the first left audio channel to the last left audio channel enabled, then from the first right audio channel to the last right audio channel enabled, or from channels 0 to I2SMCC_MRA.NBCHAN in TDM mode for the successive frames.

RXLRDYx, RXRRDYx, TXLRDYx and TXRRDYx can be polled by reading the I2SMCC_ISRA.

The I2SMCC processor load can be reduced by enabling interrupt-driven operation. The RXLRDYx, RXRRDYx, TXLRDYx and/or TXRRDYx interrupt requests can be enabled by writing a ‘1’ to the corresponding bit in the Interrupt Enable Register A (I2SMCC_IERA). The interrupt service routine associated to the I2SMCC interrupt request is executed when at least one of the RXLRDYx, RXRRDYx, TXLRDYx and TXRRDYx status bits is set.