USB звуковая карта своими руками

Идея создания USB звуковой карты на основе PIC родилась в дискуссиях людей, уже собиравших подобные устройства, на форуме Microchip USB. Все микросхемы карты производства фирмы Microchip. Программное обеспечение использует модифицированную версию Microchip USB framework, которая управляется прерываниями вместо традиционного механизма опроса. Устройство представляет собой составное USB устройство. Первое устройство реализовывало интерфейс USB Audio 1.0, последующие устройства используют специальный интерфейс на основе интерфейса HID. Специальный интерфейс используется с целью программирования серийного номера устройства, обновления прошивки (firmware) и в будущем, для любой другой конфигурации не подде6рживаемой непосредственно протокол USB Audio 1.0. В предыдущей версии использовался интерфейс WinUSB. Потестировав карту некоторое время, я решил, что будет лучше, если для карты не будут требоваться драйверы, особенно с учетом того, что интерфейс HID/WinUSB хоть и редко, но используется.

Как измерить внутреннее сопротивление литиевого аккумулятора

Звуковая карта работает с частотами дискретизации 48 кГц, 32 кГц и 24 кГц, по выбору операционной системы, с вертикальным разрешением 12 бит. Частота дискретизации CD 44.1 кГц не реализована в связи со сложностью и необходимостью дополнительных вычислений. Все реализованные частоты дискретизации кратны кадру USB 1 мс, что означает, что каждый кадр несет в себе тоже самое количество данных. Частота дискретизации в 44.1 кГц требует поддержки картой кадров с другим количеством данных, что в свою очередь требует более сложной техники буферизации и синхронизации и большей вычислительной мощности. Microsoft Windows автоматически преобразует CD аудио 44.1 кГц в 48 кГц.

USB аудио потоковое устройство v1.2

Аппаратная часть

Схема USB аудио потокового устройства v1.2

Аппаратная часть звуковой карты основана на USB процессоре Microchip PIC18F2550. Процессор тактируется частотой 8 МГц, которая является максимальной для этого процессора, так же она кратна поддерживаемым частотам дискретизации. Микроконтроллер подключен к двум 12 битным ЦАП Microchip MCP4822 через SPI интерфейс. Регулировка громкости реализована на микросхеме Microchip MCP41010, управляемой по протоколу SPI через отдельный (программный) SPI порт. Причина использования отдельного SPI порта в том, что управление громкостью реализовано в микроконтроллере с другим уровнем приоритета, чем вывод звуковых данных. Микросхема операционного усилителя Microchip MCP6022 используется как выходной усилитель.

К операционному усилителю MCP6022 подключена емкость, более чем достаточная для подключения дешевых наушников, не создавая искажений. Сопротивление моих наушников приблизительно 25 Ом. Мощности операционных усилителей не достаточно, чтобы работать с динамиками сопротивлением 8 или 4 Ом. Микросхемы MCP41010 и MCP6022 способны давать выходное напряжение от отрицательного до положительного напряжения питания, хотя некоторые нелинейные эффекты слышны, если звук слишком громкий или когда сигнал достигает уровня минимума или максимума. Так как USB обеспечивает однополярное питание 5 В, звуковая карта может использовать только положительное напряжение питания в отличие от традиционного биполярного, для систем поддерживающих 16 битный стандарт кодирования PSM. В результате сигнал должен быть программно поднят на 2.5 В.

Делаем USB звуковую карту на PCM2900

Программное обеспечение

Программное обеспечение звуковой карты USB состоит из нескольких компонентов. Это прошивка аудио карты (firmware), библиотека С++, которая предоставляет интерфейсы HID и WinUSB и утилита командной строки для прошивки. Я прилагаю исходный код для изучения. Мне не интересно что вы будете с этим делать, но я не несу ответственности за любые повреждения, которые могут произойти при использовании. ПОМНИТЕ: Неправильное использование устройства или программы может привести к серьезному ущербу для здоровья или даже смерти. 🙂

Я использовал Microsoft Visual Studio 2005 Professional, но я слышал, что этот проект можно откомпилировать в Visual Studio Express. Чтобы откомпилировать этот проект необходимо загрузить последнюю версию WDK, чтобы получить файлы заголовков и библиотек для HID и WinUSB. Установки каталогов по умолчанию в Visual Studio должны быть модифицированы так, чтобы указывали на каталоги с этими ресурсами в WDK. Если вы используете Visual Studio Express, вам необходимо повторно создать все файлы проектов и изменить «соглашение о вызовах» (calling convention) установленное по умолчанию на _stdcall.

Каталог

Функция

Общий каталог с заголовками

Загрузчик (Компилируется первым)

Прошивка звуковой карты

Программатор – утилита командной строки (Компилируется в последнюю очередь)

Модули исходного кода

При компиляции прошивки звуковой карты есть одна хитрость. Хитрость состоит в том, что изначально имеются два отдельных проекта, которые потом необходимо соединить в один. Откомпилируйте каталог boot первым, полученный код отвечает за обновление прошивки. Затем откомпилируйте собственно прошивку. Перед программированием. Зайдите в меню Configure/Settings/Program Loading и отключите опцию «очистить память программ на загрузку новой программы». После того, как прошивка звуковой карты будет откомпилирована, зайдите в меню file/import и импортируйте hex файл для загрузчика (из каталога boot). Два проекта сольются вместе без вырезаний и вставок. Теперь можно прошивать PIC. Помните что загрузчик необходим только для прошивки звуковой карты без ICD/Pickit. При отладке карты желательно не использовать загрузчик. Для этого не требуется вносить изменения в исходный код или сценарий компоновщика. Просто не включайте загрузчик в образ для прошивки.

Прошивка звуковой карты

Прошивка звуковой карты базируется на модифицированной версии Microchip USB framework. Framework был сжат в единственный файл исходного кода с обратными вызовами между framework-ом и основным кодом. Framework (в моем случае это чуть более чем библиотека) был модифицирован для использования прерываний вместо традиционного метода опроса. Вместо того, чтобы вызывать сервис USB драйвера в цикле, эти функции вызывается когда происходит прерывание от USB. Библиотека отвечает за обработку управляющих запросов на конечной точке 0. Framework обрабатывает стандартные USB запросы, а основной код отвечает за обработку специфических нестандартных запросов, запросов ввода/вывода и всех других конечных точек.

Это устройство является составным устройством, состоящим из устройства USB Audio 1.0 и пользовательского HID интерфейса. С помощью USB Audio 1.0 все данные звукового сигнала передаются через отдельную от контрольной, конечную точку. Контрольные запросы, такие как управление громкостью идут через конечную точку 0 (контрольная конечная точка). HID использует свою собственную конечную точку. Так как каждая функция карты имеет свою собственную конечную точку, каждая функция может быть реализована со своим уровнем приоритета без особых проблем. Контроллер PIC18F2550 имеет два приоритета прерываний плюс основной код, в сумме получается три. Так как функция воспроизведения звука наиболее критическая, ей назначен наивысший приоритет. Затем идут запросы к контрольной конечной точке, которые включают стандартные запросы плюс запросы Audio 1.0. Так как эти функции имеют относительно небольшое время выполнения им назначен низкий приоритет. HID функции помещены в основной код потому как действия, такие как запрос версии прошивки, установка серийного номера или запись новой прошивки не критичны ко времени.

Конечная точка

Приоритет

Функция

Поток данных Аудио к ЦАП

Прерывание (Низкий приоритет)

Контрольная конечная точка и запросы Audio 1.0

Main(В фоновом режиме)

Не стандартные функции

Контрольные точки, приоритеты и функции прошивки

Обработчик прерываний низкого приоритета выполняет две функции. Первая – проверка конечной точки ISO через SIE () для данных. Если данные доступны, буфер проходит к коду с высоким приоритетом прерываний, и следующий буфер, который делает таким образом циклическую очередь, возвращается к SIE. Буферы находятся в USB RAM контроллера, по этому данные в них не копируются между ними. В протоколе Audio 1.0 хост всегда посылает строго определенное количество отсчетов заполняющее кадр размером 196, 128 или 96 байт, в зависимости от используемой частоты дискретизации.

Вторая функция обработчика прерываний с низким приоритетом – обработка SOF (старт кадра). Приняв SOF, PIC заменяет текущий буфер воспроизведения на следующий доступный буфер и запускает таймер 2, задающий частоту дискретизации. Таймер 2 всегда перезагружается при старте кадра (SOF), чтобы синхронизировать частоту дискретизации. Если событие SOF произойдет прежде, чем текущий буфер будет проигран, воспроизведение переключится на следующий буфер. Если SOF случится после того, как буфер будет проигран, последняя выборка будет растянута (продублирована многократно). Так как дрейф тактовой частоты очень мал, большинство выборок воспроизводятся вовремя. Время последней выборки немного различается. Это не заметно при воспроизведении аудио и немного заметно при воспроизведении синусоидальных сигналов.

Прерывание с высоким приоритетом выключает таймер 2 и имеет функцию форматирования данных в формат, требуемый для ЦАП и загружает эти данные в ЦАП через SPI порт PIC контроллера. Выборки преобразуются из 16 битных целых со знаком в 12 битные без знака. После того как буфер закончится, таймер 2 остановится, и тактовая частота карты будет опережать хост по этому последняя выборка будет растянута.

Запросы протокола AUDIO 1.0

Все запросы Audio 1.0 обрабатываются через USB framework. Прерывание с низким приоритетом вызывает службу USB которая обслуживает управляющие запросы. Если запрос представляет собой стандартный USB запрос, он обрабатывается непосредственно самим framework-ом. Если нет, framework делает обратный вызов основного кода, который проверяет запрос. Если запрос распознан, основной код обрабатывает запрос. Если запрос является запросом чтения, основной код устанавливает адрес переменной, чтобы послать ее хосту. Если это запрос на запись, переменная записывается, но прошивка устанавливает завершающую подпрограмму, которая будет выполнена в конце запроса.

Данная звуковая карта обрабатывает только два типа запросов, это запросы управления громкостью и установки частоты дискретизации. Текущее значение обоих параметров содержится в глобальной переменной. Если новое значение громкости будет назначено, новое значение будет записано в аттенюаторы. Если назначена новая частота дискретизации, новое значение будет записано в PR2 для таймера 2.

HID запросы и программное обеспечение на компьютере

