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

КОМЕНТАРІ • 60

  • @sergatmel8242
    @sergatmel8242 2 роки тому

    Спасибо, Интересно.
    Думаю что пригодиться.

    • @NRelectronics
      @NRelectronics  2 роки тому +1

      Пожалуйста. На Али можно джойстик купить небо, для ардуино, как раз для перемещения мыши подойдёт.

  • @CyrusSmith22
    @CyrusSmith22 2 роки тому

    👍 спасибо)

  • @user-dc9cp1yl3m
    @user-dc9cp1yl3m 7 місяців тому

    Интересно, а данным кодом можно перепрошить мышь? То есть, если например я захотел бы расширить функционал и добавить возможность взаимодействия с мышью через пользовательский интерфейс. Просто у меня есть старая мышь, а покупать новую плашку думаю стоит или нет. Я С пока что только изучаю и поэтому интересно можно или нет

    • @NRelectronics
      @NRelectronics  7 місяців тому +1

      Думаю что нет, обычно там микросхемы без перепрошивки.

  • @AndySm1973
    @AndySm1973 2 роки тому +1

    Спасибо за подробный разбор!
    P.S. А курс по "Си" не забыт?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Пожалуйста)
      Ни в коем случае не забыть! При моих занятиях рассказываю все равно больше и чаще ;)

  • @OpenFrimeTVcom
    @OpenFrimeTVcom 2 роки тому

    читал я в свое время как работает юсб. думаю епрст сколько ж там разных моментов. смотрел как это реализовано в авр. куча регистров в которые хрен пойми что писать. и смотрю в стм все оптимизировали. вопрос только в скорости работы) достаточно ли быстро работает на HAL?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Хал снизил порог вхождения достаточно хорошо. Я показал принцип, как и чем это делать. При реализации прерываниями по срабатыванию той или иной кнопки все будет чётче работать, да и к тому же у меня стояло 30 пикселей, это много но наглядно для видео, надо просто уменьшить. На парках можно сделать, но сложнее получается)

    • @seagsmtrashseagsmtrash1906
      @seagsmtrashseagsmtrash1906 2 роки тому

      Скорость чаще зависит от самой архитектуры решения. Например, DMA + INT всегда будет быстрее и эффективнее, чем просто опрос. А современные компиляторы делают разницу между CMSIS и HAL принебрежимо малой.

    • @NRelectronics
      @NRelectronics  2 роки тому

      От архитектуры реально скорость зависет, прямо хорошо. Согласен.

    • @seagsmtrashseagsmtrash1906
      @seagsmtrashseagsmtrash1906 2 роки тому

      @@NRelectronics Ну, если еще добавить о скорости, то не плохо бы делать динамический анализ буферов. У меня одно GUI падало, не часто, но падало. А ему шел постоянный поток данных с борды. Оказалось, когда графики на GUI выводились в большом разрешении, то в какой то момент входной буфер переполнялся и коммуникация падала.

    • @NRelectronics
      @NRelectronics  2 роки тому +1

      Вот поэтому отладка вещь достаточно сложная, многие на это часто забивают. Либо тестами не покрывают.

  • @TheAurumsan1
    @TheAurumsan1 2 роки тому +1

    Спасибо! Всё-таки хотелось бы больше про предыдущему CDC VCP - пример полноценного обмена с двух сторон. Т.е. со стороны ПК не через терминал, а с помощью открытия устройства и работы с устройством. Как я понял, через этот VCP можно работать гораздо быстрее, чем 115200, которую почти везде ставят, а большинство терминалов даже выше и не показывают, и не дают возможности.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Пожалуйста.
      Хорошо, сделаем и приём в одном из роликов между делом. Да, скорость может быть гораздо больше чем 115200, т. к. Full speed USB 2.0 это 12Mb/s, а это около 1,5 МБ/С т.е. очень быстро)) Терминалки разные бывают, можно поискать побыстрее.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Нашёл в TeraTerm можно работать на 950кб/с по com- порту.

    • @TheAurumsan1
      @TheAurumsan1 2 роки тому

      @@NRelectronics UARTы по проводам ведь соединяются, по сути с такими-же VCP-эмуляторами. Значит и по UARTам штатным можно скорость поднять до скорости ножек контроллера. На C# сегодня попробовал сделать терминал, так там хоть сотню мегабит указывай. А какая реальная скорость ножек контроллера?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Реальная ножек контроллера не может быть больше половины частоты внутренней шины на которой они внутри подключены. AHB...

    • @TheAurumsan1
      @TheAurumsan1 2 роки тому

      @@NRelectronics ну вот я посмотрел в мануале на F103CB - там первый UART на шине 72 МГц, а другие на 36 МГц и заявлено 4.5 Мбит (72 / 16) и 2.25Мбит соответственно.

  • @alexivanov4022
    @alexivanov4022 2 роки тому +1

    Спасибо! Очень ждём пример hid устройства клавиатуры с обработкой светодиодов Caps Num и Scroll.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Спасибо. Подумаю)
      Клавиатуру самому бы хотелось!))

    • @alexivanov4022
      @alexivanov4022 2 роки тому

      @@NRelectronics Я клавиатуру написал, но ни как не могу статусы светодиодов вычитывать... 🤔 Может глянете код?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Как подойду к клавиатуре посмотрю конечно.

  • @Embedded_Developer
    @Embedded_Developer 2 роки тому

    Как всегда #топ!

    • @NRelectronics
      @NRelectronics  2 роки тому

      Спасибо. Стараюсь, получается бывает по-разному)

  • @user-pp2hz7ic7h
    @user-pp2hz7ic7h 2 роки тому

    Материал по stm32MP157 будет ?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Есть интерес к чему именно в плане микропроцессоров?

    • @user-pp2hz7ic7h
      @user-pp2hz7ic7h 2 роки тому

      @@NRelectronics запуска приложений на openg

    • @NRelectronics
      @NRelectronics  2 роки тому

      Тогда пока нет. Не планирую.

  • @seagsmtrashseagsmtrash1906
    @seagsmtrashseagsmtrash1906 2 роки тому

    О! Попил он как то у меня крови. Пришлось делать составной девайс, описание дескриптора было очень не ординарным.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Расскажите подробнее о своём опыте.

  • @LebedevVictor
    @LebedevVictor 2 роки тому

    Вот бы на esp32 по блютусу как hid

    • @NRelectronics
      @NRelectronics  2 роки тому

      Там ведь своё SDK есть, всё так сложно?

  • @user-pu6xf7qy8s
    @user-pu6xf7qy8s 2 роки тому

    Мышь легко, а вот сенсорный экран это уже другой уровень. Использовал ИК-рамку китайскую и свой чип STM32F103C8. Это было целое искусство. Сначала найти как именно отправлять пакеты, несколько касаний, а потом уже обработка сигнала с фотодиодов. Сейчас развожу ИК-рамку под свой проект. Проект так же собирал через CubeMX

    • @NRelectronics
      @NRelectronics  2 роки тому

      Рамки также имеют свой протокол и формат передачи данных. Всё публикуемо. Это не больший и не меньший уровень. А вот мышек и клав на стм почти нет))

  • @serggorod1423
    @serggorod1423 Рік тому

    Хочу клавиатуру с кнопкой SLEEP.

  • @serggorod1423
    @serggorod1423 Рік тому

    Обещаю, "рас_берусь завтра "!

  • @user-wb1ow1pk9v
    @user-wb1ow1pk9v 2 роки тому

    👍🏼

  • @rwkostya
    @rwkostya 2 роки тому +2

    Как по мне, pvs - пустая трата времени.
    Спасибо за видео!

    • @NRelectronics
      @NRelectronics  2 роки тому

      Пожалуйста)
      Вопрос по анализатору интересный, в некоторых конторах требуют полное соблюдение правил MISRA C/C++ для своего кода, поэтому бывает очень полезным.

    • @seagsmtrashseagsmtrash1906
      @seagsmtrashseagsmtrash1906 2 роки тому

      соблюдение правил MISRA C/C++ это для эмбеддед устройств очень важный момент. Конечно, оно и так работать будет, а если будет иногда зависать, то можно и перезагрузиться. Но для эмбеддед это далеко не всегда приемлемо. Поэтому никаких memalloc, никаких арифметических операций с поинтерами и так далее. A PVS это просто инструмент. Есть и другие. А IAR так вообще есть встроеный MISRA checker.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Согласен с вами. В этом плане IAR хорош IDE. Даже Rust со статическим анализатором.

  • @Kotofot24
    @Kotofot24 Рік тому

    Рекламакорявая вышла. Зачем нужен VCP- да нафиг не нужно...

    • @NRelectronics
      @NRelectronics  Рік тому

      Нужен, очень нужен. И как это относится к этому видео?

    • @Kotofot24
      @Kotofot24 Рік тому

      @@NRelectronics Ну так если уж вставляете в виде, покажите зачем оно. Я не знал про него, и по факту до сих пор не знаю. Читать килограмм всякого и говорить что инженеры ST нифига не знают... мне оно не надо.

    • @NRelectronics
      @NRelectronics  Рік тому

      А вы сами развиваться не хотите? Чтобы в ролике абсолютно всё зачитано? Ничему не научитесь.