Я работал над аудиопроектом с обнаружением STM32F4 и заметил одну вещь, все стандарты I2S работают только с одним микрофоном (в зависимости от того, на каком краю стандарта используются отдельные биты). Например со стандартами Philips, MSB или LSB, которые используют спадающие фронты в качестве битовых триггеров, улавливает только заземленный микрофон L / R, а если я использую стандарт PCM, который использует нарастающие фронты в качестве битовых триггеров, улавливает только микрофон High L / R. Я не могу найти способ поймать оба образца микрофона MEMS за один период. Разве STM32F4 не может одновременно подключаться к микрофонам без внешних микросхем?
Стереомикрофон MEMS STM32F4
Ответы (3)
Решением было бы выбрать тактовую частоту данных I2S в два раза быстрее, чем тактовая частота входа микрофона Mems, чтобы процессор мог ловить образцы на любом тактовом импульсе Mems.
Вы можете попробовать использовать I2S2 и I2S3, второй для генерации часов для микрофонов и первый для генерации часов для выборки значений pdm (с двойной частотой), используя один и тот же PLL, часы должны быть синхронизированы. При этом я думаю, что вы можете получить биты pdm, прочитав регистр recv I2S2, но я также думаю, что биты от 2 микрофонов будут чередоваться (немного от микрофона 1, другого от микрофона 2 и так далее).
Просто продолжение того же вопроса. Один из способов получить данные с обоих микрофонов — уменьшить тактовую частоту микрофона в два раза. Вы можете сделать это, направив сгенерированные I2S часы на таймер (который установлен в режим захвата вывода) на выводе ETR. Затем с помощью таймера вы можете разделить его, как хотите. В данном случае дважды. Выходные часы таймеров поступают на оба микрофона, а их данные подключаются к линии данных I2S (той же, которая генерирует часы). В конце концов, вы получаете I2S, работающий в два раза быстрее, чем микрофоны.
Вот пример с четырьмя микрофонами. (В вашем случае просто удалите SPI)
Для получения дополнительной информации прочитайте об этом.