Всем привет. Задача - имитировать USB клавиатуру/ Пробую заливать в контроллер этот пример Код (C++): #include <USBComposite.h> USBHID HID; HIDKeyboard Keyboard(HID); void setup() { HID.begin(HID_KEYBOARD); Keyboard.begin(); // useful to detect host capslock state and LEDs pinMode(PC13, OUTPUT); delay(1000); } void loop() { digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second Keyboard.println("Hello world"); digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second delay(5000); } и в результате ПК не обнаруживает нового USB устройства и ни чего не передаётся. Кто может подсказать в чём причина? Контроллер к ПК после его прошивки подключать через microUSB? Може кто-нибудь уже делал такое и даст рабочий пример?
Не понятен этот вопрос по решение. Я сам задаю вопросы в теме и прошу помощи в решении моей задачи...
а зачем же вы тогда поставили метку "Решено" на вопросе? Эта метка - очевидно - ставится после того, как вы решили свой вопрос... По сути вопроса - вы уверены, что STM32F103 может быть HID устройством? - я что-то этого не встречал...
USB устройства могут представляться компу устройствами разных классов. Например Ардуина появляется как COM-порт. Это класс CDC - класс коммуникационных устройств. А клавиатура и мышь - это класс HID (устройства интерфейса с человеком). Если STM-ка после заливки скетча (через USB порт с помощью УЖЕ аппаратно впрограммированного бутлоадера) станет USB клавиатурой, это равносильно самоубийству СОМ-порта и бутлоадера. Вывести ее из HID-состояния можно будет только аппаратным перепрограммированием процессора. А бутлоадер самоубийства не допускает. Он впишет вашу прогу, но не по тем стартовым адресам, которые нужны для HID устройств. Но - возможно вы умудритесь написать мудрый бутлоадер. Типа - вы запускаете STM, она спрашивает вас кем ей представляться на USB шине - CDC или HID-ом, или обоими сразу . Эта тема обсуждается в сети. Найду - отпишусь.
У меня этот пример компилиться, прошивается в STM32, но плата не определяется в диспетчере устройств как новое HID устройство. Драйвера, кабель сменил и теперь не знаю что и делать...
@P55, библиотека USBComposite и скетч simplekeyboard.ino работоспособны, проверял год-два назад. Посмотрите в оснастке Управление компьютером - Службы - Доступ к HID устройствам, запущена ли эта служба.
Комп физически определяет подключение USB устройства по изменению потенциала на линии DP (D+). Это делает подтягивающий резистор (либо на V+, либо на GND). Не нашел в даташите STM-а нужен ли он отдельно, или есть встроенный в микре. И уже после этого операционка начинает опрос и определение устройства. А если не определит - напишет что есть неопознанное устройство.
Ещё раз переустановил драйвера, сменил кабель, проверил службу. Пример заработал, устройство определилось в разделе HID, как устройство ввода-вывода, текст появляется в любом редакторе. Всех благодарю за помощь!
Классно! Я 10 лет назад похожий DDR коврик делал из клавиатуры http://vusb.wikidot.com/project:usbddr