Mysteo 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба Здравствуйте! Необходимо понять как работает цифровой микрофон MP45DT02, а точнее получить с него нормальные PCM данные. Из мануала к плате STM32F4Discovery выясняем что микрофон подрублен к I2S2 Из мануала AN5027 выясняем следующие вещи И настраиваем I2S следующим образом. Дальше нужно использовать будет библиотеку чтобы преобразовать PDM данные в PCM , сама работа библиотеки описана вот здесь UM2372 руки пока у меня до нее не дотянулись, но при первом просмотре мне не понятно следующее: на 11 странице данного мануала есть вот такая замечательная табличка и рисуночек 1. Что такое Decimation factor ? 2. откуда берется PDM clock frequency 3. если мы выбрали В I2S 16 кГц аудиоданные, то чему будет равно PDM clock frequency ? И почему берется только 16 бит из 32 битного фрейма, если подключен только 1 микрофон разве не должно быть выбрано 16 бит из 16 битного фрейма? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба 1. Отношение PDM clock frequency к PCM sample rate 2. Генерируется STM32 как BCLK 3. Зависит от выбранного Decimation factor. Где берется 16 бит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба 56 minutes ago, aaarrr said: Где берется 16 бит? На второй картинке выложенной мной, взятой из AN5027 из примера настройки I2S при моно подключении цифрового микрофона Тогда я совсем запутался. При настройке тактирования I2S Clock 153.6 МГц и выставленной опцией I2S Audio Frequency 16 кГц . Мне с частотой 16 кГц в буфер будет прилетать PDM сигнал размером 16 бит? Я до этого настраивал микрофон через DFSDM там как то по понятнее все было и Example нормальный был Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба 1 hour ago, Mysteo said: Тогда я совсем запутался. При настройке тактирования I2S Clock 153.6 МГц и выставленной опцией I2S Audio Frequency 16 кГц . Мне с частотой 16 кГц в буфер будет прилетать PDM сигнал размером 16 бит? PDM сигнал будет прилетать в Decimation factor раз чаще, 16кГц получатся после фильтрации. Вам нужно настроить битовый клок на одну из частот PDM из таблички (сначала проверить, что микрофон тоже её поддерживает), принимать данные без разрывов (т.е. на каждом такте задвигать бит) и скармливать их ST'шной библиотеке. Как-то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба Вбил настройки из этого скрина, Смотрю щупом I2S2_CLK реально 1.024 МГц. 16 hours ago, Mysteo said: Только мне не нравится PDM сигнал, он же должен быть либо 0 либо 1 , а тут какое то третья состояние есть между 0 и 1... или это нормальное явление ? Но по мне ерунда какая то... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба 31 minutes ago, Mysteo said: Только мне не нравится PDM сигнал, он же должен быть либо 0 либо 1 , а тут какое то третья состояние есть между 0 и 1... или это нормальное явление ? Но по мне ерунда какая то... LR - not fitted Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба 4afc На отладочной плате LR к земле притянут. И еще не подскажете как остановить работу DMA в дебагере при попадании в точку останова ? Если периферия тактируется от какого либо таймера, я знаю способ например: DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_TIM2_STOP ; А в данном случае не понятно что делать, а то при отладке при заполнении половины буфера и при попадании в точку остановки он еще успевает мне накидать кучу данных Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба Отпаял этот резистор ничего не изменилось.... с микрофоном что ли что-то ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 24 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба 16 minutes ago, Mysteo said: Отпаял этот резистор ничего не изменилось.... с микрофоном что ли что-то ? Микрофон выставляет данные только на пол периода по фронту или по срезу в зависимости от того куда LR подключен. Остальные пол периода выход в третьем состоянии, но уровень обычно не меняется... если пинцетом не трогать... Может у вас вход STM не вход? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба Скачал готовую программу в Hex картина не поменялась, микрофон работает нормально, звук через USB выводится в ПК Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба 2 hours ago, Mysteo said: Только мне не нравится PDM сигнал, он же должен быть либо 0 либо 1 , а тут какое то третья состояние есть между 0 и 1... или это нормальное явление ? Нормально, смотрите в DS на микрофон - там нарисовано. 0/1 и 3е состояние вперемешку. Собственно _4afc_ вам уже сказал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба Да я уже тоже понял что это нормально. Сейчас буду разбираться как DMA настроить нормально ну и саму либу PDM2PCM ковырять. С тактированием вопрос решенный. Я правильно понимаю , что если подам на вход фильтра при 64 децимации и тактировании 1024 кГц 64 бита , то на выходе получу 16битное PCM значение соответствующее частоте дискретизации 16кГц ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 14 ноября, 2019 Опубликовано 14 ноября, 2019 · Жалоба Блин как остановить передачу данных при попадании в брейкпоинт , а то не понятно правильно я настроил DMA и прерывания или нет. Видно, я что-то не так настроил DMA.... При PDM Clock Frequency 1.024 kHz у меня каждые 16кГц только 16 бит в DMA успевает накопиться. А должно вроде как 64 бита появляться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 18 ноября, 2019 Опубликовано 18 ноября, 2019 · Жалоба Получилось, только звук какой то ужасный. void MX_PDM2PCM_Init(void) { /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /** */ PDM1_filter_handler.bit_order = PDM_FILTER_BIT_ORDER_LSB; PDM1_filter_handler.endianness = PDM_FILTER_ENDIANNESS_BE; PDM1_filter_handler.high_pass_tap = 2104533974; PDM1_filter_handler.in_ptr_channels = 1; PDM1_filter_handler.out_ptr_channels = 1; PDM_Filter_Init(&PDM1_filter_handler); PDM1_filter_config.decimation_factor = PDM_FILTER_DEC_FACTOR_64; PDM1_filter_config.output_samples_number = 1; PDM1_filter_config.mic_gain = 0; PDM_Filter_setConfig(&PDM1_filter_handler, &PDM1_filter_config); /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ } Вот мои настройки PDM фильтра. А вот звук который получается, много шума и слишком большое усиление, хотя я более чем в метра от микрофона был. При прослушке сделайте пожалуйста заранее колонки по тише mic.wav Спустя десяток минут Урааа , оказывается gain нужно вообще убирать )))) поставил - 12 и намного лучше стало, но все равно сильно чувствительно, разговариваю в 1 метре от микрофона и голос направляю в другую сторону от микрофона mic2.wav Назрел новый вопрос : 1. Почему библиотека pdm2pcm юзает Q31 формат фильтра верхний частот , если выходные данные PCM имеют uint16 формат, можно же обойтись было Q15 форматом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 18 ноября, 2019 Опубликовано 18 ноября, 2019 · Жалоба Метр от микрофона... комната ~50 кв. м прослушивалась, словно рядом находился... Осторожнее, по нынешним временам легко незаконным изготовлением и оборотом техспецсредств оказаться занимающимся... эти цифровые микрофончики для "жучков" в т.ч. предназначаются (слуховые аппараты эт так - побочка). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться