Accueil Interfaces & Capteurs ATmosphères EXplosibles Services Thématique Nous Contacter

La communication avec USB
(Universal Serial Bus)

Bureau d'études - Electronique




En 1999 alors que l'USB commençait à se répandre, un ingénieur informaticien qui avait remarqué qu'il suffisait d'un simple connecteur adaptateur pour transformer une souris PS2 en souris USB, en avait déduit que l'USB n'était qu'un nouveau standard de connecteurs. En 2005, un responsable de projets a été très surpris en regardant à l'oscilloscope le bus USB d'un prototype livré par TECHNETEA d'y trouver des signaux aussi rapides que 12Mhz.

Trop souvent, les ingénieurs de développement et responsables de projets considèrent l'USB comme seulement un moyen de connecter un équipement à un ordinateur en remplacement des classiques connexions RS232.

Le bus USB est bien plus que ça. Par rapport à une communication série RS232, l'USB est un bus extrêmement complexe et sophistiqué ; il représente un moyen de connexion aux possibilités étendues qui va bien au-delà de l'univers des périphériques informatiques et trouve tout naturellement sa place dans le domaine de l'instrumentation.




Connexions et caractéristiques électriques

L'USB est un moyen de communication où le moindre détail est normalisé avec précision, depuis les structures d'informations de haut niveau, les protocoles de communication et d'identification, les signaux électriques, les délais de propagation, jusqu'à la structure des câbles. La version actuellement applicable est la spécification USB 2.0, avec le supplément USB On-The-Go permettant la connexion entre deux équipements sans ordinateur.


La norme décrit plusieurs types de connecteurs spécifiques, chacun pour un usage bien particulier de telle sorte qu'en utilisant du matériel conforme à la norme il soit absolument impossible de réaliser une connexion non conforme.

connecteurs USB

Un câble USB contient 4 fils : 2 constituent une paire différentielle assurant une communication bidirectionnelle, et 2 assurent l'alimentation sous 5V de l'équipement connecté. Il s'agit là d'un intérêt majeur de l'USB puisqu'un équipement peut obtenir jusqu'à 500mA d'alimentation depuis le bus, et peut donc éventuellement se passer de toute autre source d'alimentation.

Cable USB

Une installation USB est gérée par un système de contrôle principal appelé "host", une ligne USB peut se diviser en plusieurs lignes au moyen d'un élément appelé "hub", au bout de chaque ligne active est connecté un "équipement". Le "root hub" est l'étage physique de sortie du "host".

Les donnée circulent entre le "host" et les équipements, les données ne peuvent jamais circuler directement d'un équipement à un autre équipement.

Un équipement peut être alimenté soit pas le bus, soit de manière autonome ou externe ; un "hub" peut être alimenté soit par le bus, soit de manière externe. Chaque équipement est en droit de disposer de 100mA depuis la ligne sur laquelle il est connecté, mais tout équipement désirant consommer plus ne doit passer à sa consommation nominale que s'il en a été autorisé par le "host". Le "host" contrôle les consommations déclarées par chaque équipement lors de l'initialisation, et informe l'OS de l'ordinateur en cas d'incompatibilité.

Installation USB

La longueur maximale possible des câbles de connexion dépend de l'affaiblissement et de la déformation du signal de communication, de la perte de tension dans les fils d'alimentation, mais surtout des délais de propagation dans le câble ; ainsi la taille maximale des câbles est de l'ordre de 5m. A noter qu'en raison des connecteurs imposés à chaque bout d'un câble rallonge, il est impossible de connecter deux câbles USB bout à bout en utilisant du matériel strictement conforme à la norme.

Il est toutefois possible d'augmenter la longueur de la ligne de transmission par l'emploi de "hub" en relais, mais seulement jusqu'à 5 hub peuvent être intercalés entre le "host" et l'équipement final, au-delà les délais de propagation ne sont plus compatibles avec les temps normalisés.

Une installation USB peut donc comporter au maximum 7 étages ("tier") : le premier étage est celui du "host" et de son "root hub" associé, et chaque étage suivant peut être occupé soit par un équipement, soit par un "hub".

Sur l'exemple ci-contre, l'ordinateur dispose de 4 "host" indépendants sur l'étage 1, donc peut gérer 4 installations USB indépendantes. A noter que chaque "host" sort avec les deux prises USB de son "root hub", et donc ces deux sorties ne sont pas indépendantes et font partie de la même installation USB.

Explorateur USB


Communication entre le "host" et l'équipement

Un équipement peut présenter jusqu'à 32 points de connexions différents appelés "endpoints" : 16 "endpoints" de type INPUT numérotés de 0 à 15, et 16 "endpoints" de type OUTPUT également numérotés de 0 à 15. Les termes INPUT et OUTPUT se réfèrent au sens de la communication vu par le "host" : ainsi un "endpoint" INPUT permet de faire entrer des informations dans le "host", et un "endpoint" OUTPUT reçoit les informations sortant du "host".

Chaque équipement définit les "endpoints" qu'il utilise en les associant à un "mode de transmission" et à une taille de buffer. Le "host" détermine en fonction de ces caractéristiques et du nombre d'équipements connectés, un découpage du temps de manière à gérer l'acheminement des données sous formes de "transactions" en fonction des priorités et des tailles des buffer.