Основной код опрашивает конечную точку 1 на предмет пользовательских запросов в цикле. Если запрос представляет собой нечто иное чем установка серийного номера или перепрошивка, запрос обрабатывается основным кодом. В ином случае процессор переходит в специальный режим программирования. При входе в этот режим все прерывания блокируются и USB библиотека используется в традиционном режиме опроса, блоки памяти программ перемещаются с компьютера. Прошивка микроконтроллера это код многоразового использования, который используется для множества проектов.

ПО на стороне компьютера состоит из библиотеки на C++, которая покрывает HID и утилиты командной строки для конфигурирования карты. Эти утилиты используются для множества проектов и будут обсуждаться в отдельных статьях.

Тестирование 123

Данная USB Аудио карта использует аналоговые компоненты только для усиления сигналов, по этому параметры частоты не главные. Основные параметры это шум и точность сигнала, определяемые нелинейными свойствами компонентов, флуктуациями и тем, что частота дискретизации может дрейфовать в зависимости от частоты кадров USB.

Чтобы измерить точность я использовал программу Audicity для того, чтобы проиграть двадцати секундные синусоидальные сигналы с разными частотами и записал выходной сигнал на ноутбук Dell со встроенной 24 битной звуковой картой Sigmatel, поддерживающей частоту дискретизации до 96 кГц. Полагая что 24 битная звуковая карта лучше чем наше USB устройство. Выходной сигнал я записал с помощью Audicity и распечатал его спектр. Идея заключалась в том, что совершенное устройство даст максимум в спектре на частоте сигнала и ничего в остальной части спектра. Эксперимент проводился с этой звуковой картой и коммерческой 16 битной USB звуковой картой Turtle Beach Audio Advantage. Во всех случаях использовалась частота выборок 48 кГц. На нижеследующих графиках наша USB карта слева и карта от Turtle Beach справа.

Как видно из графиков, точность обоих устройств падает с ростом частоты. Вплоть до 12 кГц оба устройства имеют приблизительно одинаковый уровень шума. Однако после 12 кГц производительность нашей карты быстро падает. Оба устройства являются изосинхронно-адаптивными, но очевидно, что карта от Turtle Beach имеет более совершенные алгоритмы контроля дрейфа. На 20 кГц даже карта от Turtle Beach имеет уровень шума -40 Дб, что уже не хорошо. Создается впечатление, что разработка высококачественного USB аудио устройства задача очень сложная даже для коммерческих разработчиков.

Частота сигнала

Наша USB карта

Карта от Turtle Beach

USB звуковая карта на основе Microchip PIC

Идея создания USB звуковой карты на основе PIC родилась в дискуссиях людей, уже собиравших подобные устройства, на форуме Microchip USB. Все микросхемы карты производства фирмы Microchip. Программное обеспечение использует модифицированную версию Microchip USB framework, которая управляется прерываниями вместо традиционного механизма опроса. Устройство представляет собой составное USB устройство. Первое устройство реализовывало интерфейс USB Audio 1.0, последующие устройства используют специальный интерфейс на основе интерфейса HID. Специальный интерфейс используется с целью программирования серийного номера устройства, обновления прошивки (firmware) и в будущем, для любой другой конфигурации не подде6рживаемой непосредственно протокол USB Audio 1.0. В предыдущей версии использовался интерфейс WinUSB. Потестировав карту некоторое время, я решил, что будет лучше, если для карты не будут требоваться драйверы, особенно с учетом того, что интерфейс HID/WinUSB хоть и редко, но используется.

Как измерить внутреннее сопротивление литиевого аккумулятора

Звуковая карта работает с частотами дискретизации 48 кГц, 32 кГц и 24 кГц, по выбору операционной системы, с вертикальным разрешением 12 бит. Частота дискретизации CD 44.1 кГц не реализована в связи со сложностью и необходимостью дополнительных вычислений. Все реализованные частоты дискретизации кратны кадру USB 1 мс, что означает, что каждый кадр несет в себе тоже самое количество данных. Частота дискретизации в 44.1 кГц требует поддержки картой кадров с другим количеством данных, что в свою очередь требует более сложной техники буферизации и синхронизации и большей вычислительной мощности. Microsoft Windows автоматически преобразует CD аудио 44.1 кГц в 48 кГц.

USB аудио потоковое устройство v1.2

Аппаратная часть

Схема USB аудио потокового устройства v1.2

Аппаратная часть звуковой карты основана на USB процессоре Microchip PIC18F2550. Процессор тактируется частотой 8 МГц, которая является максимальной для этого процессора, так же она кратна поддерживаемым частотам дискретизации. Микроконтроллер подключен к двум 12 битным ЦАП Microchip MCP4822 через SPI интерфейс. Регулировка громкости реализована на микросхеме Microchip MCP41010, управляемой по протоколу SPI через отдельный (программный) SPI порт. Причина использования отдельного SPI порта в том, что управление громкостью реализовано в микроконтроллере с другим уровнем приоритета, чем вывод звуковых данных. Микросхема операционного усилителя Microchip MCP6022 используется как выходной усилитель.

