Аппаратный Таймер в Качестве Микрофона

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Чего только не бывает на поприще разработки электроники. Кто бы мог подумать, что таймер может быть микрофоном. Однако это в какой-то степени так.

В разработке электроники в состав которой входит звуко излучатель порой нужно делать бинарный тест на наличие звука. В этом тексте я покажу один из самых простых способов проделать такой тест.

Постановка задачи

Требуется определить факт наличия звука в проводе микрофона. Не нужно определять частоту, не нужно определять спектр. Не нужно распознавать сигнал. Надо просто сказать есть звук или нет звука.

Каков план?

Подать звук на аппаратный таймер микроконтроллера и считать положительные перепады. Если счетчик увеличился, значит звук есть. Если не увеличился, значит звука нет.

Реализация

У меня на микроконтроллере at32f435zm к GPIO PB5 проложен провод от дифференциальной пары, которая поступает от аналогово микрофона. В микроконтроллере на пине PB5 я активировал канал входа, который тактирует аппаратный таймер №3 на втором канале.

Этот режим называется Input Capture. GPIO пин PB5 надо сконфигурировать на вход в режим альтернативной функции Timer 3 канал 2 (TMR3_CH2). Эта функция соответствует значению PIN_MUX равному 2.

Как поступает положительный перепад, так сразу надо счетчик увеличить на 1. Таким образом аппаратный таймер станет считать импульсы от микрофона. Небольшой комментарий по настройке карты регистров таймера 3. Таймер надо переключить в режим External clock mode A.

Вот ключевые настройки в карте регистров:

Регистр

битовое поле

значение

пояснение

TMRx_CTRL1

TMREN

1

Включить на таймер

TMRx_STCTRL

SMSEL

7

External clock mode A — Rising edge of the TRGIN input clocks the counter

TMRx_STCTRL

STIS

6

Filtered input 2 (C1IF2)

TMRx_STCTRL

ESP

0

rising edge

TMRx_CM1

c2c

1

Input, C2IN is mapped on C2IFP2

TMRx_PR

PR

65535

максимальный предел счета

TMRx_CCTRL

c2en

1

Channel 2 enable

Остальные поля можно оставить без изменения, так как при сбросе они выставятся в нужные значения сами по себе.

Вот по такому пути должен просочиться сигнал тактирования от микрофона до таймера.

путь импульса
путь импульса

Отладка

У меня в прошивке есть UART CLI. Поэтому я могу отлаживать функционал в отдельности, по частям. Вот в логе загрузке появился текст про то, что канал настроился.

Можно заметить, что GPIO в самом деле переключился на таймер №3 канал 2.

Конфигурацию таймера 3 целиком и полностью определяют его регистры. Вот валидный конфиг.

timra 3
timra 3

Звука ещё не было, поэтому счетчик ожидаемо в нуле.

input_capture_diag
input_capture_diag

А теперь включим мелодию. Вот так выглядит фрагмент сигнала на осциллографе.

аналоговый сигнал на микрофоне
аналоговый сигнал на микрофоне

После того как прозвучала мелодия, можно заметить, что значение аппаратного счетчика увеличилось на 286.

input_capture_diag
input_capture_diag

Получается, что датчик звука работает.

Достоинства

++ Это своего рода эрзац-технология для тех, кто по разным причинам не может пользоваться микросхемами аудио кодеков.

++ Простота и топорность. Нечему ломаться. Такой импровизированный датчик можно сделать даже на дискретной логике.

++ Никаких вычислений. Никакой нагрузки на микропроцессор. Всё происходит полностью аппаратно. Звук тактирует аппаратный таймер.

++ Это санкционно-стойкий способ проверки звука.

Недостатки

--Невозможно понять спектральную составляющую звука.

--Невозможно понять смысл прозвучавшей мелодии.

Итоги

Удалось сделать автоматическое определение звука при помощи обыкновенного аппаратного таймера.

Словарь

Акроним

Расшифровка

КМОП 

Комплиментарный Металл-Оксид-Полупроводник

CMOS

Complementary metal–oxide–semiconductor

Ссылки

№

Гиперссылка

1

Зачем программисту микроконтроллеров комплексные числа (или обзор MEMS микрофона MP23DB01HPTR)

2

Логические уровни или где заканчивается ноль и начинается единица.

3

Обзор AудиоКодека NAU8814YG

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы делали тест звука аппаратным таймером?
100% да1
0% нет0
Проголосовал 1 пользователь. Воздержавшихся нет.
Источник: https://habr.com/ru/articles/845330/


Интересные статьи

Интересные статьи

Статья, которая рассказывает о процессе выгрузки данных из базы данных Microinvest в систему 1С Битрикс. В ней подробно описываются шаги, необходимые для успешной выгрузки, начиная от подготовки и нас...
Всем доброго времени суток. Мы решили описать построение отказоустойчивой инфраструктуры для bitrix в рамках серии статей, и сегодня публикуем первую часть. Вариант, который мы будем описывать, - не и...
Данная статья - это не научный прорыв, а лишь помощник быстрее понять как работает стандартный функционал в BitrixДавайте представим, что в разделе каталога у нас 150 запросов к БД. Вроде бы немного п...
Недавно Сбер в статье Всё, что нам нужно — это генерация предложил интересный подход для отсеивания некачественных текстов (технического мусора и шаблонного спама). Но ра...
Один из самых острых вопросов при разработке на Битрикс - это миграции базы данных. Какие же способы облегчить эту задачу есть на данный момент?