Я работаю над аудиопроектом с обнаружением STM32F4, и я заметил одно: все стандарты I2S работают только с одним микрофоном (в зависимости от того, какой край использует отдельные биты). Для примера. с стандартами Philips, MSB или LSB, которые используют падающие грани в качестве триггеров бит, только улавливает заземленный микрофон L/R, и, если я использую стандарт PCM, который использует нарастающие края в качестве триггеров бит, он захватывает только микрофон High L/R. Я не могу найти способ поймать обе микросхемы MEMS за один период. Является ли STM32F4 неспособным использовать микрофоны сразу без внешних микросхем?STM32F4 stereo MEMS mic
ответ
Решение было бы, чтобы выбрать I2S часов данных в два раза быстрее, чем часы ввода микрофона MEMS, так что процессор может поймать образцы на любой Mems тактового импульса
Хорошо, но как синхронизировать быстрые и медленные часы? Как вы предлагаете генерировать тактовый сигнал? – An0nym0u5
Просто следуйте одному и тому же вопросу. Один из способов сделать часы микрофона в два раза меньше, чтобы направлять генерируемые часы I2S на таймер (который установлен в режим вывода данных) на выводе ETR. Тогда вы можете разделить его так, как хотите. В этом случае дважды. Часы вывода таймеров поступают на оба микрофона, и их данные подключаются к I2S (который генерирует часы). В конце вы получаете I2S, работающий в два раза быстрее, чем микрофоны. – MattJ
Вы можете попробовать использовать I2S2 и I2S3, второй для генерации часов для микрофонов, а первый для генерации часов для выборки значений pdm (с двойной скоростью), разделяющих один и тот же PLL, часы должны быть синхронизированы. Поступая таким образом, я думаю, что вы можете получить бит pdm, прочитав регистр recv I2S2, но я также думаю, что биты из двух микрофонов будут чередоваться (немного от микрофона 1, другого от микрофона 2 и т. Д.).
Просто ответьте на один и тот же вопрос. Один из способов получения данных с обоих микрофонов заключается в том, что часы микрофона вдвое меньше. Это можно сделать путем маршрутизации генерируемых часов I2S на таймер (который установлен в режим вывода данных) на выводе ETR. Затем, используя таймер, вы можете разделить его так, как хотите. В этом случае дважды. Часы вывода таймеров поступают на оба микрофона, и их данные подключаются к линии данных I2S (той же, которая генерирует часы). В конце вы получаете I2S, работающий в два раза быстрее, чем микрофоны.
Вот пример с четырьмя микрофонами. (В вашем случае просто удалите SPI)
Дополнительную информацию можно найти на этом.
У меня такая же проблема, на той же платформе, пожалуйста, вы можете поделиться своим решением с нами, (aswering свой вопрос), как вы делали это в конце концов? Большое спасибо! – An0nym0u5