La connexion du "host" à un "endpoint" est appelée "pipe". Un mécanisme de contrôle par "checksum" et "handshake" avec réémission éventuelle en cas d'erreurs est automatiquement réalisé pour assurer la bonne transmission des données.




Modes de transmission et vitesses de transmission

La norme définit 4 modes de transmission :

- "Control" : bien que ce mode de transmission pourrait être utilisé également pour d'autres usages, il est avant tout défini pour gérer les différentes séquences de gestion du bus, en particulier les phases d'énumération et de configuration (voir chapitre suivant). C'est un mode de transmission bidirectionnel qui utilise un "endpoint" INPUT et un "endpoint" OUTPUT de même numéro.

- "Bulk" : ce mode de transmission est utilisé pour réaliser le transfert de grosses quantités d'informations comme des fichiers. Il s'agit d'un mode de transmission non prioritaire dont les transactions utilisent les temps laissés libres sur le bus. Sur un bus vide c'est le mode de transmission le plus rapide, mais étant donné qu'il est non prioritaire, la transmission peut être très lente s'il y a beaucoup de trafic sur le bus.

- "Interrupt" : il s'agit d'un mode prioritaire paramétrable, la gestion du bus assurant que le temps séparant deux transactions ne sera pas supérieur au délai exigé. Ce mode de transmission est utilisé dans des applications nécessitant qu'une quantité variable de données soit acheminée prioritairement au trafic sur le bus.

- "Isochronous" : il s'agit d'un mode prioritaire paramétrable, la gestion du bus assurant le débit de données demandé. Contrairement aux trois autres modes, la répétition du message en cas d'erreur n'est pas gérée ; ce mode de transmission est utilisé pour les applications temps réel à débit critique pouvant se permettre des erreurs de transmission, comme l'acheminement de la voix ou autres.

La norme définit 3 vitesses de transmission, la vitesse étant fixée par les caractéristiques électriques de la connexion :

- Low Speed : 1.5 Mbit/s   (résistance de pull-up de 1.5Kohms sur D-)

- Full Speed : 12 Mbit/s   (résistance de pull-up de 1.5Kohms sur D+)

- High Speed : 480 Mbit/s   (séquence automatique de signaux électriques pour identification des capacités des driver de ligne)

Il serait totalement faux de se représenter la quantité transmissible de données uniquement à partir de la vitesse de communication sur la ligne. Chacun des 4 modes de communication ayant ses propres caractéristiques, et chacune des 3 vitesses définissant des découpages spécifiques du temps pour les transactions, le débit réel est une combinaison du mode de transmission, de la vitesse de la ligne, du nombre et du type des connexions USB gérés par le "host" et du trafic.




Détection, énumération et configuration

Chaque nouvelle connexion ou déconnexion d'un équipement USB est électriquement détectée par le "hub" auquel il est rattaché, que ce soit un "hub" externe ou le "root hub". Le "host" détecte la modification dans l'installation USB en interrogeant périodiquement les "hub" en mode "interrupt". A noter que la connexion d'un "hub" suit exactement la même procédure, un "hub" est considéré comme un équipement USB de classe "hub".

Dans le cas d'une détection de nouvelle connexion sur un "hub", le "host" demande au "hub" d'assurer un reset de l'équipement nouvellement connecté pour le mettre dans un état où il est seulement capable de communiquer en utilisant l'adresse 0 et le "endpoint" 0. Le "host" commence alors une série d'échanges avec l'équipement, cette phase est appelée "énumération", au cours de laquelle : une adresse de connexion va être affectée à l'équipement, l'équipement va s'identifier : identification du constructeur, indentification du produit, identification de la classe de matériel, identification des différentes configurations d'utilisation proposées incluant pour chacune la consommation de l'équipement, les endpoints utilisés et leurs modes de communication assignés.

Durant la phase d'énumération et ensuite pour tout ce qui concerne la configuration, le "host" communique avec l'équipement par les commandes normalisées du "endpoint" 0 (de type "control") qui est obligatoirement implémenté dans tout équipement USB.

A partir des informations recueillies pendant l'énumération, le "host" détermine s'il doit utiliser pour la gestion informatique, un driver défini par la norme USB ou un driver fourni par le fabricant du matériel.

Enfin l'étape de configuration consiste à valider une configuration parmi celles proposées par l'équipement lors de l'énumération, puis le "host" peut commencer les transactions de communication.

De manière à standardiser les échanges avec les équipements fonctionnellement identiques, la norme définit une série d'interfaces informatiques de telle sorte qu'il suffise qu'un équipement se déclare d'une certaine classe de matériels au moment de la phase d'énumération, pour qu'aucun driver spécifique ne soit nécessaire à sa connexion à l'informatique.

Ainsi sont normalisées les classes de matériels suivantes : imprimante, stockage, modem, audio, ... La classe particulière HID (Human Interface Devices) originellement prévue pour des interfaces informatiques du type souris, clavier, joystick, ... peut également être utilisés pour d'autres équipements temps réel, en définissant un profil d'échange qui est transmis au "host" pendant la phase d'énumération.

Dans les cas où aucune classe de matériels n'est applicable, le constructeur fournit un driver spécifique et un fichier INF déclarant le lien entre le driver et les identifications constructeur et produit que le "host" va récupérer pendant la phase d'énumération.



Instrumentation USB pour laboratoires