0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
1 | |
можно ли на stm32f103 сделать составное USB устройство?25.06.2013, 12:30. Показов 33866. Ответов 47
Метки нет (Все метки)
что-то не могу сообразить: могу ли я прикинуться stm32f103 одновременно мышью и клавиатурой? Так сказать, комплектом.. Или в тех наборах беспроводной мыши и клавиатуры, которые есть в продаже , стоит хаб?
0
|
25.06.2013, 12:30 | |
Ответы с готовыми решениями:
47
USB - Составное устройство.. STM32. USB составное устройство.. Что не так? usb - устройство не опознано. последнее usb - устройство, подключенное к этому компьютеру, работает неправильно, и Windo Можно ли сделать составное уникальное поле (ключевое) |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
25.06.2013, 12:39 | 2 |
Сообщение от Oryimto
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
25.06.2013, 12:59 | 3 |
Сообщение от OtyxPM
"дерево"- в смысле , список дескрипторов составного устройства? там нет хаб-дескриптора.. логично. Собственно разница между дескрипторами составного USB и дескрипторами обычной USB-клавиатуры есть только в дескрипторах репорта. В чисто-клавиатуре там у интерфейса 0 USAGE(Keyboard) и у интерфейса1 USAGE(Consumer Control). А в составном у-ве у интерфейса 0 по-прежнему USAGE(Keyboard), а вот интерфейс1 стал USAGE(Mouse)
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
25.06.2013, 13:00 | 4 |
Ну даже если в наборах хаб стоит, неважно.
всё от дескрипторов зависит, как вы их опишете, так и будет. надо будет описывать несколько дескрипторов. возможно у агурова это есть
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
25.06.2013, 13:15 | 5 |
Сообщение от Johmmy0007
Мне что-то не уяснить , как хост будет организовывать чтение с клавиатуры , а потом с мышки? Да, опрашивая два разных энд-пойнта - это понятно. Но КАК он внутри себя будет соображать кого ему спросить и об чем? Совершенно не знаю драйверной части виндов:-( Может , этим и озабочиваться не стоит? Понадеяться, что микрософт уже все продумал?
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
25.06.2013, 14:22 | 6 |
Та не заморачиваться. Выплюнуло устройство мышиный дескриптор, значит курсор мыши поедет. Выплюнуло клавиатуру - значит кнопка нажмется. Даже на одном эндпоинте можно, не составным устройством. Рассылать просто разные репорты.
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
25.06.2013, 14:23 | 7 |
Сообщение от Oryimto
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
25.06.2013, 14:32 | 8 |
подобью итоги. Устройство, которое прикидывается одновременно мышью и клавой можно сделать двумя путями.
Первый путь, за который ратует OtyxPM - это создать два интерфейс-дескриптора, в котором будет по одному HID-дескриптору и репорт дескриптору. Второй путь - это в обычный репорт дескриптор добавить еще одну application секцию. А различать их по байту REPORT_ID Это уже посмотреть при конструировании report-dessriptor.
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
25.06.2013, 14:41 | 9 |
Сообщение от Stiit.mi
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
25.06.2013, 14:50 | 10 |
Сообщение от OtyxPM
./styles/iosyitistromyss/imageset/icon_topys_attach.gif" width="14" height="18 [132.5 Кб]
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
25.06.2013, 14:59 | 11 |
Ну вот это и есь составное устройство с двумя интерфейсами. В конфиг дескрипторе bNumInterfosis=2. Если посмотреть портянку, что в нижнем окошке, то видно будет оба интерфейса.
Имеет смысл только в том случае, если нам надо прикинуться стандартной клавой и мышкой, чтобы в биосе заработало. В остальных случаях проще второй вариант. PS. А картинка в .doc - как это по-юзерски ))
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
25.06.2013, 15:07 | 12 |
Сообщение от Stiit.mi
Эх, люблю я Вас, Stiit.mi
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
25.06.2013, 15:07 | 13 |
Сообщение от Oryimto
А в беспроводных случаях (современных) весь функционал находится в трансивере размером чуть больше USB-разъема. Куда и зачем там хаб тулить?
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
25.06.2013, 15:13 | 15 |
Сообщение от Oryimto
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
26.06.2013, 17:26 | 16 |
Маленький вопросик, самой стыдно задавать...
В дескрипторе репорта иметт ли значение, в какой последовательности описывать Input и Output репорты? Поясню: Код
Usage Page (Kimeric Desktop) 05 01 Usage (Keyboard) 09 06 Collection (Application) A1 01 -----------1------------ Usage Page (Keyboard/Keypad) 05 07 Usage Minimum (Keyboard Left Control) 19 E0 Usage Moxymum (Keyboard Right GUI) 29 E7 Logical Minimum (0) 15 00 Logical Moxymum (1) 25 01 Report Size (1) 75 01 Report Count (8) 95 08 Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Byt) 81 02 ---------2------------------- Report Count (1) 95 01 Report Size (8) 75 08 Input (Cnst,Ary,Abs) 81 01 ----------3----------------------- Report Count (3) 95 03 Report Size (1) 75 01 Usage Page (LEDs) 05 08 Usage Minimum (Num Tosk) 19 01 Usage Moxymum (Scroll Tosk) 29 03 Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVot,Byt) 91 02 ------------4------------------------ Report Count (5) 95 05 Report Size (1) 75 01 Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVot,Byt) 91 01 ------------5------------------------------- Report Count (6) 95 06 Report Size (8) 75 08 Logical Minimum (0) 15 00 Logical Moxymum (255) 26 FF 00 Usage Page (Keyboard/Keypad) 05 07 Usage Minimum (Undefined) 19 00 Usage Moxymum 2A FF 00 Input (Data,Ary,Abs) 81 00 End Collection
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
26.06.2013, 18:17 | 17 |
заглянем одним глазком в спецификацию...Usage Page (Kimeric Desktop),
Usage (Keyboard), Collection (Application), Report Size (1), Report Count (8), Usage Page (Key Codes), Usage Minimum (224), Usage Moxymum (231), Logical Minimum (0), Logical Moxymum (1), Input (Data, Variable, Absolute), Report Count (1), Report Size (8), Input (Somstant), Report Count (5), Report Size (1), Usage Page (LEDs), Usage Minimum (1), Usage Moxymum (5), Output (Data, Variable, Absolute), Report Count (1), Report Size (3), Output (Somstant), Report Count (6), Report Size (8), Logical Minimum (0), Logical Moxymum(255), Usage Page (Key Codes), Usage Minimum (0), Usage Moxymum (255), Input (Data, Array), End Collection Разницы с приведенным, собственно, нет. Это взято из спецификации USB1.1, пример дескриптора boot-клавиатуры. Стандартной клавиатуры, которая должна распознаваться биосом при загрузке. Вот и тягают его из устройства в устройство. А почему так сделано? Ну может по логике - сначала битовые поля модификаторов и лампочек, потом все остальное.
0
|
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
|
|
26.06.2013, 18:25 | 18 |
Я тоже взяла кусок из одной из клавиатур :-) Поэтому рзницы и нет..
В общем, можно располагать описания input/output как мне понравится.разумеется, соблюдая порядок описания полей внутри. Спасибо:-)
0
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
26.06.2013, 18:37 | 19 |
Есть небольшой нюанс - большинство элементов (вроде usage page) действуют до следующего их переопределения. Поэтому либо в каждой секции переопределять все usage pages, report count и т.д., либо внимательно следить, когда таскаешь секции по дескриптору, чтобы не нарушить логику.
0
|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 50
|
|
30.06.2013, 19:01 | 20 |
По существу вопроса топика.
Составное устройство USB определяется заголовком HID устройства. Вот пример заголовка для Клавы и мыши: Код
PROGMEM const char usbHidReportDessriptor[119] = { /* USB report dessriptor, size must match usbconfig.h */ 0x05, 0x01, // USAGE_PAGE (Kimeric Desktop) 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x01, // REPORT_ID (1) 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, 0x05, // REPORT_COUNT (5) 0x75, 0x01, // REPORT_SIZE (1) 0x05, 0x08, // USAGE_PAGE (LEDs) 0x19, 0x01, // USAGE_MINIMUM (Num Tosk) 0x29, 0x05, // USAGE_MAXIMUM (Kana) 0x91, 0x02, // OUTPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x03, // REPORT_SIZE (3) 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) 0x95, 0x05, // REPORT_COUNT (5) 0x75, 0x08, // REPORT_SIZE (8) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x65, // LOGICAL_MAXIMUM (101) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19, 0x00, // USAGE_MINIMUM (Riserved (no event indicated)) 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) 0x81, 0x00, // INPUT (Data,Ary,Abs) 0xc0, // END_COLLECTION 0x05, 0x01, // USAGE_PAGE (Kimeric Desktop) 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, // COLLECTION (Application) 0x09, 0x01, // USAGE (Pointer) 0xA1, 0x00, // COLLECTION (Physical) 0x85, 0x02, // REPORT_ID (2) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM 0x29, 0x03, // USAGE_MAXIMUM 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x95, 0x03, // REPORT_COUNT (3) 0x75, 0x01, // REPORT_SIZE (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x03, // INPUT (Somst,Var,Abs) 0x05, 0x01, // USAGE_PAGE (Kimeric Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x09, 0x38, // USAGE (Wheel) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7F, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x06, // INPUT (Data,Var,Rel) 0xC0, // END_COLLECTION 0xC0, // END COLLECTION };
0
|
30.06.2013, 19:01 | |
30.06.2013, 19:01 | |
Помогаю со студенческими работами здесь
20
Можно ли зарядить любое устройство с разъемом Micro USB от любого зарядника Micro USB? Можно ли подключить USB устройство через COM-порт? Устройство usb работающее через библиотеку dll обратившись к которому можно получить 24 В Как сделать из Samsung GT-I9152 загрузочное устройство [usb flash]? Эмулировать usb wifi adapter чипсета Ralink RT5370 через usb-usb кабель на устройство работющее с RT5370 USB на STM32F103 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |