This should actually be a response to e2e.ti.com/.../i2s-24-bit-output-problem-on-cc1310, but unfortunately this thread is already closed.
I was already shocked when I saw this 5 year old post, as I stumbled upon the same problem. My mic has a 24 bit word size and when I compare the actual data on the bus with a logic analyzer and compare it with the results in the byte buffer I can clearly see that of the 3 bytes of each word only 2 were read.
The reason seems to be within the SDK, the call to I2S_startClocks sets the content of I2S:AIFFMTCFG to the wrong setting, although a 24 bit word size has been selected in the I2S_Params. The solution is luckily not too hard:
I2S_startClocks(i2sHandle); uint32_t *registerAddress = (uint32_t*)0x4002100C; // address of I2S0:AIFFMTCFG uint32_t registerValue = *registerAddress; registerValue |= (1 << 7); // bit MEM_LEN_24 *registerAddress = registerValue;
Regards,
benediktibk