05.07.2013, 01:00 | #1 |
Старший Пользователь
Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
|
USB I2S input
И так, очередная разработка, с которой мне пришлось изрядно повозиться.
Устройство для подключения к компьютеру аудиоисточников с цифровым I2S выходом. Стандарт I2S предназначен в первую очередь для передачи цифровых аудио данных между микросхемами в пределах одного устройства. Данный стандарт часто используется в различных микросхемах ЦАП и АЦП, предназначенных именно для работы со звуком. Думаю, что на данном форуме это мало кому нужно. Однако, именно подготовка к постройке pccar сподвигла меня его разработать, так как мне будет необходим ввод звука в компьютер с цифрового радио минуя всевозможные аналоговые тракты. Поэтому, пусть будет она тут, может кому и пригодится. Подробней о i2s читайте в Википедии, представлю тут только диаграмму, чтоб понимать с чем работаем: Задача №1: дешифровать сигнал в микроконтроллере. С помощью микроконтроллера avr из серии Xmega, мне удалось это сделать без помощи дополнительных микросхем (не считая одной ячейки стандартной логики "И"), используя два интерфейса SPI, которые в обилии наличиствуют в указанном микроконтроллере. Однако, есть еще задача №2, решить которую на xmega пока не удалось, об этом позже. В итоге, был выбран микроконтроллер из серии mega (не путать с xmega), а именно ATmega32u4. Только вот с i2s потоком он в одиночку не справился, поэтому ему на помощь пришла микросхема EPM3032A -это микросхема программируемой логики стоимостью 100руб, одна из самых маленьких в своем роде. Ее задача превратить последовательные данные шины i2s в параллельные и сообщить микроконтроллеру о получении первых 16 бит в каждом канале. Микросхема запрограммирована на выдачу данных по 8 бит, один из входов переключает между старшими и младшими восемью битами. Так сложно (имею ввиду переключение) сделано намеренно, чтобы микроконтроллер прерывался на прием данных только один раз за сэмпл каждого канала. Прошивку для данной микросхемы делал не я, а один мой хороший товарищ, поэтому подробней как в ней что рассказать не могу. Схема получилась такой: На схеме два варианта: А и Б. В варианте А, напряжение питания микроконтроллера 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 с дополнительной микросхемой. Печатная плата может выглядеть так: В Винде, начиная с ХРюши, драйвера не требуются. После подключения, устройство будет видно так: Итого, на данный момент характеристики следующие: Частота дискретизации входного сигнала: 32кГц точно, в варианте Б в теории до 48кГц. Разрешение входного сигнала: до 16 бит (на вход подавать можно и больше, лишние просто игнорируются) Устройство автоматически не определяет частоту входного сигнала, поэтому в винде в свойствах устройства на вкладке "дополнительно" нужно указать частоту, соответствующую входной. Вот записи, сделанные с помощью данного устройства: Запись1, Запись2, Запись3. В качестве аудиоисточника используется цифровой выход вот этого радиомодуля. Архив с прошивкой и исходниками прилагаю. Условие использования - рассказать здесь о всех модификациях, если таковые будут, а так же ссылка на данную тему в описании вашего проекта.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо Последний раз редактировалось zyxel812; 05.07.2013 в 10:53. Причина: Исправил некоторые опечатки |
05.07.2013, 01:59 | #2 |
Старший Пользователь
Регистрация: 23.04.2012
Регион: 77, 97, 99, 177
Сообщений: 412
|
весьма интересно, а по части нехватки ресурсов меги не хотите посмотреть в сторону, например, STM32?
|
05.07.2013, 09:50 | #3 |
Старший Пользователь
Регистрация: 22.04.2009
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
|
Очень плезно и познавтельно
Будет ли работать под MacOsX или линукс? Есть 2 цифровых микрофона от ноутбуков, хотелось бы пркрутить к компам, а они не под виндами Если будет работать под unix системой - как минимум повторю
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
05.07.2013, 10:50 | #4 | |
Старший Пользователь
Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
|
Цитата:
Работать должно. Используется стандартный usb класс, что даже винда без драйверов подхватывает, linux должен тем более. Про Мак не могу ни чего сказать, могу предположить, что тоже должно работать. Сейчас в компьютерных магазинах можно найти маленькие usb звуковые карты за 300 ~ 500 рублей с двумя разъемами, один под наушники, другой под микрофон. Так вот, в их описании сказано, что они работают в Linux и Mac OS 10 и выше, а они тоже используют Audio Class 1.0, как и моя разработка.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо |
|
05.07.2013, 13:09 | #5 |
Гуру
Регистрация: 19.09.2009
Возраст: 46
Город: Мелитополь
Регион: Украина
Сообщений: 2,022
|
Я вот непойму накуя было изобретать сие, когда навалом микрух готовых?...пример сходу CM108AH (ввод/вывод по I2S плюс встроенный ЦАП и АЦП). TAS1020B пишем софт и получаем 24/96. Тоже самое TUSB3200AC аж 6 штук I2S. Единственное синхра идет от этих микр, а не от АЦП/ЦАП как любят аудифилы. А те параметры что достигли в изделии ну просто унылы.
|
05.07.2013, 14:58 | #6 |
Старший Пользователь
Регистрация: 18.02.2013
Возраст: 42
Город: Санкт-Петербург
Регион: 78, 98
Машина: e46
Сообщений: 163
|
Разрабатывалось под конкретное устройство с конкретными параметрами, а именно 32кГц с синхрой от внешнего устройства. А так же для того, чтобы сделать управление радиомодулем и передачу с него звука на одной легко достоваемой микросхеме. Сейчас их конечно две, но это как промежуточное работоспособное решение, выложенное здесь с целью найти ещё интузиастов, кому это нужно. Глядишь, кто чем поможет или хотя бы что-то подскажет. Вот уже кое что поймал на удочку, теперь знаю про существование ещё и микросхемы TUSB3200AC, взял на заметку.
Указанные вами чипы ещё достать надо, CM108 до сих пор из Китая жду, минимальная партия 5 шт, ждать около 2-ух месяцев, заказал ради экспериментов. Нет уверенности, что с ее помощью 32кГц ввести можно (во всех описаниях только 44,1 и 48) и сменить тип устройства с микрофона на что-то ещё. И, самое главное, спортивный интерес и учебные цели. Здесь вроде не собираются те, ищет готовых решений.
__________________
ibus2hid Touch Controller USB I2S вход 1NeedBMWK76m1vWukagfGKH3kLaJkXcSYK - для спасибо |
05.07.2013, 18:07 | #7 |
Гуру
Регистрация: 19.09.2009
Возраст: 46
Город: Мелитополь
Регион: Украина
Сообщений: 2,022
|
Я так понял хочешь смастерить цифровое радио с DAB. Тогда осваивай TAS1020B. Они хоть и сняты с производства (как TUSB3200) но еще продаются. Апликухи как и софт для разработки поищи ТУТ. Хотя лучше возьми за основу приемник от Silabs(все исходники доступны), правда выход с тюнера по аналогу, а звук в комп по цифре(эмулируется звуковая через УСБ).
|
05.07.2013, 18:43 | #8 |
Пользователь
Регистрация: 20.06.2013
Возраст: 37
Город: Минск
Регион: Беларусь
Машина: Ford Mondeo 3
Сообщений: 45
|
давно хотел такой девайс для подключения хорошего АЦП, то что стоит на звуковухах и то как оно подключено мягко говоря не радует..
Последний раз редактировалось JIekceu; 22.07.2013 в 05:29. |
01.08.2013, 08:09 | #9 | |
Новый Пользователь
Регистрация: 26.01.2013
Возраст: 40
Город: Новокузнецк
Регион: 42
Машина: Kia Ceed
Сообщений: 29
|
Цитата:
DAC Есть интерес подключить его по i2s к ПК, а выход с дака по оптике на проц. |
|
01.08.2013, 12:00 | #10 |
Гуру
Регистрация: 19.09.2009
Возраст: 46
Город: Мелитополь
Регион: Украина
Сообщений: 2,022
|
Не путай назначение железки...у ТС по I2S принимает, а по USB отдает в комп...у тебя делает противоположное. Короче по USB в комп, а оптику в проц...I2S у тебя для внешней микры DAC.
|
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|