Ist es möglich, einen Host auf stm32 (ohne Hardwareunterstützung) nur mit dem Programmcode zu implementieren, um Daten auf den USB-Stick zu schreiben? Ich habe im Internet keine Informationen zu diesem Thema gefunden. Es gibt ein Implementierungsgerät, aber keinen Host. Ich studiere die USB-Spezifikation für die Antwort, aber ich verstehe sie immer noch nicht gut.
Warum kann die Host-Funktion nicht mit reiner Gerätehardware implementiert werden? Denn der USB ist bezüglich Host und Devices nicht symmetrisch.
Auf der Geräteseite besteht die USB-Funktion darin, das grundlegende USB-Protokoll namens "SIE", Serial Interface Engine, zu unterstützen. Diese Engine beinhaltet die Gerätefähigkeit, Host-Anfragen zu EMPFANGEN, beginnend mit "Standard-Pipe", und richtig zu antworten, indem Daten mit einer ACK-Antwort abgerufen werden, oder Daten gesendet werden und auf Host-ACK gewartet wird, um Transaktionen abzuschließen. Aufgrund von USB-Timing-Beschränkungen (1,7 us Antwortzeit) kann die letzte Phase der Kontrolltransaktion nicht durch Software implementiert werden, und die meisten Teile der SIE-Engines von Geräten sind hardwarecodiert. Andere Funktionen von SIE sind das Akzeptieren der Adresszuweisung und das Akzeptieren/Aktivieren der Konfiguration, was die Aufzählungsphase des USB-Anschlussprotokolls abschließt. Dann unterstützt SIE grundlegende IN/OUT/andere Pipes innerhalb der gleichen Protokolleinschränkungen. Kurz gesagt, die Gerätefunktion besteht darin, zu REAGIEREN.
Aufgrund dieser Hardwarebeschränkungen ist es unmöglich, die Gerätemaschine für Hostfunktionen zu verwenden, hauptsächlich weil die Hostfunktionen den Gerätefunktionen völlig entgegengesetzt sind. Die Busabwicklung folgt sehr unterschiedlichen Zustandsautomaten. Der Host muss periodische Rahmenpakete ERZEUGEN und alle Transaktionen INITIIEREN. Und stellen Sie dann einen reibungslosen Datenstrom bereit, was normalerweise mit Direct Memory Access-Hardware erfolgt. Der Host muss eine Port-Power-Funktion und eine Port-Reset-Funktion bereitstellen, die in Geräteimplementierungen nicht vorhanden sind.
Dies sind die Hauptgründe, warum MCU mit separaten Host-Hardware- und Geräte-Hardware-Controllern konzipiert sind.
Eugen Sch.
Jasen
никита богатов
Markus Müller
никита богатов
Chris Stratton
никита богатов
никита богатов
Chris Stratton
Markus Müller
Chris Stratton
Markus Müller