реклама на сайте
подробности

 
 
> STM32F4xx Isochronous Feedback, Обратная связь для асихронной EP, нет запроса на чтение FB EP
Left Radio
сообщение Oct 2 2013, 00:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 4-11-08
Пользователь №: 41 361



Собственно вопрос вот в чем, пытаюсь запустить асинхронный режим с явной обратной связью через feedback EP, естественно начал с изучения примеров и стандарта, вроде все получилось, устройство определяется, USBlyzer-ом вижу что идут OUT пакеты, а IN нет, хост время от времени делает URB Sync Reset Pipe and Clear Stall (success), затем идет, как я понял задержанная, передача URB Isoch Transfer (issued) и по завершению, после передачи OUT пакета, по IN - 0 bytes data. При этом никаких прерываний по FB EP не происходит sad.gif
Вот я никак и не могу понять как мне собственно передать 3 байтный FB пакет на хост. Использую STM OTG Driver 2.1 и переделанный ихний же пример USB аудио. Контрольную точку для явной обратной связи в дескрипторе описал уверен что правильно, но так и не могу дождаться epin прерывания по этой точке, по нулевой (при конфигурации) прерывания происходят как при out, так и при in пакетах. Возможно кто то сталкивался, или делал что то похожее, помогите плиз, или подскажите куда копать, уже 4 день не могу заставить работать.

Пробовал при инициализации передать по feedback EP:
Код
static uint8_t  usbd_audio_Init (void  *pdev, uint8_t cfgidx)
{  
    /* Open EP OUT/IN */
    DCD_EP_Open(pdev, AUDIO_OUT_EP, AUDIO_OUT_PACKET, USB_OTG_EP_ISOC);
    DCD_EP_Open(pdev, AUDIO_IN_EP, AUDIO_IN_PACKET, USB_OTG_EP_ISOC);
    
        DCD_EP_Tx (pdev, AUDIO_IN_EP, bufs, 3);
        
    /* Initialize the Audio output Hardware layer */
    if (AUDIO_OUT_fops.Init(USBD_AUDIO_FREQ, DEFAULT_VOLUME, 0) != USBD_OK){ return USBD_FAIL; }

    /* Prepare Out endpoint to receive audio data */
    DCD_EP_PrepareRx(pdev, AUDIO_OUT_EP, (uint8_t*)IsocOutBuff, AUDIO_OUT_PACKET);

    return USBD_OK;
}

Еще хуже, устройство перестает работать, хотя и по прежнему определяется правильно.

Вот дескрипторы:
CODE

/* Configuration 1 */
0x09, /* bLength */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
LOBYTE(AUDIO_CONFIG_DESC_SIZE), /* wTotalLength 118 bytes*/
HIBYTE(AUDIO_CONFIG_DESC_SIZE),
0x02, /* bNumInterfaces */
0x01, /* bConfigurationValue */
0x00, /* iConfiguration */
0xC0, /* bmAttributes BUS Powred*/
0x32, /* bMaxPower = 100 mA*/
/* 09 byte*/

/* USB Speaker Standard interface descriptor */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x00, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
0x00, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Class-specific AC Interface Descriptor */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */
0x00, /* 1.00 */ /* bcdADC */
0x01,
0x27, /* wTotalLength = 39*/
0x00,
0x01, /* bInCollection */
0x01, /* baInterfaceNr */
/* 09 byte*/

/* USB Speaker Input Terminal Descriptor */
AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */
0x01, /* bTerminalID */
0x01, /* wTerminalType AUDIO_TERMINAL_USB_STREAMING 0x0101 */
0x01,
0x00, /* bAssocTerminal */
0x02, /* bNrChannels */
0x03, /* wChannelConfig 0x0003 - Left&Right; 0x0000 - Mono; 0x0004 - FrontCenter */
0x00,
0x00, /* iChannelNames */
0x00, /* iTerminal */
/* 12 byte*/

/* USB Speaker Audio Feature Unit Descriptor */
0x09, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */
AUDIO_OUT_STREAMING_CTRL, /* bUnitID */
0x01, /* bSourceID */
0x01, /* bControlSize */
AUDIO_CONTROL_MUTE, /* bmaControls(0) */
0x00, /* bmaControls(1) */
0x00, /* iTerminal */
/* 09 byte*/

/*USB Speaker Output Terminal Descriptor */
0x09, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */
0x03, /* bTerminalID */
0x02, /* wTerminalType 0x0302, headphones*/
0x03,
0x00, /* bAssocTerminal */
0x02, /* bSourceID */
0x00, /* iTerminal */
/* 09 byte*/

/* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
/* Interface 1, Alternate Setting 0 */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x01, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
0x00, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */
/* Interface 1, Alternate Setting 1 */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x01, /* bInterfaceNumber */
0x01, /* bAlternateSetting */
0x02, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Audio Streaming Interface Descriptor */
AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */
0x01, /* bTerminalLink */
0x00, /* bDelay */
0x01, /* wFormatTag AUDIO_FORMAT_PCM 0x0001*/
0x00,
/* 07 byte*/

/* USB Speaker Audio Type I Format Interface Descriptor */
0x0B, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */
AUDIO_FORMAT_TYPE_I, /* bFormatType */
0x02, /* bNrChannels */
AUDIO_FRAME_SIZE, /* bSubFrameSize; bytes per frame */
AUDIO_BITRESOLUTION, /* bBitResolution; bits per sample */
0x01, /* bSamFreqType only one frequency supported */
SAMPLE_FREQ(USBD_AUDIO_FREQ), /* Audio sampling frequency coded on 3 bytes */
/* 11 byte*/


/* Endpoint 1 - Standard Descriptor */
AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_OUT_EP, /* bEndpointAddress 1 out endpoint, 0х01*/
USB_ENDPOINT_TYPE_ISOCHRONOUS | (1<<2), /* bmAttributes, isochronus, async */
AUDIO_PACKET_SZE(USBD_AUDIO_FREQ), /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */
0x01, /* bInterval */
0x01, /* bRefresh */
AUDIO_IN_EP, /* bSynchAddress */
/* 09 byte*/

/* Endpoint - Audio Streaming Descriptor*/
AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */
AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_ENDPOINT_GENERAL, /* bDescriptor */
0x00, /* bmAttributes, default 0x00 */
0x00, /* bLockDelayUnits */
0x00, /* wLockDelay */
0x00,
/* 07 byte*/


/* Endpoint 2 - Standard Descriptor, FB */
AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_IN_EP, /* bEndpointAddress 2, in FB endpoint, 0х81*/
USB_ENDPOINT_TYPE_ISOCHRONOUS|(1<<4), /* bmAttributes, feedback endpoint(explict) */
0x03, 0x00, /* wMaxPacketSize in Bytes */
0x01, /* bInterval */
0x05, /* bRefresh */
0x00, /* bSynchAddress */
/* 09 byte*/


Сообщение отредактировал Left Radio - Oct 2 2013, 00:41
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Left Radio
сообщение Oct 4 2013, 02:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 4-11-08
Пользователь №: 41 361



Хороший проект, респект wink.gif, а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале sm.gif

Сообщение отредактировал Left Radio - Oct 4 2013, 02:33
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 4 2013, 02:37
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Цитата(Left Radio @ Oct 4 2013, 09:23) *
Респект wink.gif, а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале sm.gif

Не устроили 2 момента:
1 - размер буфера EP 512 байт, что уменьшает вдвое пропускную способность, отчего для UAC1 доступна частота максимум 48кГц;
2 - невозможность сконфигурировать 2 EP с одним номером, но с разными направлениями. Это не позволило запустить ввод с SDR-Widget с драйверами от других UAC2 карт, при том, что вывод работает.

У меня нет опыта работы ни с LPC, ни с STM, поэтому мне проще biggrin.gif (с АВР32 его тоже не было), а выбор LPC обусловлен наличием HS PHY.
Go to the top of the page
 
+Quote Post
ig_z
сообщение Oct 4 2013, 09:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (nikkov @ Oct 4 2013, 05:37) *
У меня нет опыта работы ни с LPC, ни с STM, поэтому мне проще biggrin.gif (с АВР32 его тоже не было), а выбор LPC обусловлен наличием HS PHY.

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

У меня в данный момент есть лпс1768, стм32ф407 и лпс4337.
На сегодняшний день у меня работает лпс1768 как юсб лупбек. Режим синхронизации - асинхронный, пробовал и експлисит и имплисит. В принципе я сейчас принимаю решение, переходить на 4337 или все же закончить с 1768.
Сейчас я работаю с Кейловским юсб стеком. Пробовал изохронную передачу на LPCUSB. В будущем планирую перебраться на NXP USB стек.
Особо интересует минимизация задержки по входу и выходу.

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

