Статья: Звуковые возможности микроконтроллера STM32F
Возможность работать в режимах ведущего и ведомого;
Поддержка частот семплирования от 8 до 96 кГц;
Два независимых приемопередатчика.
Необходимо также отметить, что спецификация протокола I2S не оговаривает какого-либо конкретного физического уровня для шины (все, что есть в стандарте – величина напряжений, считающихся высоким и низким уровнем сигнала). Поэтому производители при использовании внешних связей между устройствами прибегают к различным видам физической реализации, например, применяют разъемы и кабели HDMI, маркируя их соответствующим образом (на рис. 3 приведен пример именно такого устройства [4]).
| |
Рис. 3. |
Пример физической реализации шины I2S в виде разъема HDMI |
Как использовать встроенный ЦАП
Ранее мы подчеркивали наличие в микросхемах STM32F105xx/107xx встроенного двухканального 12-битного ЦАП, который может быть вполне пригоден к использованию во многих звуковых приложениях, где нет необходимости в высокой точности преобразования.
Заявленные параметры ЦАП:
Два полностью независимых преобразователя;
8/12-битный равномерный выход;
Выдача до одного миллиона семплов в секунду;
Возможность синхронизации для вывода стереосигнала;
Отключаемый выходной буфер для увеличения нагрузочной способности;
Отдельный канал прямого доступа к памяти;
Встроенный генератор псевдослучайных чисел;
Встроенный генератор треугольных импульсов;
Погрешность смещения- 10 мВ или до 12 МЗР;
Дифференциальная нелинейность 2 МЗР, интегральная- 4 МЗР.
Несмотря на относительно невысокое разрешение (до 12 бит), сфера применения таких ЦАП может быть достаточно широка, в том числе и за счет встроенных генераторов треугольных импульсов и псевдослучайных чисел. Например, с помощью последнего несложно реализовать генератор белого шума с равномерным спектром и перестраиваемой постоянной составляющей. Это бывает необходимо в синтезаторах электронной музыки для получения необычных звуковых эффектов или даже для симуляции некоторых «живых» инструментов с высокой шумовой компонентой (перкуссия, цимбалы и т.п.).
Также генераторы шумов могут быть использованы для тестирования частотных характеристик аудиоцепей (фильтров, усилителей). При оцифровке музыки и других низкочастотных сигналов возможно применение шумовых сигналов для увеличения разрядности АЦП сверх заявленной (т.н. шумовой оверсемплинг).
Если говорить о прямом применении АЦП МК STM32F для воспроизведения звука, то оно оправдано во многих сферах, где качество звучания играет второстепенную роль. Например, в телефонной или радиосвязи вполне достаточно и меньшего разрешения, при этом микроконтроллер мог бы взять на себя иные интерфейсные функции - оцифровку звука встроенным АЦП, кодирование/декодирование подходящим вокодером, отработку кнопок, вывод на экран. Аналогичным образом множество иных приложений могут быть реализованы практически на единственном чипе: диктофоны, автоответчики, системы безопасности с интеркомами, говорящие игрушки, беспроводные гарнитуры и т.д.
Немаловажной особенностью встроенного ЦАП является наличие отключаемого буфера, который призван уменьшить выходное сопротивление преобразователя. Это позволяет значительно увеличить нагрузочную способность прибора, чего часто бывает достаточно для подключения напрямую внешней нагрузки без использования дополнительного операционного преобразователя. Для сравнения, допустимая минимальная резистивная нагрузка с включенным буфером равна 5 кОм, без буфера (для получения 1% точности) она составит не менее 1.5 МОм. При подключении нагрузки меньше допустимой напряжение на выходе ЦАП будет отличаться от заданного программно (нагрузка будет «просаживать» выход по напряжению), что приведет к уменьшению точности преобразования.
Кодеки, кодеки и еще раз кодеки
При работе с микроконтроллерами немаловажным при выборе аппаратной платформы является наличие у производителя соответствующих программных инструментов, облегчающих разработку: драйверов контроллеров, стеков для различных протоколов и т.д. В случае работы с аудио необходимой частью программного обеспечения являются кодеки, позволяющие читать и сохранять файлы из/в популярные форматы. Основная задача кодека при записи файла – это сжатие (с потерями или без) исходного аудиопотока для более экономного его хранения на внешних носителях и/или передачи по каналам связи. При декодировании возникает обратная задача – преобразовать сжатые данные в аудиопоток, пригодный для прямого перевода в аналоговую форму.
Разные кодеки имеют разную эффективность и качество сжатия, также они отличаются количеством вычислительных операций для проведения кодирования/декодирования, некоторые кодеки являются проприетарными, другие распространяются бесплатно. Поэтому следует ответственно подойти к вопросу выбора того или иного кодека для разрабатываемого приложения. Например, при реализации аудиоплеера важна поддержка как можно большего числа форматов воспроизведения звука. При создании аппаратуры для радиосвязи важно не разнообразие форматов, а эффективный двунаправленный кодер речи (вокодер), минимально загружающий CPU и канал приемопередачи.
Общей особенностью практически всех аудиоприменений является критичность к временным задержкам, поэтому выбор кодека необходимо осуществлять с учетом необходимой производительности CPU, которая должна быть достаточной для произведения всех необходимых вычислений кодирования/декодирования «на лету». Использование каналов прямого доступа к памяти также значительно увеличивает общую производительность системы, поскольку эти каналы устраняют необходимость участия процессора при передаче уже обработанных данных от одного периферийного устройства к другому.
Среди кодеков для применения в семействе МК STM32F можно отметить: