Стереомикрофон MEMS STM32F4

Я работал над аудиопроектом с обнаружением STM32F4 и заметил одну вещь, все стандарты I2S работают только с одним микрофоном (в зависимости от того, на каком краю стандарта используются отдельные биты). Например со стандартами Philips, MSB или LSB, которые используют спадающие фронты в качестве битовых триггеров, улавливает только заземленный микрофон L / R, а если я использую стандарт PCM, который использует нарастающие фронты в качестве битовых триггеров, улавливает только микрофон High L / R. Я не могу найти способ поймать оба образца микрофона MEMS за один период. Разве STM32F4 не может одновременно подключаться к микрофонам без внешних микросхем?


person MattJ    schedule 05.10.2015    source источник
comment
У меня та же проблема на той же платформе, не могли бы вы поделиться с нами своим решением (отвечая на ваш собственный вопрос), как вы это сделали в конце концов? Большое спасибо!   -  person An0nym0u5    schedule 19.01.2016


Ответы (3)


Решением было бы выбрать тактовую частоту данных I2S в два раза быстрее, чем тактовая частота входа микрофона Mems, чтобы процессор мог ловить образцы на любом тактовом импульсе Mems.

person MattJ    schedule 17.11.2015
comment
Хорошо, но как синхронизировать быстрые и медленные часы? Как вы предлагаете генерировать тактовый сигнал? - person An0nym0u5; 19.01.2016
comment
Просто продолжение того же вопроса. Один из способов сделать тактовый сигнал микрофона в два раза меньше — это направить тактовый сигнал, сгенерированный I2S, на таймер (который установлен в режим захвата вывода) на выводе ETR. Дальше можете делить как хотите. В данном случае дважды. Выходные часы таймеров поступают на оба микрофона, а их данные подключаются к I2S (который генерирует часы). В конце концов, вы получаете I2S, работающий в два раза быстрее, чем микрофоны. - person MattJ; 22.04.2016

Вы можете попробовать использовать I2S2 и I2S3, второй для генерации часов для микрофонов и первый для генерации часов для выборки значений pdm (с двойной частотой), используя один и тот же PLL, часы должны быть синхронизированы. При этом я думаю, что вы можете получить биты pdm, прочитав регистр recv I2S2, но я также думаю, что биты от 2 микрофонов будут чередоваться (немного от микрофона 1, другого от микрофона 2 и так далее).

person boorat    schedule 28.01.2016

Просто продолжение того же вопроса. Один из способов получить данные с обоих микрофонов — уменьшить тактовую частоту микрофона в два раза. Вы можете сделать это, направив сгенерированные I2S часы на таймер (который установлен в режим захвата вывода) на выводе ETR. Затем с помощью таймера вы можете разделить его, как хотите. В данном случае дважды. Выходные часы таймеров поступают на оба микрофона, а их данные подключаются к линии данных I2S (той же, которая генерирует часы). В конце концов, вы получаете I2S, работающий в два раза быстрее, чем микрофоны.

Вот пример с четырьмя микрофонами. (В вашем случае просто удалите SPI)

введите здесь описание изображения

Для получения дополнительной информации прочитайте об этом.

http://www2.st.com/content/ccc/resource/technical/document/user_manual/f5/06/94/40/a6/01/49/ae/DM00187405.pdf/files/DM00187405.pdf/jcr:content/translations/en.DM00187405.pdf

person MattJ    schedule 22.04.2016