ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
728725
Le (17.01.2017 11:07 - 11:29, просмотров: 1283)
LPC1768 + HID клавиатура через USB OTG - не удается подключить "на горячую" Подключаю HID клавиатуру через USB OTG к LPC1768. Подаю питание на плату. На клавиатуре загорается светодиодик NumLock и если нажимать на клавиши - то видно клавиатура работает нормально (транслирую их на ПК через uart). Но если вытащить клавиатуру и снова вставить ее в usb, то она уже не включается, т.е. не происходит ее поднятие "на-горячую". Хотя по обработчику событий должна происходить энумерация вновь подключенного устройства. Использую библиотеку от keil (скриншот во вложении) (uVision V5.16a) - пример взят от демо платы MCB1700. Код обработчика событий клавиатуры: void USBH_Thread (void const *arg) { char con = 0; /* Connection status of keyboard */ char con_ex = 40; /* Previous connection status + initial time in 100 ms intervals for initial display */ uint8_t out[64]; /* Output to keyboard LEDs */ out[0]=1; USBH_Initialize (0); /* Initialize USB Host 0 */ while (1) { con = USBH_HID_GetDeviceStatus(0) == usbOK; /* Get kbd connection status */ if ((con ^ con_ex) & 1) { /* If connection status changed */ if (con) { USBH_HID_Write (0,(uint8_t *)&out,1);/* Turn on NUM LED */ printf ("\nKeyboard connected\n"); } else { printf ("\nKeyboard disconnected ...\n"); } con_ex = con; } else if (con_ex > 1) { /* If initial time active */ con_ex -= 2; /* Decrement initial time */ if ((con_ex <= 1) && (!con)) { /* If initial time expired */ printf ("\nNo keyboard connected ... \n"); con_ex = con; } else { osDelay(200); } } osDelay(100); } } osThreadDef(USBH_Thread, osPriorityNormal, 1, NULL);
imageimage