ПС может вы знаете/подскажете более активные форумы по теме разаработки юсб аудио.
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 4 2013, 12:39
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Цитата(ig_z @ Oct 4 2013, 16:11) *
А Вы могли бы более подробно описать свой проект? Т.е. какой юсб стек используете, планируете аудио входы, интересна ли мнимизация задержки, сколько каналов и т.д.?

У меня в данный момент есть лпс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, его интересовал, прежде всего, многоканальный вывод. Ну а те, кто делает коммерческие разработки, тот информацией делиться не будет.
Go to the top of the page
 
+Quote Post
ig_z
сообщение Oct 4 2013, 13:51
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (nikkov @ Oct 4 2013, 15:39) *
Просто хочу доделать нормальную реализацию USB Audio. АВР32 не совсем для этого годен, поэтому выбрал для себя LPC. На данный момент ничего нет, кроме плат собственной разработки с LPC1837 и LPC4337, да китайского кита open4337

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

QUOTE (nikkov @ Oct 4 2013, 15:39) *
Выбор стеков еще впереди, т.к. пока нет времени заняться программированием, да и жду выхода LPCOpen 2.


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

QUOTE (nikkov @ Oct 4 2013, 15:39) *
Коммерческие драйверы для Windows от Thesycon гораздо лучше, так как это полноценные драйверы с поддержкой ASIO,

А как это выглядит с технической точки зрения? Стабильнее, меньше грузят систему, проще в настройке или еще что то?
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 5 2013, 11:14
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Цитата(ig_z @ Oct 4 2013, 20:51) *
А что такого предполагается в LPCOpen 2, по сравнению с текущей версией?

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

Цитата(ig_z @ Oct 4 2013, 20:51) *
А как это выглядит с технической точки зрения? Стабильнее, меньше грузят систему, проще в настройке или еще что то?

Так как это полноценные драйверы, то они реализуют звуковое устройство и все программы Windows могут работать с ними. С моим же драйвером могут работать только те программы, которые поддерживают ASIO. Для остальных программ звукового устройства просто не существует.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Left Radio   STM32F4xx Isochronous Feedback   Oct 2 2013, 00:29
- - controller_m30   А что такое feedback EP? Это просто EndPoint1...7,...   Oct 2 2013, 08:20
- - ig_z   QUOTE (Left Radio @ Oct 2 2013, 03:29) Во...   Oct 2 2013, 09:52
- - Left Radio   controller_m30, interrupt и/или bulk передачи сдес...   Oct 2 2013, 12:20
|- - ig_z   QUOTE (Left Radio @ Oct 2 2013, 15:20) ig...   Oct 2 2013, 13:38
- - Left Radio   Да, хост вроде запрашивает данные, это вижу в USBl...   Oct 2 2013, 14:25
- - Left Radio   Цитата(ig_z @ Oct 2 2013, 16:38) У меня Л...   Oct 2 2013, 18:40
|- - ig_z   QUOTE (Left Radio @ Oct 2 2013, 21:40) А ...   Oct 3 2013, 08:19
- - Left Radio   Раз никто не помогает пришлось самому , не скажу ч...   Oct 3 2013, 03:22
- - Left Radio   Спасибо, значит я пришел к такому же решению. С фо...   Oct 3 2013, 08:25
|- - nikkov   Left Radio, UAC 1 реализуете?   Oct 3 2013, 08:47
- - Left Radio   Да, UAC 1, за UAC 2 пока не берусь, доведу полност...   Oct 3 2013, 19:34
|- - nikkov   Цитата(Left Radio @ Oct 4 2013, 02:34) Да...   Oct 4 2013, 01:44
|- - Left Radio   Цитата(nikkov @ Oct 4 2013, 05:37) Невозм...   Oct 4 2013, 05:27
||- - nikkov   Цитата(Left Radio @ Oct 4 2013, 12:27) А ...   Oct 4 2013, 05:46
- - Left Radio   Проясните каким образом хост увеличивает количеств...   Oct 8 2013, 08:24
|- - nikkov   Цитата(Left Radio @ Oct 8 2013, 15:24) Пр...   Oct 8 2013, 08:48
- - Left Radio   Спасибо, поизучаю, а буфер там циклический, точно ...   Oct 8 2013, 10:01
|- - nikkov   Цитата(Left Radio @ Oct 8 2013, 17:01) Сп...   Oct 8 2013, 10:07
- - Left Radio   Хм..., у меня абсолютно такой же алгоритм, разве ч...   Oct 8 2013, 11:04
- - maxis   Реализую всё тоже самое что и у автора, но только ...   Dec 16 2015, 14:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 09:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016