Для реализации минимальной аудио платы я взял контроллер который имеет ЦАП, АЦП и может работать с СД картой не только по SPI но и желательно через SDIO. STM32F103RCT6 подходит. Заказал 5 штук на Али за 7$ с копейками, на случай если что-то пойдет не так. Дисплей и горсть электретных микрофонов лежит в запасах. Кварцевые резонаторы думаю взять в ЧипДип.
Разрабатывать в среде разработки STM32CubeIDE32 очень удобно. Можно сконфигурировать HAL в CubeIDE, а потом делать схемотехнику соединений.
Характеристики контроллера
STM32F103RCT6 3xADC 1xDAC, SDIO, USB. На нем есть еще I2S. В дальнейшем можно подключить аудио чип.
Для дебага и заливки используем выводы SWDIO SDCLK. Можно прошивать через UART или USB, но я не пробовал STM32F103 Bootloader (загрузчик). STM32 — входим в bootloader по кнопке.
STM32F103RCT6
Схема подключения контроллера. Дисплей подключается по I2C1. Перемычкой SJ3 можно выставить адрес по которому можно обращаться к дисплею 0x7A или 0x78.
128x64 OLED
Карточка подключается по SDIO. Можно также подключить по SPI, но скорость обмена будет медленнее. SDIO в моем случае работает по 4-ем линиям и коме того SPI интерфейс для карты памяти не «родной» Я подтянул кверху часть выводов, остальные подтянутся программно. Без программной подтяжки будет задействована одна линия.
SD CARD
Усилитель для микрофона и наушников это TS922 двойной операционный усилитель. Как я уже писал в статье он тянет до 80 мА, что вполне достаточно для наушников. Вторая часть микросхемы это усилитель микрофона. Конденсаторы в цепи обратной связи это фильтр высоких частот. Коэффициент усиления K = 1 + Rос/R или 1 + 5100 / 510 = 11 на примере усилителя для наушников. Как рассчитать другие элементы есть в той же статье. Я сделал общий делитель напряжения для задания смещения на входе операционника. тем самым сэкономив пару-тройку компонентов.
Amplifiers
Питание сделано через USB LM1117-3.3V.
Добавлено 6 кнопок и некоторые выводы выведены наружу.
P.S. Пока проектировал плату на stm32f103 наткнулся на серию STM32F411. По цене в 2-3 доллара полноценное ядро CortexM4!
Arm Cortex-M4 32b MCU+FPU, 125 DMIPS, 512KB Flash, 128KB RAM, USB OTG FS, 11 TIMs, 1 ADC, 13 comm. interfaces
На нем уже можно и с DSP поиграться. Реализовать IIR фильтр и ревербератор и много еще чего.
Но это уже будет другая история.
Autodesk Eagle:
> STM32AudioLCDMinimal
Замечания и предложения приветствуются.
gleb_l
Лучше не экономить на совмещении цепей смещения ОУ по крайней мере в каскадах противоположного назначения — микрофонном и выходном. Я понимаю, если был бы стереовыход и одна цепь на смещение для обоих выходных ОУ — тогда crosstalk был бы незаметен. А тут выход ЦАП будет неплохо раскачивать среднюю точку (т.к. его выходное сопротивление — 27кОм против 15кОм резисторы делителя в параллель). Коэффициент усиления микрофонного каскада судя по номиналам — больше 200, поэтому по НЧ мы должны получить очень заметную ОС.
Конечно, шунтирование делителя 1u0 и НЧ-фильтр в цепи ООС 330 * 3u3 ситуацию сгладит, но все равно — даже если в нижнем диапазоне мы получим на выходе в АЦП порядка -20..-30dB от выхода ЦАП — это будет адом. Я бы промоделировал аналоговую часть этого решения в каком-нибудь симуляторе, прежде чем класть на печать. Если уже поздно — хотя бы поставить электролит не меньше 100u в делитель
VT100
Возможно, схема в статье уже обновлена… и в ней — раздельные цепи смещения для усилителей.
Хотя объединить, в принципе, — можно. Сделать инвертирующие усилители с общей цепью смещения, в которую не поступают сигнальные токи. C11 встанет вместо C25. А нижный вывод R10, наверное, можно будет подключить напрямую к микрофону, выкинув C13, C15, C16, R12 и R13.
На IC3G2, пожалуй, — лучше изобразить ФНЧ второго порядка.
gleb_l
Да, автор уже обновил схему. Инвертирующие усилители сделать можно было бы, но их сложно сделать одновременно с большим коэффициентом усиления и с высоким входным сопротивлением. Хотя… для выходного усилителя выход ЦАП нагружен на 27 кОМ, коэффициент усиления 10 — значит резистор ОС 270кОм — в приниципе, вполне катит.
Микрофонный — к.у. больше 200, выходное электрета — пара кОм, нагружать нужно ЕМНИП минимум килоом на 10, значит в цепи ООС — больше 2МоМ, а это уже многовато — будет сильно срезать ВЧ.
VT100
В данном случае получится нагрузка микрофона на трансимпедансный усилитель. КМК, сопротивление в ОС может быть порядка десятка кОм.
gleb_l
Если бы электретный микрофон был бы источником тока — то да. Но по переменке по схеме включения микрофона — выходное сопротивление равно величине верхнего плеча резистора подтяжки, после конденсатора фильтра. То есть микрофон — источник напряжения с внутренним сопротивлением 2.2 кОм.
Значит, если мы сделаем входной резистор в инверсном включении ОУ подобного номинала, то ни за что получим ослабление сигнала в 2 раза еще на входе, который затем придется усиливать не в 200, а в 400 раз. Поэтому входное сопротивление усилителя нужно делать в несколько раз выше, чтобы не вводить зря сильного ослабления
VT100
На практике не исследовал. Но "ковбои" — не видят препятствий.
gleb_l
Посмотрел ref design ковбоев — у них внутреннее сопротивление микрофона используется в качестве одного из плечей делителя ООС. Если оно специфицировано, его отклонение нормировано не хуже, чем нам нужно, и его величина не зависит от звукового давления (иначе введем нелинейные искажения) — то конечно так можно делать.