for (i=0; i<sizeof(buffer)/sizeof(u32); i++) { while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)==RESET) ; buffer[i] = SPI_I2S_ReceiveData(SPI2) << 16; while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)==RESET) ; buffer[i] |= SPI_I2S_ReceiveData(SPI2); } This is an example of the data I get : 0xFFFCA9FF 0xFFC1A200 0x0006E9FF 0xFEB01A00 0xFFF6D000 ... According to the STM32 Ref Manual, page 549 (Figure 213), the 8 LSB should be cleared. They are not ... Am I doing something wrong, or is it a bug in the STM32 I2S implementation ?