Микрофон для чтения памяти STM32F107 MP34DT05-A i2s

Я работаю над STM32F107, чтобы читать микрофон MP34DT05-A mems на I2S. Я пробовал любые настройки конфигурации с pdm2pcm.cа также i2s.cно ничего не показывает ожидаемого результата.

Ожидаемый результат — положительное значение int. Это то, что я сделал до сих пор:

  • i2s3( SPI3) установлен в основной режим RX, стандартный старший бит, формат 16b, расширенный со звуковой частотой 8k.

  • DMA2 канал 1 полуслово, круговое и с очень высоким приоритетом.

  • Фильтр PDM установлен на LSB, обратный порядок байтов, прореживание на 64.

  • В main.c я называю это так:

          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);

И результат примерно такой:

        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

Я что-то упускаю? Или есть какие-то пропущенные настройки?

0 ответов

Другие вопросы по тегам