![]() |
USB I2S input
Вложений: 1
И так, очередная разработка, с которой мне пришлось изрядно повозиться.
Устройство для подключения к компьютеру аудиоисточников с цифровым I2S выходом. Стандарт I2S предназначен в первую очередь для передачи цифровых аудио данных между микросхемами в пределах одного устройства. Данный стандарт часто используется в различных микросхемах ЦАП и АЦП, предназначенных именно для работы со звуком. Думаю, что на данном форуме это мало кому нужно. Однако, именно подготовка к постройке pccar сподвигла меня его разработать, так как мне будет необходим ввод звука в компьютер с цифрового радио минуя всевозможные аналоговые тракты. Поэтому, пусть будет она тут, может кому и пригодится. Подробней о i2s читайте в Википедии, представлю тут только диаграмму, чтоб понимать с чем работаем: http://we.easyelectronics.ru/uploads.../19/b0139f.gif Задача №1: дешифровать сигнал в микроконтроллере. С помощью микроконтроллера avr из серии Xmega, мне удалось это сделать без помощи дополнительных микросхем (не считая одной ячейки стандартной логики "И"), используя два интерфейса SPI, которые в обилии наличиствуют в указанном микроконтроллере. Однако, есть еще задача №2, решить которую на xmega пока не удалось, об этом позже. В итоге, был выбран микроконтроллер из серии mega (не путать с xmega), а именно ATmega32u4. Только вот с i2s потоком он в одиночку не справился, поэтому ему на помощь пришла микросхема EPM3032A -это микросхема программируемой логики стоимостью 100руб, одна из самых маленьких в своем роде. Ее задача превратить последовательные данные шины i2s в параллельные и сообщить микроконтроллеру о получении первых 16 бит в каждом канале. Микросхема запрограммирована на выдачу данных по 8 бит, один из входов переключает между старшими и младшими восемью битами. Так сложно (имею ввиду переключение) сделано намеренно, чтобы микроконтроллер прерывался на прием данных только один раз за сэмпл каждого канала. Прошивку для данной микросхемы делал не я, а один мой хороший товарищ, поэтому подробней как в ней что рассказать не могу. Схема получилась такой: https://lh3.googleusercontent.com/-Z...6-no/shema.png На схеме два варианта: А и Б. В варианте А, напряжение питания микроконтроллера 3.3в. При таком напряжении по даташиту контроллер может стабильно работать только на 8МГц. Этого ему еле еле хватает, чтобы принять и передать аудиопоток частотой дискретизации 32кГц. В варианте Б, напряжение питания микроконтроллера примерно 4.6в. Напряжение намеренно занижено диодом, чтобы микроконтроллер мог стабильно принимать 3.3-вольтовые сигналы с EPM3032. Сама же EPM3032 толерантна к 5-ти вольтовым входным сигналам. При таком напряжении контроллер может работать на частоте 16МГц, этого должно хватить для обработки аудиопотока с частотой дискретизации вплоть до 48кГц. Однако, на максимальной частоте я не проверял, у меня не нашлось такого источника. Задача №2: Передать полученные данные в компьютер. Для этого используется библиотека LUFA. За основу взят AudioInput пример из состава библиотеки. Используется Audio Class Device 1.0, т.е. микроконтроллер прикидывается usb звуковой картой. Точнее звуковой картой с одним цифровым входом. Дело в том, что данная библиотека пока что не в полной мере поддерживает относительно новые микроконтроллеры серии xmega, на них мне не хватило пропускной способности передать в компьютер два канала одновременно из-за того, что в библиотеке пока не реализован функционал двойного буфера (так называемый pin-pong режим). Поэтому использую обычную mega с дополнительной микросхемой. Печатная плата может выглядеть так: https://lh6.googleusercontent.com/-p...w456-h209-p-no https://lh3.googleusercontent.com/p_...w450-h209-p-no В Винде, начиная с ХРюши, драйвера не требуются. После подключения, устройство будет видно так: https://lh6.googleusercontent.com/-L...no/screen1.png Итого, на данный момент характеристики следующие: Частота дискретизации входного сигнала: 32кГц точно, в варианте Б в теории до 48кГц. Разрешение входного сигнала: до 16 бит (на вход подавать можно и больше, лишние просто игнорируются) Устройство автоматически не определяет частоту входного сигнала, поэтому в винде в свойствах устройства на вкладке "дополнительно" нужно указать частоту, соответствующую входной. Вот записи, сделанные с помощью данного устройства: Запись1, Запись2, Запись3. В качестве аудиоисточника используется цифровой выход вот этого радиомодуля. Архив с прошивкой и исходниками прилагаю. Условие использования - рассказать здесь о всех модификациях, если таковые будут, а так же ссылка на данную тему в описании вашего проекта. |
весьма интересно, а по части нехватки ресурсов меги не хотите посмотреть в сторону, например, STM32?
|
Очень плезно и познавтельно
Будет ли работать под MacOsX или линукс? Есть 2 цифровых микрофона от ноутбуков, хотелось бы пркрутить к компам, а они не под виндами Если будет работать под unix системой - как минимум повторю |
Цитата:
Цитата:
|
Я вот непойму накуя было изобретать сие, когда навалом микрух готовых?...пример сходу CM108AH (ввод/вывод по I2S плюс встроенный ЦАП и АЦП). TAS1020B пишем софт и получаем 24/96. Тоже самое TUSB3200AC аж 6 штук I2S. Единственное синхра идет от этих микр, а не от АЦП/ЦАП как любят аудифилы. А те параметры что достигли в изделии ну просто унылы.
|
Разрабатывалось под конкретное устройство с конкретными параметрами, а именно 32кГц с синхрой от внешнего устройства. А так же для того, чтобы сделать управление радиомодулем и передачу с него звука на одной легко достоваемой микросхеме. Сейчас их конечно две, но это как промежуточное работоспособное решение, выложенное здесь с целью найти ещё интузиастов, кому это нужно. Глядишь, кто чем поможет или хотя бы что-то подскажет. Вот уже кое что поймал на удочку, теперь знаю про существование ещё и микросхемы TUSB3200AC, взял на заметку.
Указанные вами чипы ещё достать надо, CM108 до сих пор из Китая жду, минимальная партия 5 шт, ждать около 2-ух месяцев, заказал ради экспериментов. Нет уверенности, что с ее помощью 32кГц ввести можно (во всех описаниях только 44,1 и 48) и сменить тип устройства с микрофона на что-то ещё. И, самое главное, спортивный интерес и учебные цели. Здесь вроде не собираются те, ищет готовых решений. |
Я так понял хочешь смастерить цифровое радио с DAB. Тогда осваивай TAS1020B. Они хоть и сняты с производства (как TUSB3200) но еще продаются. Апликухи как и софт для разработки поищи ТУТ. Хотя лучше возьми за основу приемник от Silabs(все исходники доступны), правда выход с тюнера по аналогу, а звук в комп по цифре(эмулируется звуковая через УСБ).
|
давно хотел такой девайс для подключения хорошего АЦП, то что стоит на звуковухах и то как оно подключено мягко говоря не радует..
|
Цитата:
DAC Есть интерес подключить его по i2s к ПК, а выход с дака по оптике на проц. |
Не путай назначение железки...у ТС по I2S принимает, а по USB отдает в комп...у тебя делает противоположное. Короче по USB в комп, а оптику в проц...I2S у тебя для внешней микры DAC.
|
Часовой пояс GMT +4, время: 10:00. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot