Микрофон для чтения памяти 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
Я что-то упускаю? Или есть какие-то пропущенные настройки?