Перейти к содержанию
    

Невозможность сконфигурировать 2 EP с одним номером, но с разными направлениями. Это не позволило запустить ввод с SDR-Widget с драйверами от других UAC2 карт, при том, что вывод работает.

А вот это интересно, хорошо что в STM так можно, собственно сейчас у меня у IN и OUT один номер, значит можно будет надеяться прикрутить драйвера других карт, и работать в обеих направлениях B). 512 байт конечно печально, а я то думаю почему только 48 для UAC1, когда в исходниках лазил. По поводу HS PHY, прикручу USB3320, когда конечно нет предпочтений возможно действительно проще, всё равно ведь изучать, так лучше уж то что больше подходит :), а мне проще внешний прикрутить чем переходить сейчас на LPC.

Единственный пока недостаток - невозможность работы с форматом 24 BCK на фрейм, только 16/32, правда не знаю умеет ли это LPC, но при большой необходимости можно завести данные в ПЛИС, а там уже получить любой формат не проблема. Плюс ПЛИС даст еще кучу всяких возможностей, например соединиться по параллельной шине и получить сколько нужно I2S выходов а не только 2. Но это если и буду делать, то не сейчас, хотя EPM570 уже прикупил :).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот это интересно, хорошо что в STM так можно, собственно сейчас у меня у IN и OUT один номер, значит можно будет надеяться прикрутить драйвера других карт, и работать в обеих направлениях B). 512 байт конечно печально, а я то думаю почему только 48 для UAC1, когда в исходниках лазил. По поводу HS PHY, прикручу USB3320, когда конечно нет предпочтений возможно действительно проще, всё равно ведь изучать, так лучше уж то что больше подходит :), а мне проще внешний прикрутить чем переходить сейчас на LPC.

Единственный пока недостаток - невозможность работы с форматом 24 BCK на фрейм, только 16/32, правда не знаю умеет ли это LPC, но при большой необходимости можно завести данные в ПЛИС, а там уже получить любой формат не проблема. Плюс ПЛИС даст еще кучу всяких возможностей, например соединиться по параллельной шине и получить сколько нужно I2S выходов а не только 2. Но это если и буду делать, то не сейчас, хотя EPM570 уже прикупил :).

У LPC тоже 8/16/32 у I2S, но это вроде не проблема, т.к. почти все ЦАП-ы поддерживают 32BCK, а если нет, то либо ПЛИС, либо что-то типа AD1896 должно подойти.

Кстати, чем еще интересен LPC43XX, это режимом SGPIO, который позволяет реализовать многоканальный I2S.

 

Немного на-оффтопил я тут :biggrin: , но тема лично мне интересная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня нет опыта работы ни с LPC, ни с STM, поэтому мне проще :biggrin: (с АВР32 его тоже не было), а выбор LPC обусловлен наличием HS PHY.

А Вы могли бы более подробно описать свой проект? Т.е. какой юсб стек используете, планируете аудио входы, интересна ли мнимизация задержки, сколько каналов и т.д.?

 

У меня в данный момент есть лпс1768, стм32ф407 и лпс4337.

На сегодняшний день у меня работает лпс1768 как юсб лупбек. Режим синхронизации - асинхронный, пробовал и експлисит и имплисит. В принципе я сейчас принимаю решение, переходить на 4337 или все же закончить с 1768.

Сейчас я работаю с Кейловским юсб стеком. Пробовал изохронную передачу на LPCUSB. В будущем планирую перебраться на NXP USB стек.

Особо интересует минимизация задержки по входу и выходу.

 

Возможно вы помните, я как то обращался к вам по почте, интересовался вашим дайвером для UAC2. В финале было бы интересно сравнить коммерческие драйвера для вин, ваш драйвер и встроенные в мак и линукс.

 

ПС может вы знаете/подскажете более активные форумы по теме разаработки юсб аудио.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы могли бы более подробно описать свой проект? Т.е. какой юсб стек используете, планируете аудио входы, интересна ли мнимизация задержки, сколько каналов и т.д.?

 

У меня в данный момент есть лпс1768, стм32ф407 и лпс4337.

На сегодняшний день у меня работает лпс1768 как юсб лупбек. Режим синхронизации - асинхронный, пробовал и експлисит и имплисит. В принципе я сейчас принимаю решение, переходить на 4337 или все же закончить с 1768.

Сейчас я работаю с Кейловским юсб стеком. Пробовал изохронную передачу на LPCUSB. В будущем планирую перебраться на NXP USB стек.

Особо интересует минимизация задержки по входу и выходу.

 

Возможно вы помните, я как то обращался к вам по почте, интересовался вашим дайвером для UAC2. В финале было бы интересно сравнить коммерческие драйвера для вин, ваш драйвер и встроенные в мак и линукс.

 

ПС может вы знаете/подскажете более активные форумы по теме разаработки юсб аудио.

Да пока нечего описывать. Просто хочу доделать нормальную реализацию USB Audio. АВР32 не совсем для этого годен, поэтому выбрал для себя LPC. На данный момент ничего нет, кроме плат собственной разработки с LPC1837 и LPC4337, да китайского кита open4337 на том же LPC4337. В качестве ЦАП-а и АЦП на момент разработки хочу использовать небольшой модуль на UDA1380 который можно подключить и к моим платам (как и его же Ethernet). Выбор стеков еще впереди, т.к. пока нет времени заняться программированием, да и жду выхода LPCOpen 2.

 

