Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: посоветуйте нормальное решение USB-Audio IN
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Shtirlich
есть задача ввести звук в писишник по USB. тоесть устройство - USB девайс, собирает данные, допустим, по I2S и шлет их через USB носту.
посмотрел реализации соответствующих классов у техасского инструмента для стеларисов и у ST для stm32.
вообще не увидел возможности с использованием стандартных библиотек направить звук в ПК, везде только вывод.

посему вопрос: может кто уже пользует такое решение? пишу здесь потому что нужен мощный универсальный камень с богатой переферией.
в идеале камень должен помимо звука потянуть виртуальный ком через композит, может быть несильную графику и много небыстрой периферии.
создавать сий баобаб на чемто слабее ARM7 считаю формой анонизма. производитель не сильно важен как и стоимость самой микросхемы.

или может существует волшебная билиотека/фреймворк/SDK/операционка, которая при прикручивании к любому камню реализует описаный функционал?

p.s. сам бы написал с все нуля не будь я таким тупым лентяем = )
ig_z
QUOTE (Shtirlich @ Oct 5 2011, 22:40) *
вообще не увидел возможности с использованием стандартных библиотек направить звук в ПК, везде только вывод.

p.s. сам бы написал с все нуля не будь я таким тупым лентяем = )


Посмотрите на LPC23. Примеры от иара и кейла содержат ввод и вывод. Там необходимо найти примеры для плат с аудио частью. Там используется встроенный цап и ацп.

Писание с нуля это не сто процентный признак трудолюбия. Кошерно начинать с выпиливания кремния на кухне при помощи пилки для ногтей sm.gif
Shtirlich
не нашел, можно ткнуть носом плиз
Юрий_СВ
Цитата(Shtirlich @ Oct 6 2011, 11:35) *
не нашел, можно ткнуть носом плиз

Пример на AVR32
Пример на 8-битном AVR
ig_z
QUOTE (Shtirlich @ Oct 6 2011, 11:35) *
не нашел, можно ткнуть носом плиз


\IAR Systems\Embedded Workbench 6.0\arm\examples\NXP\LPC23xx\IAR-LPC-2378-SK\AudioDevice\
\Keil\ARM\Boards\Keil\MCB2300\USBAudio\

Еще у nxp есть такой пример i2s.usb.audio.demo.zip
lebiga
Цитата(ig_z @ Oct 6 2011, 14:02) *
\IAR Systems\Embedded Workbench 6.0\arm\examples\NXP\LPC23xx\IAR-LPC-2378-SK\AudioDevice\
\Keil\ARM\Boards\Keil\MCB2300\USBAudio\

Еще у nxp есть такой пример i2s.usb.audio.demo.zip


Делал на основании этого проекта. Ставил кодек PCM3002 (20 бит 2 канала, TI), внешний генератор 12.288Мгц - подавал на ШИМ и делил частоту для кодека - изменялась частота дискретизации. Для прецезионных измерений нужно убрать адаптивный режим в USB аудио. Ввод проблем не имеет, вывод нужно буфферизировать - иногда заканчивались данные с компа - и были паузы в генерируемом сигнале. Режимы коррекции скорости вывода в ЮСБ (драйвер) - не работают до сих пор - глюки винды, нужно было вводить обратную связь через HID интерфейс - но я обошелся большим буффером.

процы - LPC2148 (кодек на SSP) и LPC 23x/17x (кодек на I2S)

Успехов
ig_z
QUOTE (lebiga @ Oct 6 2011, 14:38) *
Для прецезионных измерений нужно убрать адаптивный режим в USB аудио. Ввод проблем не имеет, вывод нужно буфферизировать - иногда заканчивались данные с компа - и были паузы в генерируемом сигнале. Режимы коррекции скорости вывода в ЮСБ (драйвер) - не работают до сих пор - глюки винды, нужно было вводить обратную связь через HID интерфейс - но я обошелся большим буффером.


