Jump to content
maxssau

USB аудио интерфейс UI-01

Recommended Posts

Добрый день!

Хотелось бы рассказать об очередном своём девайсе: USB аудио интерфейс UI-01.

Устройство представляет собой USB-I2S адаптер с возможностью вывода PCM/DSD потоков, а так же ввода PCM I2S данных.

Краткие характеристики:

- Процессор XMOS XUF208, 8 логических ядер, 500 MIPS.

- USB 2.0 High speed

- 2 линии ввода/вывода (2 стерео входа + 2 стерео выхода или 4 входа/выхода)

- Вывод: PCM 16-32 бита 44.1-384 кГц, DSD Dop 64-128, DSD Native 64-256 (linux)

- Ввод: PCM 16-32 бита 44.1-384 кГц

- Тактирование мастерклока от платы ЦАП/АЦП, частоты 512fs

- Формат входа/выхода I2S

- Питание Self Power (т.е. от внешнего источника, не от USB)

- 8 конфигурируемых линий GPIO, возможные варианты от 8 выходов, до 4 входа + 4 выхода

- Все линии гальванически изолированны с помощью изоляторов SiLabs Si8662, Si8640

- 2 линии I2C, одна из которых изолирована с помощью ADUM1250 для управления ЦАП/АЦП и подключения дисплея/кнопок/EEPROM.

 

Внешний вид:

SAM_0581.JPG.f25f582e564a352e8d9ae2f51acc1cf5.JPG

SAM_05851.thumb.JPG.d191f0cd1ad32839c36490e45ecd9f47.JPG

 

На плате присутствует разъем full XTAG для прошивки и отладки firmware.

Схемотехника по даташитам и в общих чертах повторяет схемы evolution board от XMOS с некоторыми изменениями.

Планируется 3 режима работы: Legacy, Soft и Native.

Legacy режим.

Параллельный режим работы, при котором управляющие команды выдаются как статические сигналы (MUTE, RESET, DSD, F0,F1). Этот режим позволяет работать интерфейсу без платы управления.

5cbd5c46836d0_-2-768x812.thumb.jpg.8d1e7e2b0577e97292c2533b640cb15b.jpg

 

Soft режим.

Режим, при котором управление ИМС ЦАП/АЦП осуществляется по шине I2C или SPI. Конфигурация выбирается из меню. Необходима плата управления.

5cbd5c666c910_-3-768x663.jpg.cd2ddae6ed8861c1244291406465560e.jpg

 

Native режим.

Режим, при котором конфигурация управления хранится в EEPROM памяти на плате ЦАП/АЦП. Наиболее функциональный режим, при котором всё управление осуществляется с процессора интерфейса. Управляющие сигналы на плате ЦАП/АЦП формируются с помощью I2C экспандера. Этот режим позволит использовать самую различную периферию на плате преобразователя (регулятор громкости и т.п.) без необходимости настройки, т.к. конфигурация будет храниться в EEPROM. Разъем 10 пиновый, т.к достаточно только I2S и I2C сигналы. Этот режим позволяет работать интерфейсу как с платой управления, так и без неё.

5cbd5e0c06629_-4-768x744.jpg.2bb34e6cdbdcec920b8feff8bf51b349.jpg

Программируется плата с помощью специализированного адаптера XA-XTAG.

xtag3.jpg.ca655dab8000671f00c01a0285496621.jpg

 

Выводы сгруппированы по функциональному назначению, поэтому в случае неиспользуемых функций (например не нужен SPI), изолятор отвечающий за эту группу сигналов может не устанавливаться на плату.

Распиновка разъема I2S:

5cbd5cf5e4f65_-5.jpg.5c62f099a87cf5f85d0fb7a1a2bd98d2.jpg

Полнофункциональные драйверы подходят отсюда:

http://jlsounds.com/drivers.html

На данный момент полностью реализован режим Legacy. Так же исправлены большинство "детских" болезней. В процессе работы удаление щелчков при переключении PCM-DSD и обратно.

Вопросы:

Что необходимо добавить или убрать к данной плате?

Какие ИМС ЦАП необходимо добавить в список поддерживаемых в прошивку, для работы в SOFT режиме и с какими протоколами? Сейчас доступны I2C и SPI.

 

Share this post


Link to post
Share on other sites

Евгений,Приветствую! 
Поздравляю с удачной и, главное, полезной разработкой! :)
 

Share this post


Link to post
Share on other sites

