Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB HID
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ilkz
STM32F4-Discovery.
В проекте использую либу TM_USB_HID_DEVICE для создания своего hid-девайса.

После заливки поведение следующее:
1. Сразу после заливки проект работает как надо: видится в винде, обменивается данными с прогой. После передерга питания/нажатия кнопки RESET все так же хорошо.
2. Но если не выключая питание платы перевоткнуть USB, то второй раз девайс уже не определяется: винда пишет что устройство USB не опознано.

Что делать - не знаю, уже прям всю голову сломал.
Помогите - куда копать?

Если нужны подробности - пишите какие именно, дам на посмотреть.

Спасибо!
hd44780
Вам надо сделать корректную переинициализацию USB и всех потрохов, если устройство было отключено от USB.
Я чинил родственную проблему в хосте флэшек - если флэшку выдернуть и вставить по-новой, то она уже не опознаётся. Потому что ребята недопилили деинициализацию....
У Вас, видимо, что-то родственное. Я, правда, использовал СТ-шные либы, а не ТМ, но они наверное, друг у друга переписывают ...
Детально подсказать не могу, извините. Девайсы я не делал.
ilkz
Ага понятно, ну я на что-то подобное и грешил.
Буду благодарен, если подскажете куда смотреть.
Vasily_
http://habrahabr.ru/post/208026/
ilkz
Что я там должен увидеть? Про отработку реконнекта там ни слова.
mantech
Цитата(ilkz @ Jan 12 2016, 14:38) *
Что делать - не знаю, уже прям всю голову сломал.
Помогите - куда копать?


К плате дискавери Ф4 идет пример работы с хид-"мышкой", с акселерометром, там все уже сделано, возьмите за основу и доработайте, как нужно...
В том примере используются либы SPL, не куба!
ilkz
Разобрался кажется

было вот так:
Код
    while (1) {
            mm_process_packets();
    }


сделал вот так:
Код
    while (1) {
        if(TM_USB_HIDDEVICE_GetStatus() == TM_USB_HIDDEVICE_Status_Connected)
            mm_process_packets();
        
        if(TM_USB_HIDDEVICE_GetStatus() == TM_USB_HIDDEVICE_Status_Disconnected)
        {
            TM_USB_HIDDEVICE_Init();
            Delayms(1000);
        }
    }


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