Hi Alex, thanks for your reply !
I've taken a look at your code, and I think we have almost the same flow. I personally clock the I2SC with PCK4 with a prescaler of 28 (120MHz/29 = 4.138MHz) and I have a FS_RATIO of 128 => FS=32,3kHz. I've setup the mode to Master (I2SC_MR_MODE_MASTER), TX mono (I2SC_MR_TXMONO), 16bit data (4<< I2SC_MR_DATALENGTH_Pos), Master clock enable (I2SC_MR_IMCKMODE) with divider of 1.
I think I have to set I2SC_MR_TXDMA to use one PCD channel only, but is it relevant since I'm in MONO mode? I tested with both settings but this doesn't change the overall non-working result, as expected.
Once the setup is done, i do the following :
I2SC0->I2SC_TPR = (uint32_t)buffer_i2sc[0]; //this is my buffer which contains 2048 bytes from 1 to 2048. uint16_t buffer_i2sc[2][2048]
I2SC0->I2SC_TCR = (uint32_t)I2SC_BUFFER_LENGTH; //2048 samples
I2SC0->I2SC_TNPR = (uint32_t)NULL;
I2SC0->I2SC_TNCR = (uint32_t)0;
I2SC0->I2SC_PTCR = PERIPH_PTCR_TXTEN;
I2SC0->I2SC_CR = I2SC_CR_CKEN|I2SC_CR_TXEN;
after this, I check using my logic analyzer and the clocking is right (MCLK, BCLK and WS), but I only have zeroes as data...
If I replace all this code with the following, I get the correct data. So this is really a PDC issue I guess. Do you think that I should clock the peripheral with an higher frequency than ~4MHz?
I2SC0->I2SC_THR=0xCAFE;
Thanks for your help