Приветствую! спасибо, первая плата получилась функциональной. В планах сделать на 8-16 каналов, на сколько однобитных портов хватит, но это уже с другим процессором XUF216 или XEF216, в корпусе TQFP128, в таком корпусе больше необходимых выводов. Так же нужно обкатать TDM, а для этого ИМС ЦАП надо многоканальную, вообщем несколько новых плат вырисовываются: ЦАП, т.к. последняя версия на 4х слойке содержит несколько досадных, не сильно влияющих на работу ошибок, АЦП надо обновить, под обе сетки частот и наконец то многоканальный ЦАП попробовать. На ближайшие год-два работы много :)

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By tishkanexx
      Продаю корпус для ЦАП (DAC) AK4490 / усилителя для наушников. Саму плату, если её нет, то можно купить на али ($36), фото платы прикладываю, могу дать ссылку на покупку.
      Корпус заказывал с завода breeze audio, минимально можно было заказать 2 корпуса ($30 два корпуса с доставкой), поэтому один продаю. Отдаю за $15, без наценки как есть. Если брать плату ЦАП-а и корпус, то получается $51, что дешевле, чем брать готовый ЦАП на том же ali за $60. Об этом писал здесь:
      На корпусе надпись: AKMDAC - HEADPHONE AMP (сделана по заказу вместо надписи breeze audio)
      Комплект: 4 силиконовые ножки, саморез для крепления "тюльпанов", 8 винтов для корпуса, сами части корпуса.
      Стоимость: 1000р или 15$. Пишите в лс.



    • By serglobo
      USB транспорт Amanero (клон), последняя прошивка, РСМ до 32/384, DSD до 512. Цена 27$. Телефон 05O6751256(Украина) Сергей. EMAIL tatunovs@ukr.net



    • By Владимир Шум
      Возможно ли переделать питание охлаждающей подставки ноутбука из usb в 12 вольтовый источник питания?
    • By German Churilin
      Добрый день всем! Столкнулся с проблемой, над решением которой бьюсь уже месяц - суть в том, что при пересылке аудио данных с контроллера в внешний цап на выходе цапа звучит белый шум(именно когда летят данные). Уже перепробовал разные конфигурации и параметры, да даже другой цап ставил - всё равно та же самая проблема. Может кто сталкивался, или у кого есть идеи почему так происходит?
      Контроллер stm32f407ve китайский, но вроде как рабочий, цап - pcm1606, вытащенный из двд-плеера.

      код инициализации i2s
      RCC_PLLI2SCmd(DISABLE); RCC_I2SCLKConfig(RCC_I2S2CLKSource_PLLI2S); RCC_PLLI2SConfig(200,5); RCC_PLLI2SCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLI2SRDY) == RESET){}; //WS - word clock output GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_SPI2); GPIO_StructInit(&gpioInit); gpioInit.GPIO_Pin = GPIO_Pin_9; gpioInit.GPIO_Mode = GPIO_Mode_AF; gpioInit.GPIO_OType = GPIO_OType_PP; gpioInit.GPIO_PuPd = GPIO_PuPd_NOPULL; gpioInit.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOB, &gpioInit); //BCLK - shift clock output GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_10; GPIO_Init(GPIOB, &gpioInit); //SD - serial audio data GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOC, &gpioInit); //MCO - master clock output GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_SPI2); gpioInit.GPIO_Pin = GPIO_Pin_6; GPIO_Init(GPIOC, &gpioInit); I2S_StructInit(&i2sInit); i2sInit.I2S_CPOL = I2S_CPOL_Low; i2sInit.I2S_Mode = I2S_Mode_MasterTx; i2sInit.I2S_MCLKOutput = I2S_MCLKOutput_Enable; i2sInit.I2S_Standard = I2S_Standard_Phillips; i2sInit.I2S_AudioFreq = I2S_AudioFreq_48k; i2sInit.I2S_DataFormat = I2S_DataFormat_24b; I2S_Init(SPI2, &i2sInit); SPI2->I2SPR = (uint16_t)((uint16_t)512 | (uint16_t)12 | (uint16_t)1); //for 48k Fs SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE); I2S_Cmd(SPI2, ENABLE);  
      код инициализации dma
      DMA_InitTypeDef dmaInit; NVIC_InitTypeDef nvicInit; DMA_DeInit(DMA1_Stream4); DMA_Cmd(DMA1_Stream4, DISABLE); while(DMA_GetCmdStatus(DMA1_Stream4) == ENABLE){}; __ISB(); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); //To dmaInit.DMA_PeripheralBaseAddr = (uint32_t) &(SPI2->DR); //From dmaInit.DMA_Memory0BaseAddr = (uint32_t)&AUDIO_SAMPLE; dmaInit.DMA_BufferSize = 20480; dmaInit.DMA_Channel = DMA_Channel_0; dmaInit.DMA_DIR = DMA_DIR_MemoryToPeripheral; dmaInit.DMA_PeripheralInc = DMA_PeripheralInc_Disable; dmaInit.DMA_MemoryInc = DMA_MemoryInc_Enable; dmaInit.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; dmaInit.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; dmaInit.DMA_Mode = DMA_Mode_Circular; dmaInit.DMA_Priority = DMA_Priority_High; dmaInit.DMA_FIFOMode = DMA_FIFOMode_Enable; dmaInit.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; dmaInit.DMA_MemoryBurst = DMA_MemoryBurst_Single; dmaInit.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; while(DMA_GetCmdStatus(DMA1_Stream4) == ENABLE); DMA_Init(DMA1_Stream4, &dmaInit); DMA_ITConfig(DMA1_Stream4, DMA_IT_TC | DMA_IT_HT, ENABLE); //configure interrupt nvicInit.NVIC_IRQChannel = DMA1_Stream4_IRQn; nvicInit.NVIC_IRQChannelPreemptionPriority = 0; nvicInit.NVIC_IRQChannelSubPriority = 0; nvicInit.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&nvicInit); DMA_Cmd(DMA1_Stream4, ENABLE); while(DMA_GetCmdStatus(DMA1_Stream4) != ENABLE){}; AUDIO_SAMPLE просто wav скопированный через hex редактор и живущий в памяти контроллера, крутиться по кругу. Вроде как, в теории всё должно работать(снизу скрин из pulseview - снято логическим анализатором), к сожалению осциллограф пока что не приобрёл, так что проверить правильность частот не представляется возможнымб но всё же всё вроде как красиво.
      Формат i2s на контроллере совпадает с форматом на цапе - первый бит передаётся через 1 тик sck после смены ws
       
      П.С. подозреваю сразу вопросы про MSB/LSB - wav файл сам по себе little-endian, собственно как и контроллер, то есть тут не должно быть проблем, а i2s стандарт передаёт MSB первым, соответственно если у меня в памяти записано 0x64, 0x61, 0x61, 0x66, 0x02, 0x00, 0x85... то, судя по скрину всё передаётся правильно? или я что то не понимаю в этом всём? Но не в этом суть - в один момент тоже подумал что порядок не тот, но, к сожалению, попытки свапать байты местами(и побайтово, и по словам) не дали ни какого результата

    • By maxssau
      Продам адаптеры USB-I2S. 

       
      Возможности:
       
      стерео ввод/вывод PCM 16-32 бита, 44.1-384 кГц. Ввода DSD нет, как и драйверов для ввода DSD.
      вывод DSD в режиме DoP 64-128, в режиме Native 64-256. Native доступен в Linux без "хитрых" драйверов.
      Тактирование от платы ЦАП/АЦП, частоты 512 fs (22.5792/24.576 МГц). Теоретически возможно и 1024fs(скорости 768кГц и DSD512 Native), но это не опробовано.
      Гальваническая изоляция на Si8662/Si8640.
      Питание возможно как Self так и Bus Powered. В режиме Bus Powered необходимо самостоятельно позаботиться о мастерклоке, т.к. возможны сильные глюки при выключенном генераторе мастерклока.
       
      Тема: 
      срок изготовления 3-5 недель (сильно зависит от поставок процессоров).
      На данный момент полностью реализован интерфейс Legacy. Для отладки Native режима пока нет платы ЦАП, в процессе разработки, будет не раньше осени.
      Цена 6000 + пересылка (в среднем 250 р.).
  • Сообщения

    • И последнее. Как правильно было сказано, 6гд6-80 в рлане "улучшения отдачи баса" хуже 25гдн т.к а) Fs80 против 50 б) мотор слабее и соответственно Qts выше, что потребует Vb больше чем для 25гдн. А он работает в 8литрах, для пары нужно фи всего 16литров. Супротив четырёх не даст. Проще сделать Sp=0.7-1.0Sd чем измерять "ветер"...
    • Если не гоняться за 4-ым знаком после запятой, то для любительских измерений этой карточки за глаза (собственные гармошки у неё менее 0,001% при 24-разрядах и 96кГц). В конце концов всё будет зависеть от характеристик PC-дюка, в который ты её установишь, ну и ест-но от кривизны измерительных "кайобочек", подключаемых к ней.  
    • да на самом деле ничего другого под руками не было. P.s. потенциометр громкости все таки надо будет поменять. Хрипит, шуршит, цикает и некорректно распределяет звук по каналам. В одном положение - звук тише в левом канале, в правом громче, в другом положение наоборот, а в третьем положении вроде выравнивается. Я Так понял проще заменить чем старый ремонтировать. Гемору немеряно. Клепки эти высверливать замучаешься чтоб ничего не повредить, плюс потом все это проволокой скреплять... ну нафиг.
    • 1. При замене номиналов таким образом, да, Fcpез не меняется. НО! Катушка получилась конская т.к при увеличении L для сохранения её активного сопротивления Rc (не более 0.1Re нагрузки= в данном случае 0.4ома) растёт масса-габарит. Можно намотать на сердечнике, но его надо расчитать... Ладно, хай будэ так. 2. Ну увеличили объём. А ПТС динов снимали? Откуда знаете Vas каждого мидбаса и что они вообще идентичны тому проекту?  3. Ошибаетесь. Минимально допустимый диаметр порта Dp =0.5Dэкв. А теория гласит Dp=Dэкв или Sp=Sd. Просто в целях экономии и укорочения длинны порта его уменьшают. Снижение Sp приводит к снижению кпд, увеличению кни, скорости потока и турбулентных завихрений. Для двух 4" либо один 70мм, либо 2×50мм. Второй вариант предпочтительнее. Межосевое портов (как и их геометрия) тоже влияет на их длинну и добротность при неизменной Fb. 4. Поясню вашу ситуацию. Мидбасы работают до 500гц, соответственно межосевое самих мидбасов, как и между мидом не должно превышать 34.4см. Но с акустической точки зрения мидбасы лучше ставить ближе друг к другу, тогда их присоединённые массы взаимодействуют, общее Ra увелививается и два мидбасовичка виртуально превращаются в один с диаметром в 1.414 раз больше. По той же причине трубы порта лучше размещать ближе к мидбасовикам. Оптимум такого решения это КФИ-кольцевой фазоинвертор. Но это другая тема разговора. 5. Естессно знаю. Даже не один раз выкладывал таблицу распределения мощности от вастоты среза. Но, увы, посетители тем не читают... а зря. Заглублять дины в "колодец" вообще нельзя. Их надо ставить за под лицо с баффлом, почитайте теорию волн. А мидбас и басовик можно (ваще нужно) выставлять на подложку, толщина которой расчитывается согласно выравниванию акустических центров (АЦ) с мидом относительно порядка применяемых ФНЧ и ПФ. 12см вч/сч это межосевое для среза 1430гц, что на две с лишним октавы ниже реальной Fсрез 8-9кгц. Это приводит к интерференции и звука не улучшает. В вашем случае 3гд36 надо ставить впритык к миду, раз. Настроить установку по глубине относительно мида согласно АЦ и фазовому сдвигу фильтров, два. И полюбому ставить цепь фазокоррекции т.к при всём желании сделать межосевое сч-вч 2см применяемые дины не позволяют физически. Либо резать ниже и переделывать фильтр, либо поменять мид с твитером на хороший ширик, тянущий до 14-15кгц. 6. Как измеряли сч-нч 15см, от верхнего или от центра между мидбасами? Надо от центра т.к любая пара головок работает вместе= синфазно=как одно целое= как один излучатель и их АЦ и ось ДН находится ровнёхонько между ними.  Судя по фото межосевое нч-нч больше 20см т.к диаметр корзины 6гд6 125мм, Dэкв10см и если их поставить впритык друг к другу межосевое d =12.6см а на фото я вижу что между ними влезет третий мидбас, значит измерили между корзинами а не ценрами диффузоров. В итоге межосевое нч-сч = 16.25+15= 31.25см. Правда вам повезло, т.к это расстояние на 3.15см меньше положенного и вписывается в допуск. В следующий раз учитывайте где находится АЦ пары головок..
    • Книжку бы с описанием схем мультиметров,  принципом работы, деталировкой, методикой проверки и подстройки.  
    • Это "сферический конь в вакууме". Что есть "тоненькие провода"? Каково их сечение? Длина? Сопротивление? Можно резистором ограничить ток мотора, но это бред  Тем паче что под нагрузуой плата всё равно уйдёт в защиту. Если вы хотите использовать устройство с защитой и от "сети" (не понятно чего вы в итоге хотите от "шуруповёрта" (электроотвёртки?) и как хотите этот девайс использовать), меняйте модуль на более подходящий. Либо питайте мотор напрямую от АКБ, а данный модуль используйте только для зарядки самой АКБ. Всё остальное, лютая дичь. Ну не подходит этот модуль под эти цели, для этого есть другие модули с бОльшей нагрузочной способностью. Если защита срабатывает, то это не просто так, это защита от КЗ, от превышения нагрузки и "от дураков". 
×
×
  • Create New...