Экспериментальная поддержка HID и MIDI

Rogerclark
Пн 18 июля 2016 г. 8:22 утра
Ребята

Подписывался моей публикации @madias, я попытался объединить некоторую экспериментальную клавиатуру, мышь, джойстик и MIDI в филиале репо F1 (обновлено отсюда https: // github.com/libarra111/arduino_stm32)

Видеть

https: // github.com/rogerclarkmelbourne/ ... Адмидихид

Я только протестировал Maple Mini в данный момент, и я посмотрю на синюю таблетку (универсальный F103c), как только смогу.

Какое USB -устройство перечисляется, как это управляется через меню в IDE. Я знаю, что это не идеально, но это то, что репозиция Libarra111 делает это.

Я думаю, что единственная альтернатива меню - не включать серийный USB по умолчанию и, возможно, использовать сериал.Begin (), чтобы включить USB -серийный и спрятать.начинать (), чтобы включить спрятанность
(Обратите внимание, что в настоящее время это отдельные устройства, вы можете иметь последовательные и скрытые и т. Д.)

Мадиас
Вторник 19 июля 2016 г. 14:21
Спасибо, Роджер!
Дополнительная информация:
После того, как плата прошивается с другим USB_HID, чем «серийный», вам нужно попасть в «режим вечного загрузчика» для следующей загрузки кода, потому что «серийный» больше недоступен.
Это не волшебство для Mini, но на индивидуальных досках это может быть проблемой (those без кнопок..)
Информация № 2:
Реализация MIDI немного «грубая» в этом репо, потому что Libarra111 принял очень старую версию моей «миди-стандартилон-репо» (это была моя вина, потому что я никогда не синхронизировал ее), поэтому, если кто-то хочет иметь дело С Sysex и другими вещами, выходящими за рамки MIDI Basic, это может стоить взглянуть на мой более настоящий. К сожалению, у меня нет времени, чтобы внести все изменения в этот «новый» usb_hid Repo. Видеть > https: // github.com/madias123/arduino_stm32_midi_project

Мадиас
Вторник 19 июля 2016 г. 14:28
Rogerclark написал: Я думаю, что единственная альтернатива меню - не включать серийный USB по умолчанию и, возможно, использовать сериал.Begin (), чтобы включить USB -серийный и спрятать.начинать (), чтобы включить спрятанность
(Обратите внимание, что в настоящее время это отдельные устройства, вы можете иметь последовательные и скрытые и т. Д.)

Rogerclark
Вторник 19 июля 2016 г., 21:13
Re: название филиала в GitHub

Это надеется, что это будет просто временное имя, и я мог бы слияние обратно в мастер.

Но я думаю, что может быть какое -то сопротивление этому :-(

Жаль, что у IDE нет способа иметь мастер -заголовок, связанный с эскизом, который позволил бы #Defines быть настроенным

Это решает множество проблем, включая канал SPI, а также этот USB -материал

Rogerclark
Чт 21 июля 2016 г., 23:39
Интересно, будут ли люди волноваться, если я объединит эту ветку в Мастера.

Или, возможно, изменил его так, чтобы серийный USB не был включен по умолчанию, и вам нужно вызывать сериал.начинать(); Чтобы включить это

Я подозреваю, что многие наброски сломаются, если я снял призыв к сериалу.Начните, который вызывается кодом запуска.

Martinayotte
Пт 22 июля 2016 г. 14:11
Лично я всегда делаю сериал.Начните () себя в настройке () моих эскизов.

Мадиас
Пт 22 июля 2016 г., 15:20
Rogerclark написал:Интересно, будут ли люди волноваться, если я объединит эту ветку в Мастера.

Или, возможно, изменил его так, чтобы серийный USB не был включен по умолчанию, и вам нужно вызывать сериал.начинать(); Чтобы включить это

Я подозреваю, что многие наброски сломаются, если я снял призыв к сериалу.Начните, который вызывается кодом запуска.

Ахулл
Пт 22 июля 2016 г. 15:22
Мадиас написал:Rogerclark написал:Интересно, будут ли люди волноваться, если я объединит эту ветку в Мастера.

Или, возможно, изменил его так, чтобы серийный USB не был включен по умолчанию, и вам нужно вызывать сериал.начинать(); Чтобы включить это

Я подозреваю, что многие наброски сломаются, если я снял призыв к сериалу.Начните, который вызывается кодом запуска.

Rogerclark
Пт 22 июля 2016 г., 8:44 вечера
Хорошо.

Мне нужно будет проверить, меньше ли кода, если сериал.Начало не называется.

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

Сложная часть в том, как добавить все эти функции, чтобы они не вызывали вздутие кода для людей, которые просто хотят базовую систему без USB

Rogerclark
Сб 23 июля 2016 г., 2:29
Я быстро посмотрел на это, используя выбор в меню USB, чтобы увидеть, сколько вспышки и оперативной памяти различные типы использования USB

Нет USB
Флэш: 5564
ОЗУ: 1720

Сериал
Вспышка: 11 348
ОЗУ: 2,560

Миди
Вспышка: 10 876
ОЗУ: 2384

Клавиатура + мышь + джойстик
Вспышка: 11 088
ОЗУ: 2,568

Значения связаны с тем, что в файлах USBMIDI и т. Д. В них есть #ifdef, которые маскируют весь свой код, если их конкретный #Define не установлен.

Но. Если я просто удалю звонок в сериал.begin () он вообще не составляет в USB, так что... Линкер, похоже, выполняет свою работу.

Однако, если я взломал #Defines, чтобы все типы USB были определены сразу, он собирает и ссылается, Но ...

В настоящее время существует проблема, потому что похоже, что все 3 типа USB -устройств определяют те же глобальные переменные, которые используются в основном USB -коде

Так что даже если я позвоню Мидиусбу.начинать(); В эскизе плата все еще перечисляется с характеристиками сериала Maple

Я думаю, что это может быть связано с тем, что каждый из файлов MIDI определяет статическую переменную, называемую config_descriptor, а также device_descriptor, и я удивлен, что компилятор не смог этого скомпилировать, поскольку я не вижу, как все это не в том же масштабе одновременно.

Само минимум будет переименовать их в что -то конкретное для каждого из USB -устройств E.g usbmidi_config_descriptor и т. Д

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

Rogerclark
Сб 23 июля 2016 г., 2:34
Я нашел один большой недостаток с отключением USB Serial по умолчанию.

Если USB Serial отключен, у IDE нет возможности сбросить плату обратно в загрузчик :-( , Таким образом, вы должны вручную сбрасывать доску каждый раз.

Поэтому я не думаю, что у нас может быть возможность NO USB при использовании загрузчика, и в идеале нам нужно композитное устройство, которое содержит Serial + Другое запрашиваемое устройство, запрашиваемое.
Но это потребовало бы, чтобы каждое USB -устройство было композитным устройством, которое потребует большого переписывания - и я ничего не знаю о USB, и у меня нет времени, чтобы внести такие большие изменения ;-(

Мадиас
Сб 23 июля 2016 г., 21:13
ОК, это определенно "нет, иди".
Таким образом, мы можем взять лучший компромисс и оставить его, как и Libarra111: с меню. Таким образом, мы также можем принять решение не использовать серийный/USB вообще.

Мадиас
Сб 23 июля 2016 г., 21:21
...и примерно MIDI Flash/Size по сравнению с сериалом:
USB MIDI составляет около 99%, так же, как USB -сериал, поэтому это заставило бы меня задуматься, есть ли много различий (я думаю, что USB MIDI будет немного больше из -за буфера Sysex, но этот буфер Sysex не реализован в этой версии Только в моем).

Rogerclark
Сб 23 июля 2016 г., 21:48
Матиас

Я не смотрел на реализацию для MIDI против сериала, но я согласен, я ожидаю, что Миди будет больше, чем сериал.

Возможно, у сериала есть какой -то неэффективный код (это довольно старый код)

Саймонф
Пн 25 июля 2016 г. 1:45
Rogerclark написал:Я нашел один большой недостаток с отключением USB Serial по умолчанию.

Если USB Serial отключен, у IDE нет возможности сбросить плату обратно в загрузчик :-( , Таким образом, вы должны вручную сбрасывать доску каждый раз.

Поэтому я не думаю, что у нас может быть возможность NO USB при использовании загрузчика, и в идеале нам нужно композитное устройство, которое содержит Serial + Другое запрашиваемое устройство, запрашиваемое.
Но это потребовало бы, чтобы каждое USB -устройство было композитным устройством, которое потребует большого переписывания - и я ничего не знаю о USB, и у меня нет времени, чтобы внести такие большие изменения ;-(

Rogerclark
Пн 25 июля 2016 г. 1:49
@Simonf

Да.

Я не был уверен, имел ли код, с которым связывал Матиас (и который я объединил вручную в новую ветку), имел решение для этого, но это не

Я мог бы объединить экспериментальную филиал в мастере, но мне интересно, сколько людей захотят его использовать, и сколько людей будут иметь проблемы с доской, не сброшенной до загрузки - так как они не понимали, что им придется делать это вручную, если У них нет сериала USB

Саймонф
Пн 25 июля 2016 г., 2:12
Я бы хотел поддержку клавиатуры, но мне тоже нужен сериал. В настоящее время я использую 2 Sparkfun Micros для этого проекта, он будет работать с синей таблеткой, но мне нужен интерфейс клавиатуры и последовательный порт для его программы.

Невозможность легко программировать была бы недостатком для большинства. Я использую клон stlink v2 один из лучших фунтов стерлингов.50 Я потратил.

Я мог бы, с другой стороны, просто написать драйвер сериала на клавиатуру для приложения Windows, но в настоящее время они могут просто открыть блокновую вдову и пройти тест, но он набирает всю информацию о состоянии. Попытка заставить инженеров использовать термит на сайте была бы кошмаром.

Rogerclark
Пн 25 июля 2016 г., 3:43
@Simonf

В идеале нам нужно все, чтобы быть композитным устройством, чьи дескрипторы устройства строятся на лету, зависит от того, как начинается устройства, которые вы называете () на

Или, возможно, есть новый глобальный Instanced, называемый USB, чтобы мы могли сделать USB.Begin (Serial | MIDI) или USB.начинать (серийный | Спрятать | джойстик) и т. Д

Мадиас
Пн 25 июля 2016 г. 12:27
Как я помню, MIDI + Serial был бы проблемой, потому что код MIDI HID является грубым взломом и обменен/клонирует многие из серийных кодов HID (я уверен с одинаковыми переменными), поэтому безразличия неизбежны. Но MIDI - это особый интерес, поэтому люди, имеющие дело с MIDI и STM32, должны знать, что они делают. Также меньше смысла использовать MIDI и сериал одновременно, кроме фазы программирования. Но на этом этапе вы можете использовать режим вечного загрузчика или просто сделать ручной сброс.
Я думаю, что больше людей будут заинтересованы в вещах клавиатуры/мыши/джойстика. Есть также последний режим скрытия, который мы забыли: массовое хранилище. Некоторое время назад я мечтал обновить прошивку на уже сделанных устройствах (для друзей, семьи, клиентов..) просто с перетаскиванием файла&Drop (например, St Link 2.1)
Хорошо, нам нужен USB-гуру здесь! :)

Rogerclark
Пн 25 июля 2016 г., 21:47
Матиас

Есть немного массового кода хранения, я постараюсь найти его, так как я уверен, что посмотрел на него раньше.

Я думаю, что это библиотека, а не основной код.

И да... Нам нужен эксперт по USB ;-)

Я помню, как кто -то публиковал с большим количеством информации об USB, но я не могу вспомнить, кто это был.