cancel
Showing results for 
Search instead for 
Did you mean: 

IMP34DT05 returns only silence

deno1
Associate

Hi, I am reading from IMP34DT05 (master receive, PDM), and I always receive 0x00 0x7F 0xFF 0xFF ...and 0xFF's, ever after, until reset of SAI (disable-enable). Playing sound into mic has no effect. In debugger, immediately upon SAI enabled, FIFO is full and underrun flag is on, before any data is read. Here is my current ioc config:

deno1_0-1708522103520.png

And register values, just in case (WB55):

deno1_1-1708522425239.png

Mic L/R is on GND. Mclk is 50MHz.

I tried different configs with same result; frame synchro length, 8/16kHz, rising/falling edge.
Where am I wrong?

1 ACCEPTED SOLUTION

Accepted Solutions

I solved it already, I had configured PDM filter wrongly and at the same time Cube mx was generating wrong frequency on SAI1_Ck2, it seems it was trying to match PCM frequency rather than PDM frequency. I measured 400 kHz, when it should have been 1MHz.

Thanks anyway for the reply!

EDIT: I am now setting MCKDIV register manually, overwriting value generated by Cube MX.

View solution in original post

2 REPLIES 2
Federica Bossi
ST Employee

Hi @deno1 ,

Welcome to ST Community!

To help you I need more information about your setup. Are you using MEMSMIC1 or are you generating the fw from CubeMX yourself?

 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

I solved it already, I had configured PDM filter wrongly and at the same time Cube mx was generating wrong frequency on SAI1_Ck2, it seems it was trying to match PCM frequency rather than PDM frequency. I measured 400 kHz, when it should have been 1MHz.

Thanks anyway for the reply!

EDIT: I am now setting MCKDIV register manually, overwriting value generated by Cube MX.