К операционному усилителю MCP6022 подключена емкость, более чем достаточная для подключения дешевых наушников, не создавая искажений. Сопротивление моих наушников приблизительно 25 Ом. Мощности операционных усилителей не достаточно, чтобы работать с динамиками сопротивлением 8 или 4 Ом. Микросхемы MCP41010 и MCP6022 способны давать выходное напряжение от отрицательного до положительного напряжения питания, хотя некоторые нелинейные эффекты слышны, если звук слишком громкий или когда сигнал достигает уровня минимума или максимума. Так как USB обеспечивает однополярное питание 5 В, звуковая карта может использовать только положительное напряжение питания в отличие от традиционного биполярного, для систем поддерживающих 16 битный стандарт кодирования PSM. В результате сигнал должен быть программно поднят на 2.5 В.

Программное обеспечение

Программное обеспечение звуковой карты USB состоит из нескольких компонентов. Это прошивка аудио карты (firmware), библиотека С++, которая предоставляет интерфейсы HID и WinUSB и утилита командной строки для прошивки. Я прилагаю исходный код для изучения. Мне не интересно что вы будете с этим делать, но я не несу ответственности за любые повреждения, которые могут произойти при использовании. ПОМНИТЕ: Неправильное использование устройства или программы может привести к серьезному ущербу для здоровья или даже смерти. 🙂

Я использовал Microsoft Visual Studio 2005 Professional, но я слышал, что этот проект можно откомпилировать в Visual Studio Express. Чтобы откомпилировать этот проект необходимо загрузить последнюю версию WDK, чтобы получить файлы заголовков и библиотек для HID и WinUSB. Установки каталогов по умолчанию в Visual Studio должны быть модифицированы так, чтобы указывали на каталоги с этими ресурсами в WDK. Если вы используете Visual Studio Express, вам необходимо повторно создать все файлы проектов и изменить «соглашение о вызовах» (calling convention) установленное по умолчанию на _stdcall.

Каталог

Функция

Общий каталог с заголовками

Загрузчик (Компилируется первым)

Прошивка звуковой карты

Программатор – утилита командной строки (Компилируется в последнюю очередь)

Модули исходного кода

При компиляции прошивки звуковой карты есть одна хитрость. Хитрость состоит в том, что изначально имеются два отдельных проекта, которые потом необходимо соединить в один. Откомпилируйте каталог boot первым, полученный код отвечает за обновление прошивки. Затем откомпилируйте собственно прошивку. Перед программированием. Зайдите в меню Configure/Settings/Program Loading и отключите опцию «очистить память программ на загрузку новой программы». После того, как прошивка звуковой карты будет откомпилирована, зайдите в меню file/import и импортируйте hex файл для загрузчика (из каталога boot). Два проекта сольются вместе без вырезаний и вставок. Теперь можно прошивать PIC. Помните что загрузчик необходим только для прошивки звуковой карты без ICD/Pickit. При отладке карты желательно не использовать загрузчик. Для этого не требуется вносить изменения в исходный код или сценарий компоновщика. Просто не включайте загрузчик в образ для прошивки.

Прошивка звуковой карты

Прошивка звуковой карты базируется на модифицированной версии Microchip USB framework. Framework был сжат в единственный файл исходного кода с обратными вызовами между framework-ом и основным кодом. Framework (в моем случае это чуть более чем библиотека) был модифицирован для использования прерываний вместо традиционного метода опроса. Вместо того, чтобы вызывать сервис USB драйвера в цикле, эти функции вызывается когда происходит прерывание от USB. Библиотека отвечает за обработку управляющих запросов на конечной точке 0. Framework обрабатывает стандартные USB запросы, а основной код отвечает за обработку специфических нестандартных запросов, запросов ввода/вывода и всех других конечных точек.

Это устройство является составным устройством, состоящим из устройства USB Audio 1.0 и пользовательского HID интерфейса. С помощью USB Audio 1.0 все данные звукового сигнала передаются через отдельную от контрольной, конечную точку. Контрольные запросы, такие как управление громкостью идут через конечную точку 0 (контрольная конечная точка). HID использует свою собственную конечную точку. Так как каждая функция карты имеет свою собственную конечную точку, каждая функция может быть реализована со своим уровнем приоритета без особых проблем. Контроллер PIC18F2550 имеет два приоритета прерываний плюс основной код, в сумме получается три. Так как функция воспроизведения звука наиболее критическая, ей назначен наивысший приоритет. Затем идут запросы к контрольной конечной точке, которые включают стандартные запросы плюс запросы Audio 1.0. Так как эти функции имеют относительно небольшое время выполнения им назначен низкий приоритет. HID функции помещены в основной код потому как действия, такие как запрос версии прошивки, установка серийного номера или запись новой прошивки не критичны ко времени.

Конечная точка

Приоритет

Функция

Поток данных Аудио к ЦАП

Прерывание (Низкий приоритет)

Контрольная конечная точка и запросы Audio 1.0

Main(В фоновом режиме)

Не стандартные функции

Контрольные точки, приоритеты и функции прошивки

Обработчик прерываний низкого приоритета выполняет две функции. Первая – проверка конечной точки ISO через SIE () для данных. Если данные доступны, буфер проходит к коду с высоким приоритетом прерываний, и следующий буфер, который делает таким образом циклическую очередь, возвращается к SIE. Буферы находятся в USB RAM контроллера, по этому данные в них не копируются между ними. В протоколе Audio 1.0 хост всегда посылает строго определенное количество отсчетов заполняющее кадр размером 196, 128 или 96 байт, в зависимости от используемой частоты дискретизации.

