[an error occurred while processing this directive] [an error occurred while processing this directive]
Подскажите про HID USB ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Запускающий 05 декабря 2001 г. 20:10

Применяю в системе PDIUSBD12
Со следующим HID дескриптором:

#define EP0Size 16

// Характеристики HID Report
#define ReportCount 8
#define ReportID 0x33

// HIDDescriptor:
9, 0x21, // Length, Type
0, 1, // HID Class Specification compliance
0, // Country localization (=none)
1, // Number of descriptors to follow
0x22, // And it's a Report descriptor
(30), // Low (ReportLength) -> заполняется при инициализации
(0), // High(ReportLength) -> заполняется при инициализации
// EndpointDescriptor:
7, 5, // Length, Type
0x81, // Address = IN 1
0x03, // Interrupt
EP0Size, 0, // Maximum packet size (this example only uses 1)
2 // Poll every 10 msec (OS will round down to 8)
};

WORD HIDReportDescriptor[30] = {
6, 0, 0xFF, //Usage_Page (Vendor Defined)
9, 1, //Usage (I/O Device)
0xA1, 1, // Collection (Application)
0x85, ReportID, // REPORT_ID (51)
0x19, 1, // Usage_Minimum
0x29, 1, // Usage_Maximum
0x15, 0, // Logical_Minimum (0)
0x25, 0xff, // Logical_Maximum (255)
0x75, 8, // Report_Size (8)
0x95, ReportCount, // Report_Count (8)
0x81, 2, // Input (Data,Var,Abs)
0x19, 1, // Usage_Minimum
0x29, 1, // Usage_Maximum
0x91, 2, // Output (Data,Var,Abs)
0xC0 // End_Collection
};

Устройство инициализируется нормально - даже меняюсь с приложением данными.
Но у меня есть некоторые сомнения:

1) Хост никогда не просит по отдельности HID дескриптор. - Хотя это вроде и понятно - он его получает как часть Config дескриптора. Я прав?

2) В процессе (в конце) мне присылается такой Setup пакет 0x21 0x0a 0x0000 0x0000 0x0000, что на языке Class specific пакета означает SetIdle на всегда. Это так? Причем мой ответ Аск или Stall на дальнейшее вроде не влияют.
Но я никогда не получаю от хоста GetReport запроса? Это как то связано?

3) Никогда не получаю от хоста GetReport запроса (через Setup пакет), но данные слать хочется и я в EndPoint 1 In посылаю пакетики размером Report, PDIUSBD12 выставляет прервание, которое говорит, что пакет ушел, Но вот HandShake от хоста не получаю. Хотя при вех системных обменах от хоста их получаю (и сам шлю). При этом в приложении на хосте принимается Report нормально. Это правильно? то что я не получаю от хоста HandShake? и то что ни разу не видел GetReport запроса?

Заранее Спасибо.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru