STM32 и USB-HID

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
pkot
Сообщения: 13

Сообщение pkot » 18 ноя 2018, 13:39

Вновь приветствую эмбед-сообщество. Захотел сделать USB-HID девайс на STM32F103C8. А конкретно нужно было сделать что-то типа клавиатуры, только с меньшим количеством кнопок. Гугл дал несколько примеров по запросу "usb клавиатура на stm32" и я выбрал из них наиболее простой вариант - готовый проект под CoIDE (под keil не стал брать потому что кряка не было). На скоряк сделал плату аля ардуино, тока на ф103 камне. Скомпилил, зашил мк, подключаю к компутеру и через 2 секунды вижу грустную надпись на мониторе "USB-устройство не опознано":
zUQd0XHbeQ4.jpg


Пример я брал отсюда: http://www.avislab.com/blog/stm32-usb_ru/

Вынул USB-шнур, повертел платку в руках, дай думаю еще раз воткну и неожиданно комп определил RHID STM32:
QWTlNWvwMPM.jpg


При этом в Диспетчере устройств:
xvIiQKGDzDQ.jpg


Я подумал что это какая-то хардверная проблемка (у меня была куча навесного монтажа в том числе и в шинах данных USB) и решил на нее подзабить, мол потом сама уйдет когда новую плату сделаю. В общем эта ошибка вылазила с совершенно случайной вероятностью. Причем когда ее не было, винда мгновенно подхватывала девайс и все работало как надо. Предвестником ошибки была 2-х секундная задержка до звукового оповещения при втыкании USB-шнура.

Новая плата (знаю, что тоже колхоз, но первая версия была еще хуже), а вообще платы буду заводские заказывать, когда макет заработает как надо:
EyHSEOHrREg.jpg


И как оказалось, новая плата ничего не изменила. Как девайс коннектился со случайной вероятностью, так и осталось. Решил проверить на других компах и обнаружил, что на вин7 платка коннектится идеально в 100% случаев. Причем определяется девайс немного по-другому:
cSRju5htTt0.jpg


На моем компе стоит вин10. На другом компе с вин10 проблема абсолютно аналогичная. Причем описание ошибки как бы намекает, что проблема может быть в неверном дескрипторе устройства. Но почему тогда на вин7 все работает?

Дальнейшие поиски привели наконец к нахождению Pro-версии MDK-ARM, и оказалось что даже официальные STM'овские примеры ведут себя точно также, выдают точно такую же ошибку. В общем вот так как-то, сейчас руки уже опускаются, поэтому мог забыть что-то указать. За помощь готов платить, но только чисто символически, тк студент.

Ах да, пробовал все способы посыла сигнала компу о готовности устройства (я про резик 1.5к с +3.3V на D+). Пробовал и софтверно подтягивать, и сразу замыкать как на всех китайских платах, и вручную тыкать - результат один. Также находил в интернете и другие примеры работы с USB в STM32 => сейм проблем.

Ошибка, которую выдает винда забыл написать: "Сбой запроса дескриптора устройства".

Аватара пользователя
iEugene0x7CA
Адепт
Сообщения: 1225
Откуда: Киев

Сообщение iEugene0x7CA » 18 ноя 2018, 22:56

Ух, клавиатурка на STM32. ;)
Я когда-то её очень возжелал, делали с товрищем, и таки сделали — целью было потом склепать друг другу джойстики и рубиться по сети в эмуль Nintendo NES, проходить Super Mario 3. :)

В принципе, могу сказать что USB — штука крайне термоядерная, и нужно быть отдельно спецом по USB дабы что-то на нём пилить.
В нашем случаае помогло нахождение спец. прог в инете, которые как бы собирают дескрипторы по базовому описанию устройства. Тулза по моему была от TI для USB на MSP430.

Дескрипторы забили в пример от ST для мыши, переделали кусок работы с массивом который отправляется компу... И прошива стала клавиатрой.
Правда, тестилось всё это на Win7, и я до сих пор её юзаю, в т.ч. из-за меньшего геммора с драйверами. :geek:

Если пригодится — исходники от джойстика, юзалось на на Keil'е uVision 5, можно вытянуть настройки/дескрипторы и попробовать.

F103_keyboard.zip
(12.16 КБ) 7 скачиваний

Вернуться в «Микроконтроллеры и ПЛИС»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя