Hallo zusammen. Ich bin dabei mir ein Midi Control Board zu bauen. Mehrere Encoder Sollen Midi Signale über USB an den Rechner übermitteln. Ich habe bisher relativ viel mit AVR gemacht. Ich würde nun gerne mal etwas mit ST entwickeln. Da ich aber noch ein Neuling in ST bin habe ich vorab ein paar Fragen: - Kann jeder STM32 Midi? - Ich nutze als Pin Konfiguration CubeMX, wie muss ich den USB Modus einstellen? - Muss ich bei der Clock-Konfiguration etwas beachten? Vielen Dank für eure Hilfe! LG Niklas
Wenn du nicht unbedingt auf den F4 festgelegt bist, hier ein Beispiel: Beitrag "STM32 USB-MIDI" Das ist aber nicht so einfach auf den F4 portierbar, da der eine komplett andere USB Hardware hat. Wenn es Cortex M4 sein soll würden sich aber die stm32F3xx anbieten, die haben (fast) die gleiche USB Hardware. Niklas Fischbach schrieb: > - Kann jeder STM32 Midi? > - Ich nutze als Pin Konfiguration CubeMX, wie muss ich den USB Modus > einstellen? > - Muss ich bei der Clock-Konfiguration etwas beachten? So wie du die Fragen stellst, ist absehbar dass das ein steiniger Weg für dich wird. Such dir besser ein fertiges Projekt auf GitHub das du nur zu modifizieren brauchst.
Hallo Niklas, zusätzlich zu dem, was temp geschrieben hat, lässt sich noch anmerken, dass Du Dir das eigentlich nur dann antun musst, wenn Du eine Menge Zyklen über hast ODER dein Board noch komplett andere Dinge neben MIDI machen muss. Der einfachste, schnellste und billigste Weg zum MIDI device geht über einen Arduino Due (Due weil native USB interface). Suche Arduino +USBMIDI (oder MIDIUSB) für Quellen, und Du hast in weniger als einem Manntag (und +- 35 EUR für den Arduino) ein funktionsfähiges MIDI device, bei dem Du "nur noch" Eingänge brücken musst, um MIDI Kommandos zu erzeugen (aber wie Du sicher selber weisst, ist die Kontaktierung ja unabhängig von der zu Grunde liegenden MIDI Hardware immer der kritische Pfad bei MIDI devices). Da der Arduino über den native USB port gepowert werden kann, brauchst Du dann noch nicht mal eine externe Spannungsversorgung. Hätt ich nie gedacht, dass ich mal für Arduino in die Bresche springe, aber es ist wirklich so einfach...
ein ähnliches Thema gab es hier vor kurzem, da ging es aber eher um die andere Richung, Midi lesen, aber das ist im Prinzip egal. Mein Vorschlag wieder Mbed, in der Doku ist ein fertiges Beispiel um Midi auszugeben. Für Noten, aber genauso geht z.B. Command Control. https://os.mbed.com/docs/mbed-os/v6.9/apis/usbmidi.html Es ist egal ob F1..H7 oder ein Kinetis oder NXP, um die USB Implementierung kümmert sich das OS und die Anwendung sieht immer gleich aus. Schade das sich hier jeder mittlerweile mit HAL quälen will. Wenn man das so will geht es auch, beim Clock muss man aufpassen das USB seine 48 MHz bekommt. Da USB Midi nur auf low level USB aufsetzt geht das mit jedem Controller der nativ USB kann.
Johannes S. schrieb: > Schade das sich hier jeder mittlerweile mit HAL quälen will. Hast du dir die mbed Sourcen mal angesehen? Da geht ohne HAL bei STM32 nichts. Man kann es auch anders ausdrücken, fetter geht es kaum. Ich schätze mal mindestens einen Faktor 10 zu meinem Beispiel oben. Und ja, ich weiß, heute nimmt man einfach den fettesten Controller den man kriegen kann und alles ist gut. Jedenfalls solange in den Untiefen der ganzen Lib's keine Fehler schlummern.
temp schrieb: > Hast du dir die mbed Sourcen mal angesehen? Da geht ohne HAL bei STM32 > nichts. ja, habe ich. Weil es HAL gibt konnte ST das so schnell für viele MCU portieren. Und man kann HAL Code verwenden für Sachen die das OS nicht abdeckt, zu Lasten der Portabilität natürlich. temp schrieb: > Das ist aber nicht so einfach auf den F4 portierbar, da der eine > komplett andere USB Hardware hat. das ist der Haken an speziellen Implementierungen. Der F4 kann ja noch mehr als USB, es kann also noch mehr Gründe geben den zu benutzen. Und bei >= 512 kB Flash ist doch wohl eher die Entwicklungszeit relevant als ein paar kB im Codesegment zu sparen. Auf einem F103 läuft das Ganze auch, dann muss man eben auf Luxus wie RTOS verzichten. Was für einen Midi Controller mit ein paar Encodern wahrscheinlich auch nicht nötig wäre. Eine Encoder Komponente mit dem Algorithus aus dem Forum habe ich auch mal gebaut, ist mit einer Zeile instanziiert, ohne Codegenerator. https://github.com/JojoS62/Encoder/blob/master/Encoder.cpp
Das geht- es gibt dort auch komplette modulare Lösungen. http://www.ucapps.de/mbhp_core_stm32f4.html
Johannes S. schrieb: > Auf einem F103 läuft das Ganze auch, dann muss man eben auf Luxus wie > RTOS verzichten. Was für einen Midi Controller mit ein paar Encodern > wahrscheinlich auch nicht nötig wäre. RTOS ist auch nicht für alles die Lösung. Und das nackte mbed UsbMidi Sample belegt 38kb im Flash. Das passt noch auf ein BluePill Board. Aber wehe man muss in den MBED Quellen mal nach Fehlern suche und muss mit -O0 übersetzten. Da werden es schon knapp 70k und einem F103C8 platzt der Kragen. Das Hauptproblem dabei sehe ich aber auch in den Flash-Größen bei STM. Die kleinen Gehäuseformen (32pin 48pin) sind häufig nicht so üpping ausgestattet und da wird es mit mbed schnell knapp. z.B. ist der stm32F042 im 32pin Gehäuse mit 32k Flash am Ende. Aber egal, das muss jeder für sich und sein Projekt selbst entscheiden. Die minimalistische Variante hat genauso seine Vorteile und Nachteile wie der mbed-Hammer. Für blutige Anfänger würde ich sogar empfehlen ganz auf USB-Midi zu verzichten. Ein billiges USB-Midi-Interface ist nicht größer als die USB-Buchse und damit preiswerter als eine Stunde Arbeitszeit. https://www.thomann.de/de/swissonic_midiconnect_2.htm Damit kann man sich erst mal in sein Projekt einarbeiten. Ein weiterer großer Vorteil ist, dass nicht ständig die USB-Enumeration abläuft zwischen 2 Debug-Durchläufen. Die PC-Software kann damit auch mit geöffnetem Midi-Interface stehen bleiben. Da spart bei der Entwicklung viel Zeit und Arbeit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.