USB Full Speed hat eine Geschwindigkeit von 12 MBit/Sekunde = 1,5 MByte/s.Wie hoch ist der effektive maximale Payload-Durchsatz für USB in voller Geschwindigkeit?
Aber innerhalb dieser 12 MBit wird auch eine Menge zusätzlicher Daten übertragen, die nicht Nutzlast, wie Token, Endpunktadresse, CRC5, CRC16, Acknowledge, SOF + EOF-Pakete, etc .. Zusätzlich behält der Busmanager 10% von ein Frame für Control Transfers.
Siehe Interrupt Transfer in USB Made Simple Part 3
Wenn ich mit einem Abfrageintervall von 1 ms einen USB-Endpunkt in dem Unterbrechungsmodus habe, dann kann ich 64 Bytes pro Rahmen = 64kByte/Sekunde übertragen.
Aber was ist, wenn ich 2 Endpunkte mit 1 ms Polling habe? Dann wird der Host beide Endpunkte innerhalb von 1 ms abfragen, also habe ich einen Gesamtdurchsatz von 128 kByte/s?
Und wenn der Host gleichzeitig 15 IN-Endpunkte abfragt, würde das 15 * 64 kByte = 960 kByte/s ergeben?
(wir der Einfachheit halber annehmen, dass es keine OUT-Transfers sind)
Erste Frage: Obwohl viele Benutzer ich keine Website reden über die maximale effektive Nutzlast Durchsatz bei voller Geschwindigkeit finden.
Zweite Frage: Volle Geschwindigkeit erlaubt ein Maximum von 64 Byte/Paket und ein minimales Poll-Intervall von 1 ms. Wenn ich über IN-Transfer die maximal mögliche Payload übertragen möchte, sollte ich mehrere Endpunkte verwenden und die Datenübertragung über diese Endpunkte verteilen? Mit wie vielen Endpunkten komme ich ans Limit?
Dritte Frage: Ich sehe, dass in einer Massenübertragung der Host IN Daten häufiger als einmal pro Millisekunde anfordert. Bedeutet das, dass Bulk schneller ist als Interrupt-Übertragung?
Interrupt Endpunkte kann nur ein 64-Byte-Paket alle 1 ms senden. Somit beträgt das Limit nach dem Overhead etwa 64 kB/s. –
Sie haben völlig Recht. Wenn repariert meine Antwort. – Elmue