|
STM32F439 + USB мышь, Не работает |
|
|
|
Nov 29 2015, 16:14
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Привет всем. Вот уже пару недель (непостоянно конечно  ) пытаюсь завести USB мышку на USB хосте STM32F439. Использовал СТ-шные либы и частично переделанные библиотеки немца - http://mikrocontroller.bplaced.net/wordpress/?page_id=2991Результаты весьма плачевные - проверял на 3-х мышах: 1. (какой-то Logitch) не опознаётся, обламывается где-то на этапе энумерации. Там я не копался, забил пока на неё. 2. Logitech RX250 (PS2+USB) и Terratech mouse опознаются с полпинка, но ведут себя как пьяный заяц на дороге - даже если мыша просто лежит на столе без движения, координаты как-то странно скачут, в подавляющем большинстве случаев в сторону увеличения, довольно быстро упираются в заданные мною максимумы, на чём всё и замирает. Кнопки вроде нормально отрабатывают, но с задержкой в несколько секунд - от одной до 10 (на глаз). Ну и ещё один общий вопрос. В HID ядре прописана некая частота опроса мыши (HID устройства): CODE if ( HID_Machine.poll < HID_MIN_POLL) { HID_Machine.poll = HID_MIN_POLL; } // if ....................
case HID_POLL: t= HCD_GetCurrentFrame ( pdev ) - HID_Machine.timer; if ( t >= HID_Machine.poll ) { // прошло больше HID_Machine.poll SOF-ов HID_Machine.state = HID_GET_DATA; } else if ( HCD_GetURB_State ( pdev, HID_Machine.hc_num_in ) == URB_DONE ) { // handle data once if ( start_toggle == 1 ) { start_toggle = 0; HID_Machine.cb->Decode ( HID_Machine.buff ); } // if } // if else if ( HCD_GetURB_State(pdev, HID_Machine.hc_num_in) == URB_STALL ) /* IN Endpoint Stalled */ { /* Issue Clear Feature on interrupt IN endpoint */ if ( USBH_ClrFeature ( pdev, pphost, HID_Machine.ep_addr, HID_Machine.hc_num_in ) == USBH_OK ) { /* Change state to issue next IN token */ HID_Machine.state = HID_GET_DATA; } } // if break;
Зачем это сделано - понятно, но по факту это выполнимо только если проц выполняет один только USBH_Process(&USB_OTG_Core_dev, &USB_Host);в главном цикле. А если надо делать ещё что-то? Та же немецкая либа в чистом виде у меня не пошла именно из-за условия if ( t >= HID_Machine.poll ) Можно вызывать USBH_Process в каком-нибудь таймере, но я не знаю, насколько безопасно вызывать эту функцию в прерывании. У кого-то USB-мышки работают? Может кто-то помочь? Приложил свой проект, посмотрите кто может пожалуйста. На кокосе. Спасибо. PS. USB клавиатуру я не пробовал, хотя и не вырезал.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
 |
Ответов
|
Nov 29 2015, 17:00
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(hd44780 @ Nov 29 2015, 19:14)  У кого-то USB-мышки работают? Может кто-то помочь? Мышки работают, правда на контроллерах от фрискейла, стек несколько другой. Не увидел ничего похожего на парсер хид-репорта, или плохо смотрел? По скорости опроса - ставил асинхронный лист усб контроллера на 8 элементов, в каждый четный - QH - mouse, нечетный - QH - keyb. В результате частота опроса мышки и клавиатуры - 2мсек, вполне достаточно. По поводу опроса процедуры USBH_Process. Если память не изменяет с тех времен, когда работал с стм - чем чаще - тем лучше, но вполне сносно работает при 100 раз в сек..
|
|
|
|
|
Nov 29 2015, 18:11
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(aaarrr @ Nov 29 2015, 20:52)  Правильно не увидели: там используется boot interface, который специально введен для того, чтобы избежать разборок с дескрипторами в облегченном софте. Только вот в большинстве радио и некоторых проводных мышах он не работает или работает некорректно, плюс колеса скроллинга и доп кнопки не работают вообще. Цитата(kovigor @ Nov 29 2015, 20:24)  Угу, парсинг там, ИМХО, самое сложное и нетривиальное. Что для мыши, что для клавиатуры. Ну, есть там есколько моментов с глобальными и локальными параметрами и вложенными коллекциями. Делал для клавы и мыши примерно 2 дня, чтоб работали основные параметры по кнопкам и 3м координатам с различной шириной от 8 до 12 бит на координату, остальное- за борт, так что процедура оказалась небольшой  ЗЫ. За основу взял функцию парсинга из усб либы от NXP.
Сообщение отредактировал mantech - Nov 29 2015, 18:13
|
|
|
|
Сообщений в этой теме
hd44780 STM32F439 + USB мышь Nov 29 2015, 16:14 kovigor Цитата(mantech @ Nov 29 2015, 21:00) Не у... Nov 29 2015, 17:24    mantech Цитата(aaarrr @ Nov 29 2015, 21:13) Увы, ... Nov 29 2015, 18:15 hd44780 Спасибо за ответы.
С энумерацией понятно вроде. Гд... Nov 30 2015, 12:54 mantech Цитата(hd44780 @ Nov 30 2015, 15:54) Спас... Nov 30 2015, 14:22 hd44780 Ок. Буду смотреть. Nov 30 2015, 14:54 hd44780 Скачал отсюда - https://www.lpcware.com/content/pr... Dec 1 2015, 17:36 mantech Цитата(hd44780 @ Dec 1 2015, 20:36) Скача... Dec 1 2015, 17:45 hd44780 ага. нашёл. спасибо. Dec 1 2015, 17:48 hd44780 Накурился я этой хрени ... голова кругом
Report... Dec 23 2015, 19:09 mantech Цитата(hd44780 @ Dec 23 2015, 22:09) Наку... Dec 23 2015, 20:24 hd44780 угу. спасибо.
Радиомышки я на потом оставлю. Сейча... Dec 24 2015, 08:36 mantech Цитата(hd44780 @ Dec 24 2015, 11:36) угу.... Dec 24 2015, 09:19 hd44780 Пытаюсь понять феномен этого автоповтора ... Dec 24 2015, 10:53 hd44780 Посмотрел куб - там тоже бут протокол, но автоповт... Dec 24 2015, 16:36 mantech Цитата(hd44780 @ Dec 24 2015, 19:36) Посм... Dec 24 2015, 18:37 hd44780 Всех с наступающим!
Переделал проект с нуля на... Dec 30 2015, 08:39 Огурцов не хватает питания ? Dec 30 2015, 09:49 hd44780 А хз. Питается от программаторского USB. Проверю. Dec 30 2015, 12:33 hd44780 Всех с наступившими Новым годом и Рождеством.
Пит... Jan 7 2016, 18:04 Rash извиняюсь за офф топик, может кто знает где можно ... Jan 8 2016, 17:10 hd44780 Rash, я не знаю.
Новую USB либу я увидел, когда са... Jan 9 2016, 07:52 Огурцов когда говорите либа, что это означает ? Jan 9 2016, 11:11 hd44780 СТ-шники выкладывают архив: USB ядро, драйвера флэ... Jan 9 2016, 12:42 mantech Цитата(hd44780 @ Jan 9 2016, 15:42) Факти... Jan 9 2016, 18:37  hd44780 Цитата(mantech @ Jan 9 2016, 21:37) А что... Jan 10 2016, 09:11 Огурцов немец крут
но только поначалу
потом оказывается, ч... Jan 10 2016, 11:19 hd44780 Не, куба я у него пока не видел. У него SPL и не к... Jan 10 2016, 13:02 Огурцов старый куб был на spl, не ?
в любом случае, пример... Jan 10 2016, 14:34 hd44780 Цитата(Огурцов @ Jan 10 2016, 17:34) стар... Jan 10 2016, 15:28  Огурцов так либы на spl или это третья реинкарнация стшног... Jan 10 2016, 16:34 hd44780 В USB либах SPL есть только в 2-х местах:
1. Файл ... Jan 10 2016, 17:06 hd44780 Сделал флэшки на новой либе. На всех моих платах и... Jan 19 2016, 07:57 mantech Цитата(hd44780 @ Jan 19 2016, 10:57) Тепе... Jan 19 2016, 18:22 hd44780 Не, пока не хаб. Просто так или то или то.
Хабовый... Jan 20 2016, 08:26 mantech Цитата(hd44780 @ Jan 20 2016, 11:26) Не, ... Jan 21 2016, 13:57  mantech Цитата(mantech @ Jan 21 2016, 16:57) Поль... Jan 28 2016, 09:33 hd44780 Не, флэшки у меня нормально вроде пашут.
Знакомый,... Jan 22 2016, 13:17 mantech Цитата(hd44780 @ Jan 22 2016, 16:17) Не, ... Jan 22 2016, 13:38 hd44780 Апну древнюю тему.
Сейчас осталась только одна про... Nov 27 2016, 16:12 mantech Цитата(hd44780 @ Nov 27 2016, 19:12) Поэт... Nov 29 2016, 17:28  hd44780 Цитата(mantech @ Nov 29 2016, 20:28) Рабо... Nov 29 2016, 18:38   mantech Цитата(hd44780 @ Nov 29 2016, 21:38) вызы... Nov 30 2016, 12:24 hd44780 угу. спасибо. Nov 30 2016, 16:35 hd44780 Нашёл я, как это отловить, добавил туда свой флажо... Dec 3 2016, 09:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|