So far i have been developing my audio application on discovery board STM32F407 (there is a embedded MEMS microphone connected to I2S2), I have been able to configure I2S2 periphery and acquire data with relative ease.
But now i had to move to custom hardware (i went for STM32F427VG). In discovery board's schematic i have found that the microphone used is MP45DT02. So i have used the very same in my custom board.
My finished board come so i have tryed to apply the same settings for I2S and expected, that i will have the same results. After compile the program and loadto the target it didnt work properly, so i started troubleshooting by looking at I2S circullar buffer. The buffer is uint16_t type and after inspecting its content after start it was properly initialized to 0, when i start the program and stop i can see that my HAL_I2S_RxHalfCpltCallback and HAL_I2S_RxCpltCallback are occuring, but all uint16_t elements of the buffer holds 0xFFFF -> that is cleary bad. Normal "healthy" pdm data looks like random numbers.
I went even further with my investigation and connected scope to data and clck lines. There another surprise: At discovery board, there is something like "return to middle" signal shape and my mew mems mic has regular square shape. But anyway i can clearly see in the signal, that there are some "zero bits" so i dont understand why i get 0xFFFF in all elements of my buffer ...
Also i am wondering, the discovery board's microphone is black (can not read anything out of it) and my MP45DT02TR is silver. So clearly STM did not use the MP45DT component and switched for something different?
See pictures. I will be grateful for any suggestions!