Вторая функция обработчика прерываний с низким приоритетом – обработка SOF (старт кадра). Приняв SOF, PIC заменяет текущий буфер воспроизведения на следующий доступный буфер и запускает таймер 2, задающий частоту дискретизации. Таймер 2 всегда перезагружается при старте кадра (SOF), чтобы синхронизировать частоту дискретизации. Если событие SOF произойдет прежде, чем текущий буфер будет проигран, воспроизведение переключится на следующий буфер. Если SOF случится после того, как буфер будет проигран, последняя выборка будет растянута (продублирована многократно). Так как дрейф тактовой частоты очень мал, большинство выборок воспроизводятся вовремя. Время последней выборки немного различается. Это не заметно при воспроизведении аудио и немного заметно при воспроизведении синусоидальных сигналов.

Прерывание с высоким приоритетом выключает таймер 2 и имеет функцию форматирования данных в формат, требуемый для ЦАП и загружает эти данные в ЦАП через SPI порт PIC контроллера. Выборки преобразуются из 16 битных целых со знаком в 12 битные без знака. После того как буфер закончится, таймер 2 остановится, и тактовая частота карты будет опережать хост по этому последняя выборка будет растянута.

Запросы протокола AUDIO 1.0

Все запросы Audio 1.0 обрабатываются через USB framework. Прерывание с низким приоритетом вызывает службу USB которая обслуживает управляющие запросы. Если запрос представляет собой стандартный USB запрос, он обрабатывается непосредственно самим framework-ом. Если нет, framework делает обратный вызов основного кода, который проверяет запрос. Если запрос распознан, основной код обрабатывает запрос. Если запрос является запросом чтения, основной код устанавливает адрес переменной, чтобы послать ее хосту. Если это запрос на запись, переменная записывается, но прошивка устанавливает завершающую подпрограмму, которая будет выполнена в конце запроса.

Данная звуковая карта обрабатывает только два типа запросов, это запросы управления громкостью и установки частоты дискретизации. Текущее значение обоих параметров содержится в глобальной переменной. Если новое значение громкости будет назначено, новое значение будет записано в аттенюаторы. Если назначена новая частота дискретизации, новое значение будет записано в PR2 для таймера 2.

HID запросы и программное обеспечение на компьютере

Основной код опрашивает конечную точку 1 на предмет пользовательских запросов в цикле. Если запрос представляет собой нечто иное чем установка серийного номера или перепрошивка, запрос обрабатывается основным кодом. В ином случае процессор переходит в специальный режим программирования. При входе в этот режим все прерывания блокируются и USB библиотека используется в традиционном режиме опроса, блоки памяти программ перемещаются с компьютера. Прошивка микроконтроллера это код многоразового использования, который используется для множества проектов.

ПО на стороне компьютера состоит из библиотеки на C++, которая покрывает HID и утилиты командной строки для конфигурирования карты. Эти утилиты используются для множества проектов и будут обсуждаться в отдельных статьях.

Тестирование 123

Данная USB Аудио карта использует аналоговые компоненты только для усиления сигналов, по этому параметры частоты не главные. Основные параметры это шум и точность сигнала, определяемые нелинейными свойствами компонентов, флуктуациями и тем, что частота дискретизации может дрейфовать в зависимости от частоты кадров USB.

Чтобы измерить точность я использовал программу Audicity для того, чтобы проиграть двадцати секундные синусоидальные сигналы с разными частотами и записал выходной сигнал на ноутбук Dell со встроенной 24 битной звуковой картой Sigmatel, поддерживающей частоту дискретизации до 96 кГц. Полагая что 24 битная звуковая карта лучше чем наше USB устройство. Выходной сигнал я записал с помощью Audicity и распечатал его спектр. Идея заключалась в том, что совершенное устройство даст максимум в спектре на частоте сигнала и ничего в остальной части спектра. Эксперимент проводился с этой звуковой картой и коммерческой 16 битной USB звуковой картой Turtle Beach Audio Advantage. Во всех случаях использовалась частота выборок 48 кГц. На нижеследующих графиках наша USB карта слева и карта от Turtle Beach справа.

Как видно из графиков, точность обоих устройств падает с ростом частоты. Вплоть до 12 кГц оба устройства имеют приблизительно одинаковый уровень шума. Однако после 12 кГц производительность нашей карты быстро падает. Оба устройства являются изосинхронно-адаптивными, но очевидно, что карта от Turtle Beach имеет более совершенные алгоритмы контроля дрейфа. На 20 кГц даже карта от Turtle Beach имеет уровень шума -40 Дб, что уже не хорошо. Создается впечатление, что разработка высококачественного USB аудио устройства задача очень сложная даже для коммерческих разработчиков.

Частота сигнала

Наша USB карта

Карта от Turtle Beach

Usb звуковая карта своими руками

Внешняя звуковая карта USB своими руками

Как оказалось, сделать внешнюю USB звуковую карту несложно и недорого. В этой статье расскажу как ее делал я.

Пару лет назад в интернете на одном из форумов мне на глаза попалась тема про аудио ЦАПы. Я очень сильно загорелся идеей спаять аудиокарту(!) и с большим интересом начал читать описания различных конструкций. От их повторения меня отталкивали сложные (я не представлял, откуда буду вытаскивать «квадратную шину» I2C на компьютере или где взять S/PDIF) схемы и дорогие (это было самым веским аргументом) компоненты. Материала по данной тематике на русском языке и сейчас очень мало…

