Hi, Negar,
I suggest you use PE to generate the code to initialize the I2S module. Regarding your question to use FIFO, as you know that the both the receiver and transmitter have 8*32 bits FIFO for K22 family, in other words, both the receiver and transmitter have 8 deep FIFO, using FIFO can save the core load. For example, you use interrupt mechanism to read data from receiver, if you do not use FIFO, once the receiver get one data, an interrupt from IIS receiver will will be triggered so that the Core can read the data to a memory. If you use receiver FIFO, for example, you set the watermark in I2Sx_RCR1 as 6, only the IIS receiver get 6 data, the corresponding FRF flag in I2Sx_RCSR is set, if you enable the FIFO interrupt by setting the FRIE bit in I2Sx_RCSR, an interrupt will be triggered, in the ISR, you can read 6 data from receiver FIFO, obviously, it will save core load.
Both the Codewarriopr for mcu ver10.6 and KDS all support PE.
Hope it can help you
BR
Xiangjun Rong