Я не совсем понял, объясните плиз.
Адаптивную синхронизацию вы не используете, значит остается асинхронный или синхронный режимы.
Асинхронный режим глючит на виндах ниже висты.
Остается синхронный режим, но большим буфером проблему не решить. Если девайс работает быстрее хоста, то сразу же имеем недостаток данных. Если девайс работает медленнее хоста, то буфер поможет, но все равно переполнение неизбежно. Единственный выход - синхронизация с соф.
Или у вас как то по иному сделано?
lebiga
Цитата(ig_z @ Oct 6 2011, 15:51) *
Я не совсем понял, объясните плиз.
Адаптивную синхронизацию вы не используете, значит остается асинхронный или синхронный режимы.
Асинхронный режим глючит на виндах ниже висты.
Остается синхронный режим, но большим буфером проблему не решить. Если девайс работает быстрее хоста, то сразу же имеем недостаток данных. Если девайс работает медленнее хоста, то буфер поможет, но все равно переполнение неизбежно. Единственный выход - синхронизация с соф.
Или у вас как то по иному сделано?


В вводом в компьютер проблем нет - синхронизация по кварцевому генератору 12.288 и данных с кодека.
Проблема с выводом. До конца не решил. У меня цикл измерения около минуты - соответственно сделал буфер для генератора размером достаточным для непрерываемого выходного сигнала.