Через пару месяцев я нашел простую конструкцию на чипе PCM2702 и, самое главное, с подключением к компьютеру по USB. Я не испугался SSOP корпуса микросхемы, но испугался цены — более 500 рублей за штуку. Также я боялся испортить такую дорогую микросхему своей неопытностью (перегрев, статика… мало ли?). Стал искать другие решения. И наткнулся на конструкцию на PCM2705. Это тоже USB-кодек, но с более низкими характеристиками, по сравнению с PCM2702-й.

Микросхему нашел в толкучке на одном из форумов. Заказал себе и другу по одной. Не помню точно по какой цене, но не более 150р за штуку.

Схему повторил почти один-в-один с первоисточником. А у него там почти чистый даташит.

Сделал свой вариант печатной платы. Лазерно-утюжную технологию я тогда уже освоил.

Запаял (думал не смогу запаять пятимиллиметровым жалом, но спасибо DI-HALT’у за идею с микроволной).

Дрожащими руками подключил к компьютеру… ОС обнаружила новое устройство. Установила драйвера. Подключил наушники — поёт! Да и притом ничуть не хуже, чем встроенная в ноут звуковуха. А даже лучше! По крайней мере, я услышал разницу на НЧ. На ВЧ не заметил. Но и наушники у меня не лучшего качества.

Другу тоже спаял, подключил и… не работает. Менял конденсаторы в обвязке кварца — не помогло, поменял сам кварц — заработало!

Пользуюсь. Иногда включаю его, когда хочется более качественного звука. Включал бы почаще, но неудобно пользоваться им — корпус так и не сделал, ноут туда-сюда таскаю…

Если применить внешний блок питания с малошумящими стабилизаторами, звучание станет лучше, т.к. питание на шине USB содержит в себе очень много различных помех. Также можно поэкспериментировать с резисторами R7, R8 — поставить меньше и увеличить конденсаторы C12, C13 — улучшится передача низких частот.

Еще можно было вывести S/PDIF, но мне некуда было приткнуть дорожку на печатной плате, да и не нужен он был мне тогда. А так, на 5-ом выводе микросхемы он находится.

Двухсторонняя, грамотно спроектированная печатная плата была бы не во вред данной конструкции. Так как под «землю» будет отведен целый слой меди — это сократит пути возвратного тока и уменьшит уровень помех. На данный момент, если рядом с этим ЦАПом лежит мобильник и принимает входящий вызов или сообщение, то в наушниках хорошо слышны всем знакомые «ты-ты-ты-ты… ты-ты-ты-ты… ты-ы-ы-ы-ы. ».

Не могу найти PCM2705.

Аналогами PCM2705 является линейка PCM2704-2707. Кратко о них:
PCM2704: 28-Pin SSOP, Headphone and S/PDIF Output, External ROM Interface
PCM2705: 28-Pin SSOP, Headphone and S/PDIF Output, Serial Programming Interface
PCM2706: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, External ROM Interface
PCM2707: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, Serial Programming Interface

Можно использовать любую из них, по качеству они одинаковы.
Даташит прилагаю в архиве вместе со схемой и платой (открывать в Sprint Layout 5).

Не могу найти PCM2705.

Аналогами PCM2705 является линейка PCM2704-2707. Кратко о них:
PCM2704: 28-Pin SSOP, Headphone and S/PDIF Output, External ROM Interface
PCM2705: 28-Pin SSOP, Headphone and S/PDIF Output, Serial Programming Interface
PCM2706: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, External ROM Interface
PCM2707: 32-Pin TQFP, Headphone and S/PDIF Output, I2S Interface, Serial Programming Interface

Можно использовать любую из них, по качеству они одинаковы.
Даташит прилагаю в архиве вместе со схемой и платой (открывать в Sprint Layout 5).

Простая USB звуковая карта

