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

 
 
> 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

Сообщений в этой теме
- 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   Хороший проект, респект , а какие ограничения avr3...   Oct 4 2013, 02:23
|- - nikkov   Цитата(Left Radio @ Oct 4 2013, 09:23) Ре...   Oct 4 2013, 02:37
|- - 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
|- - ig_z   QUOTE (nikkov @ Oct 4 2013, 05:37) У меня...   Oct 4 2013, 09:11
|- - nikkov   Цитата(ig_z @ Oct 4 2013, 16:11) А Вы мог...   Oct 4 2013, 12:39
|- - ig_z   QUOTE (nikkov @ Oct 4 2013, 15:39) Просто...   Oct 4 2013, 13:51
|- - nikkov   Цитата(ig_z @ Oct 4 2013, 20:51) А что та...   Oct 5 2013, 11:14
- - 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 Текстовая версия Сейчас: 21st July 2025 - 03:11
Рейтинг@Mail.ru


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