USB-Host-Modus auf uC, um kleine vordefinierte Sätze von USB-Geräten zu unterstützen

Anscheinend ist einer der Hauptgründe, warum die meisten 8-Bit/16-Bit-uCs den Betrieb im USB-Hostmodus nicht unterstützen, der ziemlich teure Prozess namens "Enumeration". Nach meinen Recherchen scheint dieser Schritt notwendig zu sein, wenn der Host die mit ihm verbundene Geräteklasse identifizieren muss, einen bestimmten Anbieter/ein bestimmtes Gerät identifizieren und dann den entsprechenden Treiber laden muss, um die Kommunikation zwischen dem Host-Prozessor und dem Gerät zu handhaben. Der andere Grund ist die Notwendigkeit, die Geräte mit ausreichend Strom zu versorgen.

Nun, wenn der "ausreichende Strom" kein großes Problem ist, sagen wir, weil mein uC (das ich als USB-Host fungieren möchte) mit Strom versorgt wird (über eine gut bewertete, geregelte Steckdose) und es nur 3 USB-Geräte mit gibt was es zum Beispiel funktionieren muss --

  1. Gerät, das proprietäre Seriell über USB verwendet
  2. Gerät (Sensor), das USB-HID verwendet
  3. Spezifischer Anbieter/Modell USB2.0 Bluetooth2.1-Gerät

über sagen wir ein USB-Hub-Gerät? In der Tat, wenn es ein Powered Hub sein kann, dann ist die Frage nach "ausreichend Strom" sowieso damit beantwortet.

Ist es möglich, sich mit etwas wie Atmel ATmega32U2 zu begnügen? Die Idee ist, anstatt Geräte aus einer großen Liste möglicher Geräte aufzuzählen, weiß ich im Voraus, welche Geräte angeschlossen sind und wie sie angeschlossen sind? Was könnten die Vorbehalte sein, wenn dies möglich wäre? Wenn jemand solche Versuche kennt (erfolgreich oder nicht), würde ich gerne davon hören.

Es gibt genügend Möglichkeiten, den Host-Modus mit einem Mikrocontroller bereitzustellen, der versucht, dies mit etwas zu tun, das nicht für die Rolle vorgesehen ist, "es auf die harte Tour zu tun". Suchen Sie nach Geräten mit USB OTG" = "On the Go"-Fähigkeit. Diese können je nach Bedarf entweder Host- oder Slave-Fähigkeit bereitstellen.
Nun, dann fügen Sie hinzu: "4. USB Hub", denn das ist ein weiterer Gerätetreiber, den Sie benötigen. Und mit einem Bluetooth-Gerät zu sprechen, ist sicherlich ein weiteres Projekt.

Antworten (2)

Es gibt genügend Möglichkeiten, den Host-Modus mit einem Mikrocontroller bereitzustellen, der versucht, dies mit etwas zu tun, das nicht für die Rolle vorgesehen ist, "es auf die harte Tour zu tun".

Suchen Sie nach Geräten mit USB OTG" = "On the Go"-Fähigkeit.
Diese können je nach Bedarf entweder Host- oder Slave-Fähigkeit bereitstellen.


Wenn "... so etwas wie Atmel ATmega32U2 ... " einen Atmel AT90USB64 enthält , dann ja.

dh die Verwendung eines der verfügbaren Teile, die diese Fähigkeit haben, ist der "einfache Weg". Es gibt genügend Möglichkeiten, den Host-Modus mit einem Mikrocontroller bereitzustellen, der versucht, dies mit etwas zu tun, das nicht für die Rolle vorgesehen ist, "es auf die harte Tour zu tun". Suchen Sie nach Geräten mit USB OTG" = "On the Go"-Fähigkeit. Diese können je nach Bedarf entweder Host- oder Slave-Fähigkeit bereitstellen.

ICs mit irgendeiner Art von OTG-Fähigkeit

Günstigster in 1 auf Lager bei Digikey:

AVR-Mikrocontroller mit USB-OTG-Fähigkeit 8,43 $/1 Digikey auf Lager.

PIC OTG & Host-fähiger Mikrocontroller $4.22/1 auf Lager Digikey

Das PIC-Gerät ist auch der billigste Host-/OTG-Mikrocontroller aller Art, der von Digikey in 1 Stück auf Lager erhältlich ist.

Können Sie auch etwas von dem lehren, was OTG ist, anstatt nur eine Bank mit Orten, an denen Sie Dinge kaufen können?
Danke @Russell. Das sind einige gute Optionen. Mir war nicht bewusst, dass USB-OTG- oder USB-Host-Optionen auf 8-Bit-uCs verfügbar sind. Ich wünschte, die AVRs wären in niedriger Pinzahl und in der gleichen Preisklasse wie die PICs erhältlich. Die PICs als solche scheinen dem, was ich brauche, sehr nahe zu kommen, wollte aber sehen, ob eine V-USB-ähnliche SW-Bitbang-Lösung möglich wäre. Wahrscheinlich nicht.
Beim Lesen der PIC-Dokumentation rund um OTG wurde mir klar, dass die OTG-Implementierung (oder Standard, nicht sicher) keine vollständige "Host" -Implementierung ist, dh es gibt einige Einschränkungen / Vorbehalte. Es könnte zwar immer noch sehr gut meine Bedürfnisse erfüllen, aber ich wollte diese Tatsache hervorheben.
@icarus74: Möchten Sie Beispiele für solche "Einschränkungen/Vorbehalte" teilen?
@pfalcon, ich erinnere mich nicht genau, was sie waren (schon eine Weile her), aber ich erinnere mich, dass das Datenblatt selbst die Einschränkungen auflistete, also wäre das ein guter Ort, um nachzusehen.
@Kortuk - Ich bin mir Ihrer Ziele bewusst, ABER ich denke, das ist ein bisschen unfairer Kommentar. NB!: Ich bin nicht verärgert/besorgt/aufgeregt/... - denke nur, dass die Antwort besser ist, als es scheint. Mein ursprünglicher Kommentar enthielt eine einzeilige Zusammenfassung - ich habe sie für diejenigen, die nicht eine ganze Seite auf einmal lesen können, an den Anfang meiner Antwort kopiert :-). DANN bezieht sich mein Atmega 64-Rat auf ein bestimmtes Produkt, das seiner Atmega 32-Spezifikation nahe kommt. DANN gibt es eine Liste ALLER Mikrocontroller, die Digikey diese OTG-Liste in der Auswahlhilfe verkauft. Das ist per se keine Einkaufsliste – Digikey ist zufällig eine fantastische Datenquelle. ...

Es gibt eine SW-basierte Implementierung des USB-Host-Controllers auf Atmega uControllers

SIAM32 USB HC (Software Implementierter Atmel Mega32 Universal Serial Bus Host Controller) https://courses.cit.cornell.edu/ee476/FinalProjects/s2007/blh36_cdl28_dct23/blh36_cdl28_dct23/

http://ibm-cvut.felk.cvut.cz/~usbhatm07/presentation/presentation.pdf