Datenkommunikation

USB richtig integrieren

Seite: 2/3

Anbieter zum Thema

Bild 1a: Control-Write-Transfers mit Setup-, Daten- und Status-Stufen (Archiv: Vogel Business Media)
Bild 1b: Control-Read-Transfers mit Setup-, Daten- und Status-Stufen (Archiv: Vogel Business Media)

Der Datenfluss im Control-Transfer weist Setup- und Status-Stufen auf und findet über bidirektionale Message Pipes statt. Jedes Device muss Control-Datentransfers über die Default Pipe am Endpunkt 0 unterstützen. Die Bilder 1a und 1b zeigen Control-Write-/Read-Transfers mit Setup-, Daten- und Status-Stufen.

Bild 1c: Daten-Stufe ist optional (Archiv: Vogel Business Media)

Bild 1c zeigt, dass die Datenstufe optional ist, ein bestimmter Request sie jedoch erfordern kann. Da jeder Control Transfer einen Informationsfluss in beide Richtungen erfordert, verwendet die Control Transfer Message Pipe die IN- und OUT-Adressen des Endpunkts.

Ein Endpunkt-Deskriptor für den Control-Transfer spezifiziert die maximale Payload-Größe, die der Endpunkt annehmen oder übertragen kann. Bei Full-Speed Devices beträgt diese 8, 16, 32 oder 64 Byte. Ein Control Transfer endet auf zwei Arten: wenn die erforderliche Datenmenge übertragen wurde oder wenn das Datenpakt weniger als die maximale Datenmenge und ein Zero-Length-Paket enthält. USB bietet einen Fehlerbehebungsmechanismus für Fehler, die während der Übertragung stattfinden. Der Host-Controller unternimmt maximal drei Versuche, ein Handshake-Paket zu empfangen. Erfolgt keine Antwort, benachrichtigt der Host die angeforderte Software. Datenintegrität wird über die DATA0 und DATA1 Identifier und separate Daten-Toggle-Sequenz-Bits für den Daten-Transmitter und -Receiver gewährleistet.

Interrupt-Transfers

Interrupt-Datentransfers dienen für Einrichtungen, die Daten in bestimmten Intervallen senden oder empfangen müssen. Dieser Modus garantiert Latenz und bei Fehlern auf dem Bus erneute Übertragungsversuche. Trotz seines Namens ist der Modus nicht ereignisgesteuert. Er eignet sich für Devices, bei denen Daten mit einer festen, vorbestimmten Datenrate übertragen werden. Informationen über die Datenrate und Richtung des Datenflusses werden während der Enumerationsphase bei Anschluss festgelegt. Der Datenfluss bei Interrupt-Transfers findet nur in einer Richtung statt, entweder vom Host zum Device oder umgekehrt. Der Modus eignet sich für Mäuse, Tastaturen oder Joysticks. Erfordert eine Applikation jedoch einen Transfer in beide Richtungen, ist ein separater Transfer inkl. Pipe erforderlich.

Bild 2: Beispiel für einen Interrupt-Transfer (Archiv: Vogel Business Media)

Für Full-Speed Devices ist eine maximale Datengröße von 64 Byte erlaubt. Ist der Transfer mit einer einzigen Transaktion nicht abgeschlossen, verwendet der Hoste mehrere Transaktionen. Das Beispiel in Bild 2 zeigt die ersten beiden Transaktionen mit 64 Byte Länge und die dritte Transaktion als Single-Byte-Übertragung. Theoretisch kann ein leerer Bus bei Full-Speed 19 64-Byte-Transaktionen übertragen.

(ID:266061)