USB OTG Umschalten Host / Device zu Laufzeit

Gast #6843842
Lesenswert?

Hallo Zusammen,

ich wollte mich erkundigen ob jemand die USB-OTG Funktionalität mit dem 
STM32 bereits realisiert hat?

Worum es geht:
ich versuche gerade bei dem STM32F411 eine Umschaltfunktion zwischen USB 
Host (MSD Class) auf USB Device (CDC Class) zu realisieren.
Nach dem Start wird das STM32F411 als Host (Mass storage device) 
initialisiert. So kann ich Daten vom USB Stick lesen. Das funktioniert 
einwandfrei. Danach schalte ich (zu Laufzeit) das USB als Device (CDC). 
So kann ich Daten als eine Serielle Schittstelle senden und empfangen. 
Das funktioniert auch ohne jegliche Problemen.
Wenn ich versuche, aber (zu Laufzeit), das USB umgekehrt vom Device auf 
Host zurück zu schalten (mit sämptlichen Initialisierungsvorgängen), 
lauft das USB Peripherie nichts mehr - das USB Stick wird nicht erkannt.

Bei USB OTG soll die Umschaltung eingentlich in beide Richtungen 
funktionieren ?! Was mache ich da grundsätzlich falsch ?

Im voraus - Danke für eure Tipps !!!

Mit freundlichen Grüßen

Andrey
#6845752
Lesenswert?

Andrey schrieb:
> ich versuche gerade bei dem STM32F411 eine Umschaltfunktion zwischen USB
> Host (MSD Class) auf USB Device (CDC Class) zu realisieren.

Wozu? Das geht gleichzeitig wenn man einen IAD (Interface Association 
Deskriptor) benutzt. BTDT.

Wird von allen modernen OS unterstützt, IIRC war nur Win XP <SP3 die 
Ausnahme.

Umschalten von USB Konfigurationen ist ansonsten extrem lästig. Der PC 
re-enumeriert nur wenn sich der Device Deskriptor auch ändert.

Anmerkung: Bei meiner "Stick" (Mass storage) Implementation hatte ich 
ein Wechselmedium emuliert, damit der PC auch mitbekommt wenn sich was 
via CDC ändert. Ansonsten cached der das USB Laufwerk.
#6845758
Lesenswert?

Ups, falsch gelesen. Irgenwie hatte ich das so geparst das STM den Stick 
emulieren und nicht als Host ansprechen soll. Bitte meine obige Antwort 
ignorieren.

Was ist eigentlich angeschlossen wenn Du zur "Laufzeit" umkonfigurierst? 
Zwei Hosts am selben Bus tun nicht. -> Schaltplan

Ansonsten: Oszi mit Aufzeichnungsfunktion. PulseView hat mir mal bei USB 
Problemen sehr geholfen.

Eventuell stimmt irgendein Timing nicht, oder Du musst dem Stick einfach 
neu Strom geben - bei OTG sollte die 5V Versorgung ja schaltbar sein...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren