Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Hid клава на LPC2148
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Wano
Может кто пробовал примерчики от Keil стандартные. Попытался перебить HID пример для эмуляции клавиатуры. Сколько не бился,винда так и не определяет устройство. Оно проходит как стандартное HID устройство. Вроде дескрипторы поменял как в книжке Агурова. Так же была попытка забить дескриптор
USAGE_PAGE (Generic Desktop) 05 01
USAGE (Keyboard) 09 06
COLLECTION (Application) A1 01
USAGE_PAGE (Keyboard) 05 07
USAGE_MINIMUM (Keyboard LeftControl) 19 E0
USAGE_MAXIMUM (Keyboard Right GUI) 29 E7
LOGICAL_MINIMUM (0) 15 00
LOGICAL_MAXIMUM (1) 25 01
REPORT_SIZE (1) 75 01
REPORT_COUNT (8) 95 08
INPUT (Data,Var,Abs) 81 02
REPORT_COUNT (1) 95 01
REPORT_SIZE (8) 75 08
INPUT (Cnst,Var,Abs) 81 03
REPORT_COUNT (5) 95 05
REPORT_SIZE (1) 75 01
USAGE_PAGE (LEDs) 05 08
USAGE_MINIMUM (Num Lock) 19 01
USAGE_MAXIMUM (Kana) 29 05
OUTPUT (Data,Var,Abs) 91 02
REPORT_COUNT (1) 95 01
REPORT_SIZE (3) 75 03
OUTPUT (Cnst,Var,Abs) 91 03
REPORT_COUNT (6) 95 06
REPORT_SIZE (8) 75 08
LOGICAL_MINIMUM (0) 15 00
LOGICAL_MAXIMUM (101) 25 65
USAGE_PAGE (Keyboard) 05 07
USAGE_MINIMUM (Reserved (no event indicated)) 19 00
USAGE_MAXIMUM (Keyboard Application) 29 65
INPUT (Data,Ary,Abs) 81 00
END_COLLECTION C0


сгенеринный прогой с usb.org
Все попытки оказались тщетны. Может кто покажет где прокол.
Wano
Товарищи,ну может кто поделится своим кодом HID устройства,что определяется не как его личное,а как что-то более распространённое типа клавы или мыши.Хоть бы только винда его определила,без отработки. Есть виртуальное виртуальный COM,но там другой класс.
Wano
Исправляю пробел. Два архива,клавы и мыши. InReport - то что отправляется в комп.В обоих примерах проверяется пин контроллера в результате чего: из клавиатуры шлётся нажатие ктопки "е" ,а из пример мыши двигает курсор по диагонали. Что именно надо отправлять для мыши и клавы можно прочитать в спецификации на HID с usb.org Так же там есть пример CDC класса для создания виртуального COM порта. Пример не работает из-за ошибки в файле
vcomuser.c

U0DLL = 97; /* 9600 Baud Rate @ 15MHz VPB Clock */
U0LCR = 0x03; /* DLAB = 0 */
U0FCR = 0x07; /* Enable and reset TX and RX FIFO. */

U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U1DLL = 97; /* 9600 Baud Rate @ 15MHz VPB Clock */
U1LCR = 0x03; /* DLAB = 0 */
U1FCR = 0x07; /* Enable and reset TX and RX FIFO. */


исправить на

U0DLM = 0x01;
U0DLL = 0x86; /* 9600 Baud Rate @ 15MHz VPB Clock */
U0LCR = 0x03; /* DLAB = 0 */
U0FCR = 0x07; /* Enable and reset TX and RX FIFO. */

U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U1DLM = 0x01;
U1DLL = 0x86; /* 9600 Baud Rate @ 15MHz VPB Clock */
U1LCR = 0x03; /* DLAB = 0 */
U1FCR = 0x07; /* Enable and reset TX and RX FIFO. */

Пример работает крайне криво и медленно. Происходит ожидание переполнения буффера,отсюда некратные 4-м посылки передются с запозданием.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.