Forum: Mikrocontroller und Digitale Elektronik USB OTG Umschalten Host / Device zu Laufzeit


von Andrey (Gast)


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

von bronko (Gast)


Lesenswert?

Hi.

Nimmst du auch die Versorgungsspannung weg? Ich glaube das ist zur 
Neuinitialisierung nötig.

Was passiert wenn du mit CDC startest und dann auf MSD wechselst?

Gruß

von Jim M. (turboj)


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.

von Jim M. (turboj)


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...

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
Noch kein Account? Hier anmelden.