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

 
 
 
Reply to this topicStart new topic
> Как обьеденить в LPC2148 2 USB усторйства - виртуальный порт и AudioUSB?
=F8=
сообщение Jul 24 2007, 14:16
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Как обьеденить в LPC2148 2 USB усторйства - виртуальный порт и AudioUSB? Пытался просто просто засунуть в один дескриптор интерфейсы порта и AudioUSB нифига не получается, т.е. по отдельности все работает, а вот вместе нифига.
Go to the top of the page
 
+Quote Post
brag
сообщение Aug 25 2007, 18:29
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Taк оно и не должно пойти наверно..хотя хз,я пока 0 в усб.самому надо иметь и аудио и цдц(для прошивки).. Только они будут джампером переключатся
Go to the top of the page
 
+Quote Post
alexander55
сообщение Aug 28 2007, 13:18
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(=F8= @ Jul 24 2007, 18:16) *
Как обьеденить в LPC2148 2 USB усторйства - виртуальный порт и AudioUSB? Пытался просто просто засунуть в один дескриптор интерфейсы порта и AudioUSB нифига не получается, т.е. по отдельности все работает, а вот вместе нифига.

В LPC2148, на память, 15 конечных точек. Т.к. вход физический один надо его виртуально захабить. Тогда Host может снять до 3 устройств с вашего LPC2148.
Go to the top of the page
 
+Quote Post
brag
сообщение Aug 28 2007, 13:55
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



К ста.еще вопрос.. Запустил я usb audio, винда все увидела и запись работает. но 1 секунду пишет секунд 7..почему так?
Вот дескрипторы:
Код
const struct usbDevDesc UsbDevDesc={
    sizeof(struct usbDevDesc),
    USB_DESCRIPTOR_DEVICE,
    0x0200,    // USB 2.0
    0xEF,   // bDeviceClass
    0x02,   // bDeviceSubclass
    0x01,   // bDeviceProtocol
    USB_EP0_MAXSIZE,
    USB_VENDOR_BRAG,
    USB_BRAG_PRODUCT_DD,
    0x0001,        // Serial
    0x01,    // iManufacturer
    0x02,    // iProduct
    0x00,    // iSerialNumber
    0x01    //bNumConfigurations
};

const struct usbAuCfgDesc UsbCfgDesc={
    {
        sizeof(struct usbStdCfgDesc),
        USB_DESCRIPTOR_CONFIG,
        sizeof(struct usbAuCfgDesc),
        2,    //interfaces
        1,    //bConfigurationValue
        0,    //iConfiguration
        0xC0,    //SelfPowered
        0    //bMaxPower
    },
   /* Audio Control Interface */
    {
        sizeof(struct usbStdIfDesc),
        USB_DESCRIPTOR_IFACE,
        0,    //bInterfaceNumber
        0,    //bAlternateSetting
        0,    //bNumEndpoints
        0x01,    //AUDIO
        0x01,    //AUDIOCONTROL
        0,    
        0    //iInterface
    },
    {
        sizeof(struct usbCsAcDesc),
        0x24,    //CS_INTERFACE
        0x01,    //HEADER
        0x0100,    //bcdADC
        sizeof(struct usbCsAcDesc)+sizeof(struct usbCsItDesc)+
            sizeof(struct usbCsOtDesc), //wTotalLength
        USB_AUDIO_IFS,
        1    //baInterfaceNr
    },
    {
        sizeof(struct usbCsItDesc),
        0x24,    //CS_INTERFACE
        0x02,    //INPUT_TERMINAL
        0x01,    //bTerminalID
        0x0200,    //Input Undefined term type
        0x00,    //bAssocTerminal
        2,    //bNrChannels
        0x00000003, //wChannelConfig
        0,    //iChannelNames
        0    //iTerminal
    },
    {
        sizeof(struct usbCsOtDesc),
        0x24,   //CS_INTERFACE
        0x03,    //OUTPUT_TERMINAL
        0x02,   //bTerminalID
        0x0101, //Usb Streaming
        0x00,    //bAssocTerminal
        0x01,    //bSourceID (from input terminal)
        0       //iTerminal
    },
   /* Zero Bandwidth (alt setting 0) */
    {
        sizeof(struct usbStdIfDesc),
        USB_DESCRIPTOR_IFACE,
        1,    //bInterfaceNumber
        0,    //bAlternateSetting
        0,    //bNumEndpoints
        0x01,    //AUDIO
        0x02,    //AUDIOSTREAMING
        0,
        0    //iInterface
    },
   /* Audio Streaming descriptor (alt setting 1) */
    {
        sizeof(struct usbStdIfDesc),
        USB_DESCRIPTOR_IFACE,
        1,    //bInterfaceNumber
        1,    //bAlternateSetting
        1,    //bNumEndpoints
        0x01,    //AUDIO
        0x02,    //AUDIOSTREAMING
        0,
        0    //iInterface
    },
    {
        sizeof(struct usbAuCsAsDesc),
        0x24,   //CS_INTERFACE
        0x01,    //AS_GENERAL
        0x02,    //bTerminalLink (Out Terminal)
        0x01,    //bDelay
        0x0001    //wFormatTag (PCM format)
    },
    {
        sizeof(struct usbAuCsFmt1Desc),
        0x24,    //CS_INTERFACE
        0x02,    //FORMAT_TYPE
        0x01,    //FORMAT_TYPE1
        0x02,    //bNrChannels
        0x03,    //3 bytes/frame
        24,    //24 bits/sample
        0x01,    //bSamFreqType - One frequency supported
        {B3VAL(96000)}    //tSamFreq
    },
   /* IN ISO Endpoint 1 */
    {
        {sizeof(struct usbAuStdAsIsoEpDesc),
        USB_DESCRIPTOR_ENDPOINT,
        0x81,    //IN endpoint 1
        0x01,    //Isochronous, No synchronous, Data endpoint
        64,    //wMaxPacketSize
        9},    //packets per frame
        0,0    //bRefresh, bSynchAddress
    },
    {
        sizeof(struct usbAuCsAsIsoEpDesc),
        0x25,    //CS_ENDPOINT
        0x01,    //EP_GENERAL
        0x00,    //bmAttributes
        0x00,    //bLockDelayUnits
        0x0000    //wLockDelay
    }
};

Пишу в ендпоинт так:
1.Загоняю первие 64байта буффера,ставлю TXPKTRDY.Загоняю следующих 64байта.
2. Жду прерывания
3. ставлю TXPKTRDY, загоняю 64 байта
повторяю 2,3
дание идут,но медленно...
Контроллер AT91SAM7S64
Go to the top of the page
 
+Quote Post
=F8=
сообщение Sep 15 2007, 13:07
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Ну в целом проблема решилась, AudioUSB и Кейловский VirtualCom для LPC2148 вместе живут вполне нормально. Только в драйвере в функции UsbCom_SelectInterface изменил

Код
TotalInterfaces = ConfigurationDescriptor->bNumInterfaces;

    InterfaceList[0].InterfaceDescriptor = NULL;
    InterfaceList[0].Interface           = NULL;
    
    InterfaceList[1].InterfaceDescriptor = NULL;
    InterfaceList[1].Interface           = NULL;

    DbgPrint("UsbCom_SelectInterface() DO=%08x Interfaces=%d\n", DeviceObject, lTotalInterfaces );

    StartPosition = (PVOID)((ULONG)ConfigurationDescriptor + (ULONG)(ConfigurationDescriptor->bLength));

    InterfaceList[0].InterfaceDescriptor = USBD_ParseConfigurationDescriptorEx (
            ConfigurationDescriptor,
            StartPosition, //search from start of config  descriptro
            -1,        // try interface #0
             0,     // alternate setting
            0xFF,   // interface class
            -1,     // interface subclass
            0xFF);   // interface protocol
    
    if(InterfaceList[0].InterfaceDescriptor != NULL)
    {
        UCHAR bInterfaceSubClass;
        bInterfaceSubClass = InterfaceList[0].InterfaceDescriptor->bInterfaceSubClass;
        if(bInterfaceSubClass <= 1)
        {
            deviceExtension->ChannelNumber = bInterfaceSubClass;
        }
        else
        {
            ntStatus = STATUS_DEVICE_CONFIGURATION_ERROR;
            goto UsbCom_SelectInterface_Exit1;

        }
    }
    else
    {
        ntStatus = STATUS_DEVICE_CONFIGURATION_ERROR;
        goto UsbCom_SelectInterface_Exit1;
    }


    if ( ( urb = USBD_CreateConfigurationRequestEx(ConfigurationDescriptor, InterfaceList) ) == NULL ) {
        DbgPrint("UsbCom_SelectInterface() DO=%08x USBD_CreateConfigurationRequest() : FAIL\n", DeviceObject );
        ntStatus = STATUS_INSUFFICIENT_RESOURCES;    
        goto UsbCom_SelectInterface_Exit1;
    }

    InterfaceDescriptor = InterfaceList[0].InterfaceDescriptor;
    InterfaceInformation = InterfaceList[0].Interface;

Номер порта [code]теперь сохраняю в bInterfaceSubClass. Ну и в инф файле заменить &MI_01 на &MI_03 ну или какой там по счету интерфейс получается.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:04
Рейтинг@Mail.ru


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