Добрый день ! Помогите понять и разобраться что еще требуется установить чтобы заработало 16 битное значение джойстика, оси X и Y Z Rx соответственно значения должны быть -32768 32767
Микроконтроллер stm32f103
Библиотека HAL
Есть такой рабочий дескриптор, он у меня работает, оси работают в 8 битном режиме -128 127
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z)
0x09, 0x33, // USAGE (Rx)
0x15, 0x80, /* LOGICAL_MINIMUM (-128) */
0x25, 0x7F, /* LOGICAL_MAXIMUM (127) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x04, /* REPORT_COUNT (4) */
Общий размер дескриптора составляет: 169
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 169
Когда я пытаюсь установить 16 битное значение джойстика, оси X и Y, он определяется системой Windows без ошибок, но все кнопки и оси перестают работать:
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z)
0x09, 0x33, // USAGE (Rx)
0x16, 0x00, 0x80, /* LOGICAL_MINIMUM (-32768) */
0x26, 0xFF, 0x7F, /* LOGICAL_MAXIMUM (32767) */
0x75, 0x10, /* REPORT_SIZE (16) */
0x95, 0x04, /* REPORT_COUNT (4) */
Общий размер дескриптора увеличивается: 171
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 171
Рабочий дескриптор, включает в себя Клавиатуру, Джойстик на 8 осей 32 кнопки 16 положений переключателя вида :
// 83* // общее количество 169
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x05, // USAGE (Game Pad)
0xa1, 0x01, // COLLECTION (Application)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01, // REPORT_ID (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x20, // USAGE_MAXIMUM (Button 32)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x20, // REPORT_COUNT (32)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x32, // USAGE (Z)
0x09, 0x33, // USAGE (Rx)
0x15, 0x80, /* LOGICAL_MINIMUM (-128) */
0x25, 0x7F, /* LOGICAL_MAXIMUM (127) */
0x75, 0x08, /* REPORT_SIZE (16) */
0x95, 0x04, /* REPORT_COUNT (4) */
0x81, 0x02, // INPUT (Data,Var,Abs)
0x09, 0x34, /* USAGE (Z) */
0x09, 0x35, /* USAGE (Rz) */
0x09, 0x36, /* USAGE (Z) */
0x09, 0x37, /* USAGE (Rz) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x04, /* REPORT_COUNT (2) */
0x81, 0x02, /* INPUT (Data,Var,Abs) */
0xc0, /* END_COLLECTION */
// /* 2 Hat Switches */
0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */
0x09, 0x39, /* USAGE (Hat switch) */
0x09, 0x39, /* USAGE (Hat switch) */
0x15, 0x01, /* LOGICAL_MINIMUM (1) */
0x25, 0x08, /* LOGICAL_MAXIMUM (8) */
0x95, 0x02, /* REPORT_COUNT (2) */
0x75, 0x04, /* REPORT_SIZE (4) */
0x81, 0x02, /* INPUT (Data,Var,Abs) */
0xc0, /* END_COLLECTION */
/* 47 */
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x02, // REPORT_ID (2)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0x75, 0x08, // REPORT_SIZE (8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0, // END_COLLECTION
/* 39*/
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
0x09, 0x01, // USAGE (Consumer Control)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x03, // REPORT_ID (3)
0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
0x09, 0xe2, // USAGE (Mute)
0x09, 0xe9, // USAGE (VolumeUp)
0x09, 0xea, // USAGE (VolumeDown)
0x09, 0xb0, // USAGE (Play)
0x09, 0xb1, // USAGE (Pause)
0x09, 0xb7, // USAGE (Stop)
0x15, 0x01, // LOGICAL_MINIMUM (1)
0x25, 0x06, // LOGICAL_MAXIMUM (6)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x10, // REPORT_SIZE (16)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0xc0, // END_COLLECTION[/center][/center]
Дискриптор USB HID джойстика STM32
Кто любит RISC в жизни, заходим, не стесняемся.
-
winston1777
- Родился
- Сообщения: 6
- Зарегистрирован: Сб май 10, 2014 20:26:49
- Реклама
Перейти
- Наш сайт
- ↳ Сувенирная лавка Кота
- ↳ О нашем сайте...
- ↳ Опросы, конкурсы...
- ↳ Статьи
- Устройства
- ↳ Аналоговая техника
- ↳ Усилители низкой частоты
- ↳ Радиотехника: приемники, передатчики, антенны
- ↳ АвтоМотоВело
- ↳ Цифровая техника
- ↳ Микроконтроллеры и ПЛИС
- ↳ Интеграция с ПК
- ↳ Умные мысли
- Силовая электроника
- ↳ Сварочное оборудование
- ↳ Питание
- ↳ Управление двигателями
- ↳ Индукционные нагреватели
- ↳ Прочая силовая электроника
- Микроконтроллеры и ПЛИС
- ↳ AVR
- ↳ ARM
- ↳ PIC
- ↳ ПЛИС
- ↳ Периферия
- ↳ Разные вопросы по МК
- ↳ Arduino
- Обучалка
- ↳ Теория
- ↳ Практика
- Технология
- ↳ Изготовление PCB
- ↳ Корпуса
- ↳ Измерения
- Ремонт
- ↳ Не слышно, не видно
- ↳ Не стирает, не готовит
- ↳ Ничего не работает
- ↳ Дохлые потаскунчики
- Посиделки у Кота
- ↳ Травим анекдоты
- ↳ Котоссылки
- ↳ Ищу...
- ↳ МЯЯЯУ!
- ↳ Чистилище
- Базар
- ↳ Куплю
- ↳ Продам
- ↳ Отдам-Обменяю
- ↳ Есть работа
- ↳ Ищу работу
- ↳ Базарные разговорчики