Режимы - вместо
(Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAdaptive,
я использовал
(Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAsynchronous + (Int8U)UsbEpUsageImplicit

Проект сделан давно, че-то уже позабыл
Shtirlich
Цитата(Юрий_СВ @ Oct 6 2011, 14:01) *


забыл сказать, нужно чтобы ввод был стерео с частой не ниже 48 кГц.
в данных примерах моно, причем на 8-ми битке частоты дискретизации 8 кГц

Цитата(lebiga @ Oct 6 2011, 18:46) *
В вводом в компьютер проблем нет - синхронизация по кварцевому генератору 12.288 и данных с кодека.
Проблема с выводом. До конца не решил. У меня цикл измерения около минуты - соответственно сделал буфер для генератора размером достаточным для непрерываемого выходного сигнала.

Режимы - вместо
(Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAdaptive,
я использовал
(Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAsynchronous + (Int8U)UsbEpUsageImplicit

Проект сделан давно, че-то уже позабыл


видимо тоже буду пробовать на нем стартануть. кодек и синтезатор не проблема, они всеравно будут. кодек, точнее аудио АЦП, чтобы обеспечить нужное качество, а синтезатор уже давно юзаем дабы не плодить кучу асинхронных генераторов на плате. сейчас все реализовано на PCM2103 + MSP2234 как управляющий контроллер. хочется на одном корпусе.

ту lebiga: я если что надоем с вопросами, Вы не против?
lebiga
Цитата(Shtirlich @ Oct 6 2011, 18:02) *
забыл сказать, нужно чтобы ввод был стерео с частой не ниже 48 кГц.
в данных примерах моно, причем на 8-ми битке частоты дискретизации 8 кГц

видимо тоже буду пробовать на нем стартануть. кодек и синтезатор не проблема, они всеравно будут. кодек, точнее аудио АЦП, чтобы обеспечить нужное качество, а синтезатор уже давно юзаем дабы не плодить кучу асинхронных генераторов на плате. сейчас все реализовано на PCM2103 + MSP2234 как управляющий контроллер. хочется на одном корпусе.

ту lebiga: я если что надоем с вопросами, Вы не против?


У меня стерео - 2 канала измерения, 48кГц, 16 или 20 бит. Кастомеру отдали версию с 16 бит - при 20 бит шумы все равно снижали диапазон до 16 бит . Регулировку volume переделал на регулировку входного усилителя (на цап DAC8043 и OP37, шаг усиления 2) - просто двигаешь рычажок в апликухе и все. Работоспособность хорошо проверяется через винамп. Можно посмотреть на diatos . kpi . ua - "Акустические измерения"
Shtirlich
Цитата(lebiga @ Oct 6 2011, 19:27) *
У меня стерео - 2 канала измерения, 48кГц, 16 или 20 бит. Кастомеру отдали версию с 16 бит - при 20 бит шумы все равно снижали диапазон до 16 бит . Регулировку volume переделал на регулировку входного усилителя (на цап DAC8043 и OP37, шаг усиления 2) - просто двигаешь рычажок в апликухе и все. Работоспособность хорошо проверяется через винамп. Можно посмотреть на diatos . kpi . ua - "Акустические измерения"


вот почти оно и надо! единственное меня под конец прочтения всего рекомендованого материала заглючило: какой из проектов мы обсуждаем в качестве примера. тоесть во фразе
Цитата(lebiga @ Oct 6 2011, 15:38) *
Делал на основании этого проекта.

речь идет о экземпле который в иаре вложен? или о проекте от nxp?
Shtirlich
кстати Юрий_СВ своей ссылкой на Atmel дал неплохую заценку.
на сайте Атмеля можно скачать их набор библиотек для дляты AT91SAM7SE-EK.
http://www.atmel.com/dyn/resources/prod_do...91sam7se-ek.zip.

дальше по относительным путям:
документация по проекту композитного аудио + CDC
/at91sam7se-ek/softpack-1.5/usb-device-composite-cdcaudio-project/usbmi_devicemi_compositemi_cdcaudiomi_project0_dir_description.html

а это про то как в аудио добавить запись
/at91sam7se-ek/softpack-1.5/at91lib/usb/device/audio-speaker/USBAudioRecorder0_page_description.html

чтото мне атмель сразу стал симпатичен..
короче я на распутье. кто что лично пробовал? посоветуйте
lebiga
Цитата(Shtirlich @ Oct 6 2011, 22:09) *
вот почти оно и надо! единственное меня под конец прочтения всего рекомендованого материала заглючило: какой из проектов мы обсуждаем в качестве примера. тоесть во фразе

речь идет о экземпле который в иаре вложен? или о проекте от nxp?


экзампл в Иаре (папка NXP) и на сайте NXP - один и тот-же, могут быть легкие различия


Цитата(Shtirlich @ Oct 7 2011, 13:47) *
кстати Юрий_СВ своей ссылкой на Atmel дал неплохую заценку.
на сайте Атмеля можно скачать их набор библиотек для дляты AT91SAM7SE-EK.
http://www.atmel.com/dyn/resources/prod_do...91sam7se-ek.zip.

дальше по относительным путям:
документация по проекту композитного аудио + CDC
/at91sam7se-ek/softpack-1.5/usb-device-composite-cdcaudio-project/usbmi_devicemi_compositemi_cdcaudiomi_project0_dir_description.html

а это про то как в аудио добавить запись
/at91sam7se-ek/softpack-1.5/at91lib/usb/device/audio-speaker/USBAudioRecorder0_page_description.html

чтото мне атмель сразу стал симпатичен..
короче я на распутье. кто что лично пробовал? посоветуйте


И в проекте NXP добавлять запись не надо - там она есть изначально.

usb-device-composite-cdcaudio - не очень понял - это что - ЮСБ-КОМ преобразователь?
Пожалуйста приводите полные ссылки - нет времени искать
Shtirlich
Цитата(lebiga @ Oct 7 2011, 17:54) *
usb-device-composite-cdcaudio - не очень понял - это что - ЮСБ-КОМ преобразователь?
Пожалуйста приводите полные ссылки - нет времени искать


сам не нашел на сайте Атмела. поэтому и указываю пути относительно распакованного архива.
для того чтобы люди не скачивали все печатнул в pdf 2 листа из документации. 2-й приктрепленный файл как раз описывает
пример реализации в одном физическом устройстве 2 логических: USB - динамики и преобразователь USB-сом.
если нужно еще чемто управлять кроме звука на стороне устройства данной решение наиболее простое и надежное.

правда я позже поговорил с человеком активно пишущим под AVR32 и AT91, он их не сильно хвалил по быстродействию..

как бы то нибыло документация Атмела на их библиотеки в стиле Java мне показалась очень неплохим учебником по USB
в случае если изучать кто-что-как делает.
Shtirlich
Цитата(lebiga @ Oct 7 2011, 17:54) *
экзампл в Иаре (папка NXP) и на сайте NXP - один и тот-же, могут быть легкие различия


содержимое i2s.usb.audio.demo.zip которое я скачал с с сайта
http://ics.nxp.com/support/documents/micro.../?type=software

и содержимое папки \Embedded Workbench 6.0 Evaluation\arm\examples\NXP\LPC23xx\IAR-LPC-2378-SK\AudioDevice
мне показалось разными проектами.
ig_z
QUOTE (Shtirlich @ Oct 10 2011, 21:32) *
содержимое i2s.usb.audio.demo.zip которое я скачал с с сайта

и содержимое папки \Embedded Workbench 6.0 Evaluation\arm\examples\NXP\LPC23xx\IAR-LPC-2378-SK\AudioDevice
мне показалось разными проектами.


Первое для кейла, второе от иара. В последнем кейле в юсб аудио есть более новые версии некоторых файлов i2s.usb.audio.demo.zip
Alex11
Несколько опоздал к разговору, но замечу, что адаптивный режим на выводе в винде хоть и глюкавый, но заставить его работать можно, надо только дергать его порезче или буфер большой иметь.
ig_z
QUOTE (Alex11 @ Oct 10 2011, 22:29) *
Несколько опоздал к разговору, но замечу, что адаптивный режим на выводе в винде хоть и глюкавый, но заставить его работать можно, надо только дергать его порезче или буфер большой иметь.


В адаптивном режиме работают миллионы китайских безымянных юсб звуковух sm.gif собранных на pcm29xx pcm27xx.
Может вы имели ввиду асинхронный?
Alex11
Так и я говорю, что работает, в отличие от того, что утверждалось в посте 6.
ubit
Цитата(Alex11 @ Oct 10 2011, 23:53) *
Так и я говорю, что работает, в отличие от того, что утверждалось в посте 6.

Могу подтвердить - работает. И на ХР мне его удалось отладить тоже, хотя честно скажу - повозился... Хотя и у семерки есть свои заморочки. 96х24 стерео.
lebiga
Цитата(Alex11 @ Oct 10 2011, 22:29) *
Несколько опоздал к разговору, но замечу, что адаптивный режим на выводе в винде хоть и глюкавый, но заставить его работать можно, надо только дергать его порезче или буфер большой иметь.


biggrin.gif

Адаптивный режим не подходит для прецезионных измерений. У меня синхронизация записи - по кварцевому генератору, данные потом запускаются на БПФ - получаем спектр сигнала. На адаптивном режиме метрологию пройти невозможно.
Shtirlich
Цитата(lebiga @ Oct 11 2011, 14:38) *
biggrin.gif
Адаптивный режим не подходит для прецезионных измерений.


согласен, не надо путать запись и воспроизведение!
в даташите на PCM2903 написано дословно, что на выход режим адаптивный, а на запись асинхронный.
это означает что при записи микра шлет на хост в текущей пачке столько, сколько намерило АЦП, и все.

проблема в том что внутреннее АЦП PCM имеет свой PLL. PCM2903 приемлемо работает просто от кварца если она на отдельной плате и чисто запитана.
если же рядом молотит еще какая нибудь логика и разводка не очень внутренние PLL начинает беситься
внезависимости от того тактирование от кварца или от синтезатора.

и хоть внешний синтезатор сам иногда еще та головная боль cranky.gif, его использование единственный надежный способ получить спектрально чистый,
без полос, измеренный сигнал. правда от него должно быть "запитано" все на плате. двух кварцев быть не должно.
попытки тактировать Audio-ADC по I2S (Master CLK) от контроллера вообще приводят к падению разрядности на пару бит, ибо встроенные PLL контроллеров помимо
ошибки по частоте имеют безбожный джиттер.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.