Мой ASIO драйвер хорош только тем, что он open-source / бесплатный, ну и данные выводятся в обход звуковой подсистемы виндовс, поэтому никакие микшеры на него не влияют. Ну и он пока единственный легальный бесплатный способ вывести под Windows через USB 192 кГц/24 бит.

Коммерческие драйверы для Windows от Thesycon гораздо лучше, так как это полноценные драйверы с поддержкой ASIO, но они не бесплатны.

У Linux и мака с UAC2 проблем нет.

 

Самый активный форум по этой тематике - это была группа Audio-Widget в гугл-групп. Но сейчас там затишье, основной разработчик, Alex Lee, делает (даже можно сказать сделал) реализацию на ezdsp5535, его интересовал, прежде всего, многоканальный вывод. Ну а те, кто делает коммерческие разработки, тот информацией делиться не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто хочу доделать нормальную реализацию USB Audio. АВР32 не совсем для этого годен, поэтому выбрал для себя LPC. На данный момент ничего нет, кроме плат собственной разработки с LPC1837 и LPC4337, да китайского кита open4337

Спасибо, понятно. У меня тоже опен4337-с в полной комплектации.

 

Выбор стеков еще впереди, т.к. пока нет времени заняться программированием, да и жду выхода LPCOpen 2.

 

А что такого предполагается в LPCOpen 2, по сравнению с текущей версией?

 

Коммерческие драйверы для Windows от Thesycon гораздо лучше, так как это полноценные драйверы с поддержкой ASIO,

А как это выглядит с технической точки зрения? Стабильнее, меньше грузят систему, проще в настройке или еще что то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что такого предполагается в LPCOpen 2, по сравнению с текущей версией?

Больше примеров, меньше ошибок :biggrin: .

 

А как это выглядит с технической точки зрения? Стабильнее, меньше грузят систему, проще в настройке или еще что то?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проясните каким образом хост увеличивает количество байт в посылке? Дело в том что при воспроизведении время от времени проскакивают слабозаметные щелчки, скорость выдачи байт я засинхронизировал, тут проблем нет, думаю не может быть причина в том, что теперь ведь посылки с хоста не равны 384 байт (это для 16/96), а при заполнении буфера, если посылка например 388 байт и она не умещается в конец буфера, то я ее режу на две, одну часть в конец, все что не влезло в начало. Разрезается естественно только по 2 байта(16), но может ли хост выдать нечетное количество байт, из-за чего и появляются щелчки? Буфер читает DMA по кругу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проясните каким образом хост увеличивает количество байт в посылке? Дело в том что при воспроизведении время от времени проскакивают слабозаметные щелчки, скорость выдачи байт я засинхронизировал, тут проблем нет, думаю не может быть причина в том, что теперь ведь посылки с хоста не равны 384 байт (это для 16/96), а при заполнении буфера, если посылка например 388 байт и она не умещается в конец буфера, то я ее режу на две, одну часть в конец, все что не влезло в начало. Разрезается естественно только по 2 байта(16), но может ли хост выдать нечетное количество байт, из-за чего и появляются щелчки? Буфер читает DMA по кругу.

Драйвер USB Audio под Windows не слишком точно отслеживает изменение размера данных, т.е. относительно небольшие отклонения от нормального размера он просто не успевает отрабатывать. Поэтому в *-widget экспериментально подбирали ту дельту, на которое скачком изменялось значение передаваемое через FB EP. С той стратегией, что там сейчас работает проблем вроде нет, хотя на первых этапах были. Код там несложный для понимания, находится в файле uac1_device_audio_task.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, поизучаю, а буфер там циклический, точно так же по DMA отправляется в I2S?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, поизучаю, а буфер там циклический, точно так же по DMA отправляется в I2S?

Да, там циклический буфер из 2-х частей, в один пишется то, что принимается по USB, из другого читает DMA. Части лежат в памяти друг за другом. При равенстве скоростей приема и отдачи расстояние между указателем чтения и указателем записи должны быть равны размеру одной части. Если расстояние уменьшается или увеличивается, до идет коррекция размера пакета от хоста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм..., у меня абсолютно такой же алгоритм, разве что буфер общий и поэтому расстояние удерживается в половину буфера, ладно буду разбираться, спасибо еще раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализую всё тоже самое что и у автора, но только на другом чипе и HighSpeed. Может кто-нибудь подскажет почему после каждой записи фитбека происходит URB Sync Reset Pipe and Clear Stall?

 

usb.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил UAC2 аудиоустройство с W10. Получил трески рассинхронизации звука при передаче из устройства в компьютер. Обратно все идет нормально (есть проблемы при попытке использования feature unit, но это не сейчас). Я пытаюсь без выделенной feedback EP решить - в UAC1 нормально. На OUT направлении работает ресэмплинг.

ВОПРОС...В UAC1 можно было сказать о двух допустимых форматах передачи (16/48000/стерео или 24/96000/стерео). Тут же можно задать отдельно допустимые сэмпл рейт и формат. В результате получаю в windows выбор из трех опций - 16/48000/стерео, 24/48000/стерео или 24/96000/стерео. Вторая не нужна. Как быть? Топология аудиоустройства во всех альтернативных конфигурациях только одна на всех. 

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...