STM32 „USB Device“ vs. „USB OTG HS“ – was ist der Unterschied?

Ich habe kürzlich die stm32-App für die MCU-Suche heruntergeladen und herausgefunden, dass zum Beispiel STM32F429 "NO" in "USB Device" -Peripherie hat, während es "YES" in "USB OTG FS" und "USB OTG HS" sagt. Was ziemlich überraschend ist, da STM32F429 als USB-Gerät voll funktionsfähig ist, dh es unterstützt alle Bibliotheken und USB-Klassen.
Bei einigen anderen MCUs ist "USB Device" angegeben, z. STM32L052Geben Sie hier die Bildbeschreibung ein

Dann habe ich versucht, CubeMX zu überprüfen und herausgefunden, dass es USB_Device-Peripheriegeräte in ihrer Suche gibt (und STM32F429 enthält es wieder nicht, USB-Sachen werden über OTG erledigt).

Es kann eine ziemlich einfache Frage sein, da ich vermute, dass USB-Gerät einfach dasjenige bedeutet, das OTG nicht unterstützt, aber ich bin mir nicht sicher, normalerweise verwenden MCUs sowieso OTG (und außerdem gibt es nur eine Bibliothek, warum also "NEIN" in USB angeben peripher). Ich konnte keine Informationen darüber in Google oder in der CubeMX-Dokumentation finden.

Ich bin nicht wirklich besorgt darüber, da USB OTG HS mit der Bibliothek gut zu funktionieren scheint, aber ich wundere mich über die Terminologie.

Ich verstehe, dass das ST-Forum wahrscheinlich ein besserer Ort für diese Frage ist, aber viele Themen dort werden einfach nicht beantwortet oder beantwortet, nachdem 2 Jahre vergangen sind. :)

Danke.

Ich habe diese Erfahrung mit den ST-Foren gemacht, also kann ich mitfühlen ...
Was das ST-Forum betrifft, so hat es anscheinend nicht nur das Forum, sondern auch per E-Mail ein Ticket über einen möglichen Fehler in einer ihrer Dokumentationen und USB-Beispiele eröffnet, aber niemand hat sich (noch) die Mühe gemacht, mir zurückzuschreiben. Was wirklich nervig ist.

Antworten (1)

Ihr Gedanke ist richtig: Die Geräte, die in der Spalte USB-Gerät mit "Ja" markiert sind, können nur als USB-Gerät fungieren. Sie unterstützen die OTG-Spezifikation nicht und können auch nicht als Host fungieren.

Aber natürlich kann jedes USB-OTG-fähige Gerät andererseits als einfaches Gerät fungieren. Wer mehr kann, kann weniger.

Sie identifizieren sie auf diese Weise, weil das „USB-Gerät“, „OTG FS“ und „OTG HS“ drei verschiedene IP-Kerne in den Chips sind. Sie alle haben ihre besonderen Fähigkeiten/Spezifikationen und erfordern möglicherweise unterschiedliche Treiber (wie Sie bemerkt haben).

Um zusammenzufassen:

  • USB-Gerät: kann nur als Gerät mit voller Geschwindigkeit (12 Mbit/s) fungieren
  • USB OTG FS: kann als Gerät/Host/OTG-Peripheriegerät mit voller Geschwindigkeit (12 Mbit/s) fungieren
  • USB OTG HS: Kann als Gerät/Host/OTG-Peripheriegerät mit voller Geschwindigkeit (12 Mbit/s) oder hoher Geschwindigkeit (480 Mbit/s) fungieren. Beachten Sie, dass der HS-Kern für [die große Mehrheit der]* ST-MCUs einen externen ULPI-PHY-Chip benötigt, um tatsächlich hohe Geschwindigkeiten zu unterstützen. Die On-Chip-PHY kann nur mit voller Geschwindigkeit arbeiten. ...Ja, es ist sehr verwirrend.

* Bearbeiten : Es scheint, dass ST endlich einige Anstrengungen unternommen hat, um einen On-Chip-Hochgeschwindigkeits-PHY auf einigen ihrer neuesten MCUs zu integrieren (genauer gesagt: einige der STM32F7x3- und STM32F730-Versionen im Moment). Es gibt jedoch keine bestimmte Spalte, die diese Funktion in ihrer Geräteauswahltabelle eindeutig angibt, was wiederum zur Verwirrung beiträgt. Sie müssen sich die Datenblattdetails ansehen.

Ok, danke, wollte es nur nicht aus meinem eigenen Kopf hören :)
In diesem Zusammenhang habe ich ein iMX-System, das sowohl "usb host" als auch "otg fs" hat, wodurch es zwei nutzbare USB-Ports hat - aber sie erfordern unterschiedliche Treiber! Etwas Ähnliches kann für ST gelten - gleiche Funktionalität, die andere Software erfordert.
Ich bin mir sicher, dass sie Geräte haben oder in der Vergangenheit hatten, die mehrere Peripherieanschlüsse mit unterschiedlichen Funktionsstufen hatten. Dies ist eine eindeutige Art, die Merkmale für eine Reihe von Teilen aufzulisten (oder es schien in der Vergangenheit so).
Hey! Könntest du etwas erweitern? Wenn ein Mikrocontroller USB OTG unterstützt, könnten Sie theoretisch zwei USB-Anschlüsse an den Chip anschließen: 1 als USB-OTG-Host (z. B. zum Anschließen einer Tastatur) und der andere USB als Gerät? Gibt es einen Begriff, um dieses Verhalten zu beschreiben?
@Ness Wenn der Chip nur den USB-OTG-Block einbettet, nein, das können Sie nicht. Aber viele High-End-MCUs enthalten sowohl das USB-Gerät als auch die USB-OTG-Blöcke. Dann können Sie beide gleichzeitig verwenden und haben zwei unabhängige Ports auf Ihrer MCU: einer fungiert als Gerät und der andere als Host, ja. Überprüfen Sie die Datenblätter.