Le protocole USB

page: 1 - 2

Les paquets

Avant tout, il faut savoir quand dans une communication entre l'appareil et l'hôte, c'eest l'hôte qui gère le bus USB. Ainsi, si l'appareil veut envoyer des donnée, il devra attendre que le système lui les demande.

Le système de communication USB fonctionne par transfert de paquets de données entre l'hôte et l'appareil. Les paquets sont en fait composés d'une suite de bits transportant une information.

Les champs de paquets:


Chaque paquet est composé de plusieurs partie nommés «champs de paquets» de différentes longueurs selon son type (les différents types seront détaillés plus tard)

voici les champs de paquets possibles :

  • Sync
  • Tous les paquets doivent commencer avec un champ Sync. Le champ Sync fait de 8 bits de long pour la basse et pleine vitesse ou 32 bits pour la haute vitesse est utilisé pour synchroniser l'horloge du récepteur avec celle de l'émetteur / récepteur. Les 2 derniers bits indiquent l'endroit où le champ PID commence.

  • PID
  • PID signifie Paquet ID. Ce champ est utilisé pour identifier le type de paquet qui est envoyé. Le PID, codé sur 4 bits, est répété une deuxième fois juste après, afin de vérifier qu'il n'y a pas d'erreurs. Le PID est donc composé de 8 bits. Les types de paquets seront détaillés plus tard

    Le tableau suivant montre les valeurs possibles :
    Il existe d'autres valeurs spéciales possibles, utilisée pour un ping par exemple.

  • ADDR
  • Le champ adresse détermine à quel appareil le paquet est destiné. Sa longueur de 7 bits, lui permet de supporter 127 appareils. L'adresse 0 n'est pas valide, tant qu'un appareil qui n'a pas encore d'adresse attribuée, doit répondre aux paquets envoyés d'adresse 0.

  • ENDP
  • spécifie la terminaison utilisée. Le champ de terminaison est composé de 4 bits, autorisant 16 terminaisons possibles.

  • CRC
  • Les Contrôles à Redondance Cyclique sont exécutés sur les données à l'intérieur du paquet. Ils servent à contrôler les erreurs possibles. Tous les paquets jetons ont un CRC de 5 bits tandis que les paquets de données ont un CRC de 16 bits.

  • EOP
  • Fin de Paquet. Signalé par une sortie unique zéro (SE0) pendant une durée approximative de 2 bits suivie par un " J " d'une durée de 1 bit.

Les types de paquets:


L'USB a quatre types différents de paquet. Les paquets jetons indique si l'hôte veut envoyer ou recevoir des informations, les paquets de données contiennent les informations demandées, les paquets " poignée de mains " sont utilisés pour valider les données ou rapporter les erreurs et les paquets début de trame (SOF) sont utilisés pour la synchronisation de l'appareil.

Les paquets jetons:

In - Informe l'appareil USB que l'hôte veut lire des informations. Out - : Informe l'appareil USB que l'hôte veut envoyer des informations. Setup - Utilisé pour l'initialisation. Les paquets jetons doivent se conformer au format suivant:

Sync | PID | ADDR | ENDP | CRC5| EOP

Les paquets de données :

Il y a 2 sortes de paquets de données, chacun étant capable de transmettre plus de 1024 octets de données. Data0 Data1 Le mode haute vitesse définit 2 autres PIDs de données, DATA2 et MDATA. Les paquets de données ont le format suivant :

Sync | PID | Data | CRC16 | EOP

La taille maximale de données " charge utile " pour les appareils basse vitesse est de 8 octets. La taille maximale de données " charge utile " pour les appareils pleine vitesse est de 1023 octets. La taille maximale de données " charge utile " pour les appareils haute vitesse est de 1024 octets. Les données doivent être envoyées en multiple d'octets.

Les paquets " poignée de mains " :

Il y a 3 sortes de paquets " poignée de mains " qui font simplement partie du PID. ACK - validant que le paquet a été reçu correctement. NAK - rapporte que temporairement l'appareil ne peut ni envoyer ou recevoir des données. Aussi utilisé pendant les transactions d'interruptions pour avertir l'hôte qu'il n'a pas de données à envoyer. STALL (Bloqué) - L'appareil se retrouve dans un état qui va exiger l'intervention de l'hôte. Les paquets " poignée de mains " ont le format suivant,

Sync | PID | EOP

Les paquets début de trame (SOF) :

Le paquet SOF composé d'une trame de 11 bits est envoyé par l'hôte toutes les 1ms ± 500ns sur un bus pleine vitesse ou bien toutes les 125µs ± 0,0625µs sur un bus haute vitesse.

Sync | PID | Frame Number | CRC5 | EOP

page: 1 - 2

Valide (X)html strict 1.0 | Valide Css 2.1