Встала передо мной задача сделать по возможности простую и компактную звуковую USB карту. Мой выбор пал на микросхему PCM2900. Она все умеет, что мне необходимо, да и потом как-то я с ней уже сталкивался. Выходной усилитель я построил на LM386. Схема простой USB звуковой картыИтак, все схемы начерчены, плата разведена. Приступим к сборке. Распечатываем из проекта нижнюю сторону платы на глянцевой бумаге. Необходимо заранее подготовить лист фольгированного текстолита и зачистить мелкой наждачной бумагой, чтобы убрать все мелкие царапины и загрязнения а затем обезжирить. Распечатанный листок прикладываем рисунком к текстолиту. Во избежание случайного сдвига рисунка необходимо закрепить его например наклейкой. Далее переводим рисунок на текстолит используя метод ЛУТ. Описывать метод полностью не вижу смысла, информации и на этом сайте более чем достаточно. После травления просверливаю все необходимые переходные и технологические отверстия согласно проекту. Вытравливал я только нижнюю сторону. Верхнюю полностью закрыл от раствора скотчем. Так как дорожек у меня на верхней стороне не много, я решил их выполнить навесными проводками. Во избежание замыкания ножек выводных элементов и проводов на верхнем слое с заливкой, сверлом большого диаметра убираем медь вокруг каждого переходного отверстия. Соединяем дорожками все отверстия согласно чертежу Затем после промывки платы спиртом приступаем к монтажу всех элементов на нижнем слое платы и еще раз промываем. Не лишним будет использование ультразвуковой ванны для этих целей, правда не у всех есть возможность. Затем все элементы на верхнем слое После этого еще раз все промыть и проверить на возможные ошибки. Ну а теперь и первое включение. В микросхеме PCM2900 уже встроены драйвера для WINDOWS. При подключении к компьютеру в системе данное устройство в качестве устройства воспроизведения и устройства записи определяется как USB Audio CODEC. Затем подготавливается корпус, выпиливаются и просверливаются все необходимые отверстия и плата устанавливается в корпус. Никаких надписей на корпусе я правда не делал, что не очень удобно, но можно привыкнуть.по поводу качества звучания конкретных цифр сказать не могу. Ничего не замерял и даже не знаю как. Но на слух не плохо, чуть лучше чем встроенная звуковая карта. Я думаю можно было и лучшего добиться, если использовать вместо выходных LM386 хорошие ОУ. Но я попробовал сделать из того, что было у меня. У меня были изменения в плате которые я делал уже после изготовления — я уменьшил коэффициент усиления выходных микросхем с 200 до 20. И все равно оказалось многовато. Благо для таких изменений понадобилось всего лишь выпаять конденсаторы C25 и С26.

Список радиоэлементов

Прикрепленные файлы:

  • pcm2900.rar (48 Кб)

Теги:

dimon_samara Опубликована: 22.03.2015 0 0

Вознаградить Я собрал 0 5

Оценить статью

  • Техническая грамотность

Оценить Сбросить

Средний балл статьи: 3.6 Проголосовало: 5 чел.

Для добавления Вашей сборки необходима регистрация

+1

zhukovskiydanya 22.03.2015 23:54 #
А де печатка?
Тут и самому не трудно, но ох уж эта лень. Да и лутом. это же прошлый век

0

SpAAArTa 23.03.2015 00:09 #
Фоторезист и ультрафиолетовая лампа круче чем газетка и утюжок

+3

Oberon64 23.03.2015 09:44 #
В таком исполнении (особенно верхняя сторона) я бы постеснялся фотки обнародовать.

+1

Михаил 20.05.2015 00:12 #

Честно говоря скотство такое писать. Человек поделился своим творением, многие не осмеливаются на это. Вас никто не заставляет повторять его исполнение платы.
Вообщем автору спасибо за труд.
З.Ы. Oberon64 прошу прощения если я Вас оскорбил своим замечанием.

0

Oberon64 23.03.2015 09:50 #

А по поводу ЛУТ — дык он проще намного и гемора ни какого с ним. Нижняя сторона платы получилась более-менее, а приложив старание и аккуратность (чего явно не хватило автору) и с ЛУТ можно было получить результат значительно лучше.

0

sergeus 23.03.2015 11:42 #
А где же непосредственно параметры звуковой карты?

0

[Автор]

dimon_samara 23.03.2015 17:04 #

Замеры я не делал. И если честно не совсем разобрался как правильно это делать. А само устройство на руках у меня было всего день с небольшим после окончания сборки. По поводу аккуратности вынужден согласиться. Хотя если честно, опыта у меня пока очень не много. Как в разработке какого-то мало-мальски серьезного устройства, так и в реализации задумки руками.

0

ArmanHayots 24.07.2016 20:01 #

Посмотрите в сторону C-Media 6206LX — там многоканальный звук, а при правильной обвязке — очень хорошее качество.

0

Nem0 05.07.2019 11:13 #
Вряд ли стоит и кто-то будет это повторять т.к. подобное продается на али за копейки в готовом виде.

0

ЗВУКОВАЯ КАРТА СВОИМИ РУКАМИ

Предлагаем простую конструкцию на чипе PCM2702 с подключением к компьютеру по USB каналу. Это может быть оправдано, если нет возможности купить готовую, а встроенная в материнскую плату или планшет — сгорела. Да и просто попробовать свои силы в цифро-аналоговых преобразователях (ЦАП). Сделать звуковая карта — это на удивление совсем не сложная проблема. Если вы используете микросхему PCM2702 от Texas Instruments вы можете создать полноценную USB звуковую карту без проблем. Эта аудиокарта может получать питание от USB-порта и обеспечить один стереовыход. Вам не нужно устанавливать никаких драйверов для Windows XP и Vista, потому что они уже внутри. Получается класический plug and play. Микросхема PCM2702 — это Stereo USB2.0 ЦАП 105dB с линейным выходом. Подробности в официальном описании — там же и упрощённая схема подключения без операционных усилителей.

Схема электрическая USB звуковой карты

Рисунок печатной платы на PCM2702

Рисунок печатной платы на PCM2702

Микросхеме PCM2702 нужно несколько дополнительных радиодеталей для работы, но схема всё-равно не сложная. Звуковая карта может получать питание непосредственно от USB-порта (перемычку W1) или от внешнего источника питания (перемычка W3).

ЗВУКОВАЯ КАРТА СВОИМИ РУКАМИ

Аудиокарта нуждается в двух линиях питания — 3,3В и 5В. В схеме использованы фиксированные выходные напряжения от TPS76733Q на 3,3 в (IO2) и TPS76701Q для 5V (IO3). Но как вы понимаете, тут могут быть использованы любые подходящие стабилизаторы — хоть LM317.

