Étape 3: Compréhension USB
Bus USB ont un animateur et un périphérique, l’ordinateur est généralement l’hôte, notre Gamepad est un appareil, plus précisément, un HID (périphérique d’interface humaine). Il est important de noter que l’hôte toujours initier une communication, ou l’hôte vérifie l’appareil fréquemment pour voir si il y a quelque chose à dire. L’appareil n’a pas la possibilité d’initier une communication, il peut seulement attendre jusqu'à ce qu’il est parlé à.
Il y a des résistances de pull-up sur D + ou D - selon si le périphérique est USB 1.0, USB 1.1 ou USB 2.0. La présence de ces résistances de pull-up est aussi un ordinateur sait lorsque quelque chose s’est connecté. Sur la USnooBie et la plupart des circuits V-USB, la résistance de pull-up est toujours sur le signal D V-USB étant seulement capable de mettre en œuvre des périphériques USB à vitesse réduite.
Les résistances de deux 68 ohm sur la D + et D-signaux résiliez résistances, leur impédance sont calculées (en tenant compte de circuits internes de l’AVR) soit mis en correspondance avec l’impédance caractéristique du câble USB. Cela minimise les réflexions de signaux. Lire http://en.wikipedia.org/wiki/Transmission_line pour en savoir plus.
Lorsqu’un périphérique se connecte à un hôte, l’hôte essaie de « énumérer » l’appareil. Si elle échoue à faire tellement (dispositif ne répond ne pas, ou répond avec garbage), c’est quand Windows dit « périphérique non reconnu ».
L’hôte et le périphérique parle sur des canaux appelés « points de terminaison », points de terminaison sont identifiés par un numéro. Il y a certains critères d’évaluation qui a réservé pour une utilisation particulière, tandis que d’autres peuvent être configurées pour fonctionner sous différents modes (interruption, en vrac, etc.).
L’hôte utilisera toujours d’abord le « point de terminaison de contrôle » (point de terminaison 0) tout d’abord à la demande de la description de l’appareil, ce « descripteur » contient les identificateurs de l’instrument (vendor ID et ID de produit, etc.), ainsi que de sa classe, sous-classe, etc. (HID comme une souris ou un clavier? ou stockage de masse peut-être?). Puis le descripteur de configuration est demandé, qui contient également le nombre de points de terminaison disponibles sur l’appareil. Chaque point de terminaison possède son propre descripteur ainsi. Toutes ces données sont envoyées sous forme de paquets d’octets de données représentant une structure bien connue de données spécifié.
V-USB et autres cadres/piles USB ont API et autres méthodes pour permettre au programmeur de modifier le contenu dans les descripteurs. Vous devez d’abord comprendre chaque descripteur et ensuite vérifier la documentation sur V-USB pour voir comment les modifier (je vous montrerai plus tard).
L’hôte fait les demandes en envoyant des « paquets d’installation » au « point de terminaison de contrôle ». Le programme d’installation de paquets ont une structure définie, ce qui facilite pour l’appareil pour comprendre ce que veut l’hôte. V-USB (et cadres similaires) gère habituellement les paquets d’installation par défaut. Un programmeur peut écrire les pilotes qui envoie des paquets d’installation personnalisé, auquel cas le firmware doit gérer les paquets d’installation manuellement, V-USB (e.a.) fournit quelques méthodes pour aider avec ça.
Par la suite dans ce instructable, j’ai inclus un dump des descripteurs capturé par mon analyseur de trafic USB. Vous pouvez jeter un coup d’oeil et il coïncident avec les spécifications USB pour voir ce que représente chaque portion.
Une fois que tous les descripteurs ont été récupérées de l’appareil, l’hôte peut alors comprendre l’appareil et communiquer avec lui. Nous regarderons tous les descripteurs en détail plus tard.
J’ai un autre Instructable qui vous montre comment construire un clavier USB qui types le code stocké dans les étiquettes RFID :
Travail à domicile : Lire USB en un mot http://www.beyondlogic.org/usbnutshell/usb1.shtml qui est à peu près une bible USB
Remarque importante : La plupart de la terminologie de l’USB est du point de vue de l’hôte (l’ordinateur), donc les mots « in » et signifie « entrée » de l’appareil à l’hôte et les mots « out » ou « la puissance » moyenne entre l’hôte et le périphérique.