Перейти к содержанию
    

CDC - устройство не проходит нумерацию

Всем привет!

 

Пытаюсь сделать CDC-устройство на базе контроллера ISP1583.

 

Использую следующие дескрипторы:

 

DeviceDescriptor CDC1_HS_Device_Descriptor[] =
{
    18,
    0x01,
    USB_VERSION_20,
    0x02,
    0x00,
    0x00,
    0x40,
    0xABCD,
    0xABCD,
    USB_RELEASE_NUMBER,
    0,
    0,
    0,
    0x01
};

ConfigurationDescriptor    CDC1_Standard_Config_Descriptor[] =
{
    9,
    0x02,
    0x43,
    0x02,
    0x01,
    0x00,
    0x40,
    250
};

InterfaceDescriptor CDC1_HS_Default_Interface_COM_Descriptor[] =        //communication interface
{
    9,
    0x04,
    0x00,
    0x00,
    0x01,
    0x02,
    0x02,
    0x01,
    0x00
};

InterfaceDescriptor CDC1_HS_Default_Interface_DATA_Descriptor[] =        //data interface
{
    9,
    0x04,
    0x01,
    0x00,
    0x02,
    0x0A,
    0x00,
    0x00,
    0x00
};

CDCFunctionalDescriptor CDC1_Heder_Functional_Descriptor[] =            //heder functional descriptor
{
    0x05,
    0x24,
    0x00,
    0x00,
    0x02
};

CDCFunctionalDescriptor CDC1_Call_Management_Descriptor[] =             //call management descriptor
{
    0x05,
    0x24,
    0x01,
    0x03,
    0x01
};

CDCFunctionalDescriptor CDC1_Abstract_Control_Management_Descriptor[] =             //abstract control management descriptor
{
    0x04,
    0х24,
    0x02,
    0x06,
};

CDCFunctionalDescriptor CDC1_Union_Interface_Functional_Descriptor[] =                 //union interface functional descriptor
{
    0x05,
    0х24,
    0x06,
    0x00,
    0x01
};

EndpointDescriptor CDC1_HS_Interrupt_In2_Descriptor[] =
{
    7,
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x82,
    0x03,
    0x0020,
    0x02
};

EndpointDescriptor CDC1_HS_Bulk_Out4_Descriptor[] =
{
    7,
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x04,
    0x02,
    0x0020,
    0x00
};

EndpointDescriptor CDC1_HS_Bulk_In4_Descriptor[] =
{
    7,
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x84,
    0x02,
    0x0020,
    0x00
};

Конфигурацию отправляю в следующем порядке:

 

CDC1_Standard_Config_Descriptor[], //9-байт

CDC1_HS_Default_Interface_COM_Descriptor[], //9-байт

CDC1_Heder_Functional_Descriptor[] //5-байт

CDC1_Call_Management_Descriptor[] //5-байт

CDC1_Abstract_Control_Management_Descriptor[] //4-байт

CDC1_Union_Interface_Functional_Descriptor[] //5-байт

CDC1_HS_Interrupt_In2_Descriptor[] //7-байт

CDC1_HS_Default_Interface_DATA_Descriptor[] //9-байт

CDC1_HS_Bulk_Out4_Descriptor[] //7-байт

CDC1_HS_Bulk_In4_Descriptor[] //7-байт

 

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

 

Что нужно сделать чтобы до конца пройти процесс нумерации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую следующие дескрипторы:

 

ConfigurationDescriptor    CDC1_Standard_Config_Descriptor[] =
{
    9,
    0x02,
    0x43,
Тут пропущен 0???
    0x02,
    0x01,
    0x00,
    0x40,
    250
};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет ноль не пропущен. Использую следующую структуру:

 

typedef struct ConfigurationDescriptor         // standard configuration descriptor    //9-bytes
{
    uint8_t        bLength;
    uint8_t        bDescriptorType;
    uint16_t            wTotalLength;
    uint8_t        bNumInterfaces;
    uint8_t        bConfigurationValue;
    uint8_t        iConfiguration;
    uint8_t        bmAttributes;
    uint8_t        MaxPower;

} ConfigurationDescriptor;

 

А может ли CDC-устройство поддерживать USB2.0 ? Просто все примеры реализации CDC-устройств которые я встречал используют USB1.1.

Использую ОС Windows XP SP2. Хочу использовать стандартный драйвер usbser.sys. Но как я понимаю прежде чем система поставит драйвер на устройство, оно должно успешно пройти процесс нумерации. Однако до установки конфигурации дело пока не доходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...