STM32F107 read mems mic MP34DT05-A i2s

227 views Asked by At

I am working on STM32F107 to read MP34DT05-A mems mic on I2S. I have tried any configuration setting with pdm2pcm.c and i2s.c but nothing shows the expected result.

The expected result is positive int value. This is what i did so far:

  • i2s3 (SPI3) set to master RX mode, standar msb, format 16b extended with audio freq 8k.

  • DMA2 channel 1 halfword, circular and very high priority.

  • PDM filter set to LSB, big endian, decimation by 64.

  • In main.c i'm calling it like this:

   usb_printf("\nMEAS MIC..");
   __HAL_RCC_CRC_CLK_ENABLE();
   HAL_I2S_Receive_DMA(&hi2s3, pdm_buff, 16);
   usb_printf("\nPDM BUFF: ");
   usb_printf(pdm_buff);
   while (1) {
         uint16_t *pcm_out;
         uint16_t *pdm_out;
         memcpy(cbuff, pdm_buff, sizeof(pdm_buff));
         PDM_Filter(&cbuff[0], &pcm_buff[0], &PDM1_filter_handler);
         usb_printf("pcm_buff: 0x%04X  ", pcm_buff[0]);
         usb_printf("pcm_buff int: %d", pcm_buff[0]);
   }
   delay_ms(500);

And the result is something like this:

 pcm_buff: 0xFFFF828F  pcm_buff int: -32113
 pcm_buff: 0xFFFFA2E3  pcm_buff int: -23837
 pcm_buff: 0xFFFFB379  pcm_buff int: -19591
 pcm_buff: 0xFFFFBFFF  pcm_buff int: -16385

Am I missing something? Or is there any missed configuration?

0

There are 0 answers