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

 
 
> WinUSB
nalale
сообщение Oct 23 2014, 07:56
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 23-10-14
Из: Санкт-Петербург
Пользователь №: 83 306



В качестве драйвера для USB устройства на МК пытаюсь использовать стандартный WinUSB. Для этой цели помимо стандартных USB-дескрипторов Microsoft требует от устройства специальных дескрипторов, для распознавания того что данное устройство работает с WinUSB - OS String Descriptor и OS Feature Descriptors.

Но, если в дескрипторе интерфейса указывать класс интерфейса (bInterfaceClass) 0xFF (определяется производителем, что и нужно в случае WinUSB), то после запроса дескриптора конфигурации устройство определяется как неизвестное и не подает признаков жизни, хотя, как я понимаю дальше должен следовать запрос о строковом дескрипторе OS String Descriptor.

Т.е последовательность запросов такая -
1 - GET_DESCRIPTOR(device)
2 - SET_ADDRESS
3 - GET_DESCRIPTOR(device)
4 - GET_DESCRIPTOR(configuration)

Дескриптор Устройства -

Код
static uint8_t Usb_Device_Descriptor[0x12] =
{
    0x12,            /* bLength                  */
    0x01,            /* bDescriptorType (Device) */
    0x00, 0x02,      /* bcdUSB                   */
    0x00,            /* bDeviceClass        */
    0x00,            /* bDeviceSubClass          */
    0x00,            /* bDeviceProtocol          */
    MAX_PACKET_SIZE, /* bMaxPacketSize0          */
    0xc4, 0x10,      /* idVendor                 */
    0x47, 0x88,      /* idProduct                */
    0x00, 0x01,      /* bcdDevice                */
    0x00,            /* iManufacturer            */
    0x00,            /* iProduct                 */
    0x00,            /* iSerialNumber            */
    0x01             /* bNumConfigurations       */
};


Вот кусок дескриптора конфигурации, который описывает интерфейс, описание EndPoint опустил.

Код
static uint8_t Usb_Configuration_Descriptor[0x20] =
{    
/* Configuration Descriptor */
    0x09,                /* bLength                         */
    0x02,                /* bDescriptorType (Configuration) */
    0x20, 0x00,          /* wTotalLength                    */
    0x01,                /* bNumInterfaces                  */
    0x01,                /* bConfigurationValue             */
    0x00,                /* iConfiguration                  */
    USB_POWER_ATTIBUTES,,                /* bmAttributes                    */
    0x32,                /* bMaxPower (100 mA)              */

    /* Interface Descriptor */
    0x09, /* bLength                                         */
    0x04, /* bDescriptorType (Interface)                     */
    0x00, /* bInterfaceNumber                                */
    0x00, /* bAlternateSetting                               */
    0x01, /* bNumEndpoints                                   */
    0xFF, /* bInterfaceClass (Vendor)               */
    0x00, /* bInterfaceSubClass                            */
    0x00, /* bInterfaceProtocol                           */
    0x00, /* iInterface                                     */  
....
....

Если описывать устройство как CDC то все работает хорошо, а вот с WinUsb не получается. В чем ошибка?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Oct 23 2014, 08:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну надо виндус научить что такое устройство - будет работать как WinUSB

Plug in your device to the host system.
Open Device Manager and locate the device.
Right-click the device and select Update driver software... from the context menu.
In the wizard, select Browse my computer for driver software.
Select Let me pick from a list of device drivers on my computer.
From the list of device classes, select Universal Serial Bus devices.
The wizard displays WinUsb Device. Select it to load the driver.

так же можно сделать чтобы оно автоматически попадало на этот драйвер, если ему задать тип устройства WinUSB


http://msdn.microsoft.com/ru-ru/library/ff...3(v=vs.85).aspx
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 16:14
Рейтинг@Mail.ru


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