STM32 #6. USB - программируем класс - HID устройство, создаем обычную мышку.
Вставка
- Опубліковано 28 січ 2022
- Ссылка на UA-cam-канал:
bit.ly/3KGWq9r
Скачать PVS-Studio:
pvs-studio.com/nr_download
#stm32 #программирование
Продолжаем программировать USB-интерфейс микроконтроллера STM32. В этом видео пишем программу, которая нам позволит работать напрямую микроконтроллеру с компьютером без всяких преобразователей уровней, используя класс - HID (Human Interface Device) для создания манипулятора типа - мышь. Попробуем перемещать мышку на экране монитора и крутить колесиком микроконтроллером, через нашу отладочную плату STM32F4Discovery и STM32CubeIDE.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
/ @nrelectronics
или через Яндекс-деньги:
money.yandex.ru/to/4100115727...
А также переводом по номеру карты:
4377-7237-6190-5714
Спасибо, Интересно.
Думаю что пригодиться.
Пожалуйста. На Али можно джойстик купить небо, для ардуино, как раз для перемещения мыши подойдёт.
👍 спасибо)
Пожалуйста
Интересно, а данным кодом можно перепрошить мышь? То есть, если например я захотел бы расширить функционал и добавить возможность взаимодействия с мышью через пользовательский интерфейс. Просто у меня есть старая мышь, а покупать новую плашку думаю стоит или нет. Я С пока что только изучаю и поэтому интересно можно или нет
Думаю что нет, обычно там микросхемы без перепрошивки.
Спасибо за подробный разбор!
P.S. А курс по "Си" не забыт?
Пожалуйста)
Ни в коем случае не забыть! При моих занятиях рассказываю все равно больше и чаще ;)
читал я в свое время как работает юсб. думаю епрст сколько ж там разных моментов. смотрел как это реализовано в авр. куча регистров в которые хрен пойми что писать. и смотрю в стм все оптимизировали. вопрос только в скорости работы) достаточно ли быстро работает на HAL?
Хал снизил порог вхождения достаточно хорошо. Я показал принцип, как и чем это делать. При реализации прерываниями по срабатыванию той или иной кнопки все будет чётче работать, да и к тому же у меня стояло 30 пикселей, это много но наглядно для видео, надо просто уменьшить. На парках можно сделать, но сложнее получается)
Скорость чаще зависит от самой архитектуры решения. Например, DMA + INT всегда будет быстрее и эффективнее, чем просто опрос. А современные компиляторы делают разницу между CMSIS и HAL принебрежимо малой.
От архитектуры реально скорость зависет, прямо хорошо. Согласен.
@@NRelectronics Ну, если еще добавить о скорости, то не плохо бы делать динамический анализ буферов. У меня одно GUI падало, не часто, но падало. А ему шел постоянный поток данных с борды. Оказалось, когда графики на GUI выводились в большом разрешении, то в какой то момент входной буфер переполнялся и коммуникация падала.
Вот поэтому отладка вещь достаточно сложная, многие на это часто забивают. Либо тестами не покрывают.
Спасибо! Всё-таки хотелось бы больше про предыдущему CDC VCP - пример полноценного обмена с двух сторон. Т.е. со стороны ПК не через терминал, а с помощью открытия устройства и работы с устройством. Как я понял, через этот VCP можно работать гораздо быстрее, чем 115200, которую почти везде ставят, а большинство терминалов даже выше и не показывают, и не дают возможности.
Пожалуйста.
Хорошо, сделаем и приём в одном из роликов между делом. Да, скорость может быть гораздо больше чем 115200, т. к. Full speed USB 2.0 это 12Mb/s, а это около 1,5 МБ/С т.е. очень быстро)) Терминалки разные бывают, можно поискать побыстрее.
Нашёл в TeraTerm можно работать на 950кб/с по com- порту.
@@NRelectronics UARTы по проводам ведь соединяются, по сути с такими-же VCP-эмуляторами. Значит и по UARTам штатным можно скорость поднять до скорости ножек контроллера. На C# сегодня попробовал сделать терминал, так там хоть сотню мегабит указывай. А какая реальная скорость ножек контроллера?
Реальная ножек контроллера не может быть больше половины частоты внутренней шины на которой они внутри подключены. AHB...
@@NRelectronics ну вот я посмотрел в мануале на F103CB - там первый UART на шине 72 МГц, а другие на 36 МГц и заявлено 4.5 Мбит (72 / 16) и 2.25Мбит соответственно.
Спасибо! Очень ждём пример hid устройства клавиатуры с обработкой светодиодов Caps Num и Scroll.
Спасибо. Подумаю)
Клавиатуру самому бы хотелось!))
@@NRelectronics Я клавиатуру написал, но ни как не могу статусы светодиодов вычитывать... 🤔 Может глянете код?
Как подойду к клавиатуре посмотрю конечно.
Как всегда #топ!
Спасибо. Стараюсь, получается бывает по-разному)
Материал по stm32MP157 будет ?
Есть интерес к чему именно в плане микропроцессоров?
@@NRelectronics запуска приложений на openg
Тогда пока нет. Не планирую.
О! Попил он как то у меня крови. Пришлось делать составной девайс, описание дескриптора было очень не ординарным.
Расскажите подробнее о своём опыте.
Вот бы на esp32 по блютусу как hid
Там ведь своё SDK есть, всё так сложно?
Мышь легко, а вот сенсорный экран это уже другой уровень. Использовал ИК-рамку китайскую и свой чип STM32F103C8. Это было целое искусство. Сначала найти как именно отправлять пакеты, несколько касаний, а потом уже обработка сигнала с фотодиодов. Сейчас развожу ИК-рамку под свой проект. Проект так же собирал через CubeMX
Рамки также имеют свой протокол и формат передачи данных. Всё публикуемо. Это не больший и не меньший уровень. А вот мышек и клав на стм почти нет))
Хочу клавиатуру с кнопкой SLEEP.
И я тоже! 😆👌
Обещаю, "рас_берусь завтра "!
Расскажите по ом обязательно! 👍
@@NRelectronics Dog- ryliysь!
what?
👍🏼
👍
Как по мне, pvs - пустая трата времени.
Спасибо за видео!
Пожалуйста)
Вопрос по анализатору интересный, в некоторых конторах требуют полное соблюдение правил MISRA C/C++ для своего кода, поэтому бывает очень полезным.
соблюдение правил MISRA C/C++ это для эмбеддед устройств очень важный момент. Конечно, оно и так работать будет, а если будет иногда зависать, то можно и перезагрузиться. Но для эмбеддед это далеко не всегда приемлемо. Поэтому никаких memalloc, никаких арифметических операций с поинтерами и так далее. A PVS это просто инструмент. Есть и другие. А IAR так вообще есть встроеный MISRA checker.
Согласен с вами. В этом плане IAR хорош IDE. Даже Rust со статическим анализатором.
Рекламакорявая вышла. Зачем нужен VCP- да нафиг не нужно...
Нужен, очень нужен. И как это относится к этому видео?
@@NRelectronics Ну так если уж вставляете в виде, покажите зачем оно. Я не знал про него, и по факту до сих пор не знаю. Читать килограмм всякого и говорить что инженеры ST нифига не знают... мне оно не надо.
А вы сами развиваться не хотите? Чтобы в ролике абсолютно всё зачитано? Ничему не научитесь.