Самодельная ЗВУКОВАЯ КАРТА

На плате сверху находятся три светодиода, в том числе индикатор питания, гнездо входа и выхода на стандартный Джек 3,5″. Оформить устройство можно в готовый корпус от какого-нибудь USB девайса, подходящих размеров, или сразу встроить схему во внешний усилитель, получив таким образом подключаемый к USB УМЗЧ.

Originally posted 2019-09-09 20:09:12. Republished by Blog Post Promoter

Usb звуковая карта своими руками

Основой данной звуковой карты является цифро-аналоговый преобразователь PCM2702 с USB интерфейсом. Может питаться от USB порта или от внешнего источника питания. Для нормальной работы PCM2702 требует минимального количества внешних элементов.

Структурная схема PCM2702:

USB звуковая карта на PCM2702

Схема звуковой карты:

USB звуковая карта на PCM2702

PCM2702 нуждается в двух источниках питания 3,3 В (3В-3.6В) и 5В (4.5В-5.5В). В схеме были использованы линейный стабилизатор TPS76733Q для 3,3В и регулируемый стабилизатор TPS76701Q для 5В.
Оба стабилизатора производятся TI, в проекте использовались именно они, потому что ничего другого не было под рукой. Вообще можно использовать любые подобные стабилизаторы. Для нормальной стабилизации выходное напряжение стабилизатора должно быть ниже входного, поэтому, в данном случае выходное напряжение с помощью резистора R33 устанавливается на 4,8В.

Ферритовые фильтры размещены перед всеми питающими выводами PCM2702, а также Vbus и GND от USB. Они необходимы для подавления ВЧ помех, но если у вас возникнут проблемы с их поиском, то их можно заменить перемычками.

На выходе ЦАПа стоит сдвоенный операционный усилитель, настроенный как ФНЧ 2-го порядка.
Светодиод D1 загорается, когда PCM2702 воспроизводит звуковые данные, полученные от шины USB. Светодиод D2 сигнализирует об остановке передачи данных. Перемычками выбираем питание(внешнее или от usb).

USB звуковая карта на PCM2702

USB звуковая карта на PCM2702

Фото готового устройства:

USB звуковая карта на PCM2702

USB звуковая карта на PCM2702

Данный USB ЦАП показал себя хорошо, хотя Texas instruments не рекомендует использовать PCM2702 в новых проектах. Вместо него лучше использовать PCM2704, PCM2705 они имеют тот-же фукционал, но уже имеют выходной фильтр.

Внешняя звуковая карта

Электрический ластик своими руками 6; может работать наша самодельная звуковая карта. ЦАП своими руками. Звуковая карта может получать питание непосредственно от usb-порта. Внешняя звуковая карта usb своими Все делалось своими руками, без привлечения сторонних. Внешняя звуковая карта usb своими Внешняя звуковая карта usb своими руками.

Акустика своими руками в этом блоге есть статья как я делаю акустику 5. АОЛС своими руками. Ребята, здравствуйте. Хочу бросить лазерную линию связи к своему дому от жилого массива. Кошерный «прикуриватель» своими руками приветствую всех участников форума. Новогодняя ёлка своими руками на МК Делал день и один вечер. Как же я замучился все эти проводочки запаивать Кстати, сделал минут за

Внешняя звуковая карта usb своими Все делалось своими руками, без привлечения сторонних. usb Как сделать звуковую карту своими руками.

хорошая звуковая карта (192/24) за выходные

Звуковая карта — неотъемлемый атрибут мультимедийного компьютера. Раньше, когда ПК были древними и жутко медленными, звуковую карту для компьютера приходилось покупать отдельно, подбирать необходимый тип разъема, устанавливать, а затем — вдумчиво настраивать в нужной программе. Кто помнит, что такое DOS-приложения, тот меня поймет :. Сейчас — все намного проще!

Внезапно случилось неприятное. Разболтался разъем наушников в макбуке. Звук есть, но при любом удобном случае наушники вываливаются и это очень огорчает. Размер впечатляет, но сделать печатную плату под такую крохотульку можно без проблем, благодаря уже освоенной технологии фоторезиста. Заодно и попробуем купленную там же жидкую паяльную маску.

Компьютер как музыкальный сервер окончание.

Не секрет, что у начинающих радиолюбителей не всегда есть под рукой дорогое измерительное оборудование. К примеру осциллограф, который даже на китайском рынке, самая дешевая модель стоит порядка нескольких тысяч. Бывает осциллограф нужен для ремонта различных схем, проверка искажений усилителя, настройки звуковой техники и т. Очень часто низкочастотный осциллограф используется при диагностике работы датчиков в автомобиле. В этом ряде случаем вам поможет наипростейший осциллограф, сделанный из вашего персонального компьютера. Нет, ваш компьютер никак не придется разбирать и дорабатывать. Звуковая карта может также синтезировать звук в ее памяти могут хранится звуки различных музыкальных инструментов. Различают несколько видов звуковых карт: интегрированная, внутренняя internal и внешняя external. Обеспечить с их помощью довольно качественную аудио продукцию не представляется возможным.

Оцените статью
TutShema
Добавить комментарий