Ist USB eine vernünftige Wahl für einen lokalen Bus?
Was sind Vor- und Nachteile?
Welche Zuverlässigkeitsbedenken gibt es?
Anzahl der Busspezifikationsgeräte ~4; Peripheriegeräte sind permanent mit derselben Platine wie der Host verbunden (gelötet oder über Stiftleisten).
Manche Geräte sind mickrig, zB serielle Schnittstelle oder Temperatursensor, manche sind komplex, zB ein LTE-Modem oder Ethernet oder WLAN. Peripheriegeräte sind solche, die als eigenständige USB-Geräte verfügbar sind, oder es werden dieselben Chips in solchen Geräten verwendet. Linux soll schon alle Treiber haben.
Idealerweise würde ich der Einfachheit halber nur einen Bus (ggf. mit Hubs) verwenden und eventuell Änderungen ohne einige Komponenten und mit anderen Komponenten mit niedriger Geschwindigkeit vornehmen.
Systemspezifikation ARM, Linux, DC-betrieben, entspricht in etwa einem Android-Tablet.
Was Sie sehen, ist ein Problem, das ich gerne als Bushierarchie bezeichne .
Sie haben Hochgeschwindigkeitsgeräte, die einen schnellen Pfad mit geringer Latenz zur CPU benötigen (wie das LTE-Modem), und langsame Geräte wie den Temperatursensor. Der Anschluss eines vollwertigen LTE-Modems über I2C führt zu einem ernsthaften Engpass des Systems. Und das Anschließen eines Temperatursensors an USB ist ein ernsthafter Overkill. Sie müssen Prioritäten setzen.
Auf welche Geräte soll am häufigsten zugegriffen werden? Welche müssen schnell reagieren? Und welche brauchen nicht so viel Bandbreite?
Fühlen Sie sich frei, Ihre Frage zu bearbeiten.
Bearbeiten:
USB ist vielleicht doch nicht so ein Overkill. Nur in den neuesten Versionen davon (2.0, 3.0) hat es den Eindruck bekommen, dass es nur auf schnelle Peripheriegeräte abzielt. Davor war es einfach ein Universal Serial Bus .
Das ändert nichts daran, dass der Implementierungsaufwand oft zu hoch ist.
Wenn das Gerät nicht bereits über eine USB-Schnittstelle wie Tastatur oder Maus verfügt, ist dies mit viel Arbeit und zusätzlicher Hardware verbunden. Zum Beispiel das Anschließen an einen Temperatursensor, der nur über eine I2C-Schnittstelle verfügt. Sie können dem Sensor keine USB-Schnittstelle hinzufügen, daher müssen Sie einen kleinen Mikrocontroller hinzufügen, z. B. einen PIC18, der sowohl über ein USB-Gerät als auch über eine I2C-Schnittstelle verfügt. Der PIC spricht dann USB zurück zu Ihrem Host und I2C zum Temperatursensor. Aber warum schließen Sie den Temperatursensor nicht einfach direkt an Ihren Host-Mikrocontroller an?
Basierend auf Ihren Anforderungen ist USB ideal. Denken Sie daran, das U steht für universell. Sie können USB-NICs, WLAN, Maus/Tastatur/Touchpad/Touchscreen, Soundkarten, Webcams, Hölle, sogar USB-Displays haben. Es ist nicht das effizienteste, aber für zwei Netzwerkkarten, einen Temperatursensor und ein serielles Gerät ist es dafür ausgelegt. So sehr, dass sich die meisten Hersteller von Computergeräten stark darauf verlassen.** Nicht nur billige SBCs oder Tablets, sondern sogar Schwergewichte wie Apple und Dell verwenden es für Touchpads und Tastaturen und Webcams und WLAN und Bluetooth und IR-Ports in all ihren Laptops .**
USB ist allgegenwärtig, einfach zu implementieren und hat sehr niedrige Platinenkosten in Bezug auf Routing und Teile.
Während Sie Arm-Geräte mit 4 Ports erhalten können, haben die meisten einen oder zwei Root-Ports (Busse), die dann mit einem Hub-IC verbunden sind. Ihr größter Flaschenhals wird das Mischen von High-Speed-Geräten mit Full- oder Low-Speed-Geräten auf einem einzigen Hub sein. Günstige Hub-ICs verfügen über einen Single Transaction Translator, der ein einzelnes Downstream-Gerät mit niedriger oder mittlerer Geschwindigkeit zu einem Hochgeschwindigkeits-Uplink bringen kann. Bessere haben einen MTT, Multiple Transaction Translators, sodass mehrere langsame Geräte mit hoher Geschwindigkeit überbrückt werden können. Oder stellen Sie einfach sicher, dass die niedrige Geschwindigkeit auf einem Hub und die hohe Geschwindigkeit auf einem anderen Hub ist.
Aber da Sie arm als beabsichtigten SOC haben, haben Sie Zugriff auf die richtigen Busse für Sound oder i2c oder spi (für den Temperatursensor oder seriell) oder Video oder sogar einen eingebauten Ethernet-Treiber ohne die Magnetik. High-End-ARM-Chips, vergleichbar mit billigen Android-Tablets oder -Routern, sind voll ausgelastet.
SPI
Vorteile
I2C
Vorteile
Nachteile
USB
Vorteile
Nachteile
Andere Schnittstellen umfassen SDIO, UART usw
Wie bereits erwähnt, müssen Sie die Bushierarchie mit Ihren Bandbreitenanforderungen definieren. Wahrscheinlich würde das LTE-Modem eine direkte Speicherschnittstelle oder eine PCI-Schnittstelle erfordern.
Außerdem gibt es Phy-Übersetzer wie FTD232 ( http://www.ftdichip.com/FTProducts.htm ), die USB-Spi, USB-Uart usw. ausführen können und weit verbreitet sind
Chris Stratton
Kaz
Benutzer17857