Mot exact Résultats par page

Index des mots-clés

AGENDA PERSONNEL
ALBUM PHOTO (Script)
ANTI SPAM
APICULTURE
BOISSONS (Recettes)
BREDELE
C++
CADRE
CHARLOTTE AUX FRUITS
CODAGE ADRESSES MAIL
CODE 2 DE 5 ENTRELACE
CODE 3 DE 9
CODE 128
CODE PDF417
CODES BARRE
CODE POSTAL
CODES VIDEOTEXT
CONFITURES
CONGOLAIS
CONSERVES (Recettes)
CORNICHONS AU VINAIGRE
COUARAIL
CUISINE (Bases)
CYBERMUT
DADANT
DATAMATRIX
DDE
DESSERTS (Recettes)
DOUBLE NAT
DYNDNSUPDATE
EAN 13
EAN 128
ELECTRONIQUE
ENTREES (Recettes)
ENVOI DE SMS
ESPACE MEMBRE
EURO
EXEMPLES VB6
FAVORIS
FONCTIONS
FONCTIONS EN C++
GUACAMOLE
IMPRIMANTES RESEAUX
INSTANCE UNIQUE
KIT VB4
LANGSTROTH
LEGUMES (Recettes)
MADELEINES
MAISONS
MAQUEREAUX AU VIN BLANC
MAQUEREAUX (Rillettes)
NMEA
NOUGATINE
PAIN
PDF417
PHP
PIC
PLANS DE MAISON
PATISSERIE (Bases)
PLANTEUR
PLATS COMPLETS (Recettes)
POISSONS (Recettes)
PROCEDURES
PROGRAMMATION
RECETTES DE CUISINE
RESSOURCES RESEAUX
R.I.B.
ROUTINES
RUCHE
SALADES (Recettes)
SAUMON EN CROUTE
SCRIPTS
SITES
SLICE
SMS
SOUPE DE COURGE
TABLE PERIODIQUE
TATIN (Tarte)
USB
VIANDES (Recettes)
VIDEOTEXT
VISUAL BASIC
VOIRNOT
WNTIPCFG

Mot exact Résultats par page
I
N
D
E
X

Etude du bus USB

Il y a 15 ans j'interfaçais différents appareils (Journal lumineux, balance, micromètre, ...) et montage électronique "maison" sur des PCs; c'était à l'époque presque révolutionnaire. Les appareils connectés au port série ou parallèle étaient directement commandés par le logiciel applicatif. Puis est venu Windows, ses drivers, la programmation objet et maintenant le bus USB. La complexité est au rendez-vous, il ne suffit plus d'un coup de fer à souder ! L'objectif reste la réalisation d'un appareil USB et l'écriture de son driver pour Windows. Je mène parallèlement une étude des cartes à puces et la convergence pourrait être un lecteur de cartes à puces USB.

Liens utiles

Site officiel de l'USB
-
Norme V 1.1 (1,7 MB)
-
Norme V 2.0 (6,5 MB)

Site de Beyond Logic Beaucoup de choses intéressantes en anglais.

Site de Bernard ACQUIER Traduction du résumé de la norme de Beyond Logic.

Le programme USBVIEW de Microsoft qui permet de voir ce qu'il y a sur le bus.

Toutes ces lectures m'ont amené à écrire mon propre résumé de la norme :

 

Il résulte de tout ça qu'il faut utiliser soit un circuit d'interface spécifique, soit un micro-controleur à port USB intégré.

Circuits d'interface USB

PHILIPS Liste des produits USB
-
PDIUSBD11 Interface série I²C - Full speed - DataSheet - Note d'utilisation
-
PDIUSBD12 Interface parallèle - DataSheet

FAIRCHILD
- USB1T11AM Low et Full speed 
DataSheet

NATIONAL SEMICONDUCTORS
-
USBN9602  - Non conseillé pour une nouvelle réalisation et nécessite un quartz à 48 Mhz plus difficile à trouver.
-
USBN9603 - DataSheet
-
USBN9604 - DataSheet

CYPRESS
-
SL811C Low et Full speed  DataSheet

NET CHIP
-
NET2888
-
NET2890
-
NET2270 Haute vitesse
-
NET2280 Haute vitesse et bus PCI

Micro controlleurs

MICROCHIP
-
16C745 Existe en version JW effaçable aux U.V.
-
16C765 Existe en version JW effaçable aux U.V.

CYPRESS
-
AN2131 DataSheet - Kit de développement (Plus de 60 Mo)
- AN2135
- AN2136
-
CY7C64013 & CY7C64113 (Conseillé par Cypress pour lecteur de carte à puce)
-
CY7C64603
-
CY7C64613
-
CS5954AM
-
SL11R (Obsolète)

MOTOROLA Liste des produits USB
-
68HC05JB2
-
68HC05JB3
-
68HC05JB4
-
68HC705JB3
-
68HC08JB1
-
68HC08KH12 Hub 4 ports
-
68HC908JB16 ROM Flash

Circuits divers

CYPRESS
-
AN2720 Permet de relier 2 PCs
-
SL11R-IDE Permet de connecter un appareil IDE/ATAPI sur un port USB

NET CHIP
-
NET1031 Scanner en un seul chip
-
NET1080 Module qui permet de relier 2 PCs

MOTOROLA
- MC141555 Hub controller
- MC141556 Hub controller

F.T.D.I. Liste des produits USB
- FT8U232AM  & FT232BM Port série vers USB
- FT8U245AM & FT245BM Port parallèle vers USB

GIGATECHNOLOGY Modules utilisant les C.I. de F.T.D.I. Liste des produits USB
- USBMOD1 Module RS232 vers USB
- USBMOD2 Module Port parallèle vers USB

Connecteurs

Principal fabricant : Molex Embase femelle pour C.I. de type B : réf. 670680001 ou 670680110 ou 670680000

Généralités

Le circuit d'interaface le plus documenté et apparaissant dans l'exemple de Beyond Logic est le PHILIPS PDIUSBD11. Il est introuvable en France.
Un certains nombre de composants sont disponibles aux USA chez
Arrow : PDIUSBD11D, PDIUSBD12, USBN960228M, AN2131SC, CY7C64013SC, CY7C64443PVC, CY7C64603 et 613 en plusieurs versions, embase de type B.
Pour les micro-controleurs, de nombreux livres et articles de magazine font que l'on pourrait être tenté par le PIC 16C745-JW mais l'effacement aux U.V. n'est pas des plus pratique. En France il est au catalogue d'au moins un distributeur mais environ trois fois plus cher qu'aux USA. Le AN2131SC de Cypress est également utilisé par quelques montages parus dans des revues; la documentation fournie par Cypress est impressionnante; l'U.C. est un 8051 également très connu. Ce circuit ne contient pas d'EPROM mais uniquement de la RAM. A la connexion un driver spécifique (Désigné par le VID et le PID du circuit) charge cette RAM avec le programme que l'on a écrit. Le rôle de ce driver est alors terminé, le circuit se déconnecte alors du bus puis se reconnecte avec vos propres VID et PID provoquant cette fois l'appel du driver correspondant à votre application. Cypress appelle celà la ré-énumération (On lit souvent re-numération qui me semble être une mauvaise traduction). Ce mécanisme permet un changement et une mise à jour ultra facile du firmware que vous voulez mettre dedans.
Le projet va se dérouler en quatre étapes :
- Le hard
- Le firmware
- Le pilote Windows
- Le programme d'application

C'est parti ...

1 - Le hard. ou "Etape du fer à souder"

Pour la réalisation des circuits, lisez déjà la page d'en-tête du chapitre.

Ayant à portée de la main un super kit d'évaluation des PICs et quelqu'un qui les maitrise (Mon frère ...) je vais commencer par une carte d'interface USB à base de PDIUSBD11 que j'interfaçerai à un PIC 16F876 (C'est l'exemple de Beylond Logic.) (Voir la page sur les PICs)

D'abord le schéma; Craig conseille le pont diviseur R1 / R2 mais les entrées acceptant 5v., on pourra peut-être supprimer R2 et remplacer R1 par un strap. C5 devra peut-être passer à 6,8 µF si le bus alimente tout le montage car la norme veut que la capacité d'entrée de Vbus ne dépasse pas 10 µF au total. La ligne reset ne sera peut-être pas utilisé et dans ce cas on rammènera l'entrée "reset" à 5v. à l'aide d'un cavalier. Un autre cavalier permettra de réaliser un montage entièrement alimenté par le bus, mais attention car ce cavalier étant en place il ne faudra ABSOLUMENT PAS alimenter la platine; au contraire c'est elle qui pourra en alimenter d'autres.


 
Puis le tracé du circuit imprimé. La carte est aux mêmes dimensions que la carte du PIC. Le PDIUSBD11 étant généralement livré en boitier CMS il faudra utiliser ( ou réaliser) une petite platine de conversion CMS --> DIL. Les borniers sont au pas de 5mm (Et non de 5,08 mm)
 

La liste des composants :

3

bornier 2 vis pas de 5mm

1

bornier 3 vis pas de 5mm

1

support de C.I. 16 pattes

1

circuit USB PDIUSBD11N (Si boitier CMS, faire une platine de conversion)

1

régulateur LM 317 LZ

1

quartz 12 Mhz

2

condensateur céramique 22pF au pas de 2,54

3

condensateur plastique 100nF au pas de 7,62 ou 10,16

1

condensateur plastique 1µF au pas de 7,62 ou 10,16

1

condensateur chimique vertical 10µF, 16V au pas de 5,08

2

résistance 1/4W 22 Ohms

1

résistance 1/4W 110 Ohms

1

résistance 1/4W 180 Ohms

1

résistance 1/4W 330 Ohms

3

résistance 1/4W 4,7 kOhms

1

résistance 1/4W 10 kOhms

1

résistance 1/4W 330 kOhms

1

résistance 1/4W 680 kOhms

1

petite self d'antiparasitage torique ou perle de ferrite

1

prise USB type B

1

led 3mm

On peut commander des C.I. chez Arrow USA mais il y a environ 50 € de frais de port car ils ne savent faire que de l'express par DHL.

N'ayant pas trouvé
de PDIUSBD11 en boitier
DIL16; j'ai donc réalisé un
adaptateur pour le circuit en
boitier CMS.
Le fichier TCI

L'adaptateur se compose de deux minis circuits. Le premier reçoit après étamage le
C.I. puis on y soude 8 queues de résistance. On enfile alors le second circuit en
forçant les fils à faire un double pli et on soude ce deuxième circuit.

Le circuit est connecté de la manière suivante à un PIC 16F876 à 4 Mhz : SCL sur port RC3, SDA sur port RC4, INT sur port RB0, SUSPEND sur port RB1, RESET sur port RB2, la led sur port RB3 et un poussoir sur RB4 (Voir platine interfaces du kit PIC). Le cavalier « Power » n'est pas installé; le circuit sera donc alimenté par la même alimentation que le PIC. Notre appareil est donc de type « self-powered ».

2 - Le firmware ou "Etape de l'assembleur"

Nous pouvons maintenant charger dans le PIC le micro-programme dont voici les fichiers HEX et ASM.  (Version du 10/6/2003) Ce programme reprend pour l'essentiel la structure de l'exemple du site de Beyond Logic mais il a été écrit en assembleur (Plus exactement avec un genre de macro-assembleur, ce qui explique quelques bizarreries du fichier .ASM) et les messages envoyés sur le port série ont étés supprimés : ils prenaient trop de temps et empêchaient de respecter les délais donnés par la norme USB. Par ailleurs je me suis octroyé le VID 3333 et j'ai choisi le PID 0001. Cet exemple énumère correctement avec le driver de test tiré du DDK Windows 2000. Décompressez les fichiers testusb.sys et testusb.inf dans un répertoire de votre choix. Mettez sous tension et appuyez sur le bouton poussoir pour démarrer le PIC : Windows vous annonce qu'il a trouvé un nouveau périphérique et vous demande le driver; donnez alors le chemin du fichier .INF. Celui-ci s'installe et le bus envoie la requête « set configuration » : Miracle, la led de la carte USB s'allume. Vérifiez avec Regedit que dans la clé « HKEY_LOCAL_MACHINE\Enum\USB » vous avez bien une clé « VID_3333&PID_0001 ». Pour refaire un nouvel essai il faut supprimer cette clé, supprimer du répertoire « Windows\système32\drivers » le fichier testusb.sys, supprimer du répertoire « Windows\inf » le fichier testusb.inf et enfin supprimer du répertoire « Windows\inf\others » le fichier grandzebutestusb.inf
Microsoft nous fourni dans son DDK 2000 un programme (avec les fichiers sources) bien utile pour examiner les bus USB; voici l'exécutable en français.
Le petit programme rwbulk.exe tiré du DDK de Microsoft s'utilise dans une fenêtre DOS (Ben oui quoi !); il permet de communiquer avec notre montage. Tapez par exemple rwbulk -r 80 -w 80 -i 1 -o 0 -v pour lire et écrire 80 octets dans le tampon circulaire du PIC. Tapez rwbulk sans paramètres pour avoir une liste de ceux-ci.

3 - Le pilote ou "Etape du C++"

Pour entrer plus avant dans la réalisation d'un pilote spécifique il faut installer dans l'ordre : Visual C++ 5 (Surtout pas la version 6 !) puis le DDK de windows 2000 (Qui permet néanmoins d'écrire des drivers pour Windows 98 SE). Il semble que Microsoft ne propose plus le DDK en téléchargement; on le trouve facilement sous le nom de « Microsoft_Windows_2000_DDK_-_Driver_Development_Kit.exe » sur le réseau eDonkey. (N'installez pas eDonkey qui va planter sur votre machine des tas de pubs et de spywares très difficiles à retirer, mais utilisez plutôt eMule qui est un logiciel libre et sans pubs travaillant sur le même réseau) Visual C++ 5 devrait aussi se trouver de la même manière mais un peu plus difficilement car il ne s'agit pas de la dernière version et on trouve surtout la version 6 qui ne convient pas.
L'utilisation du DDK se fait en mode ligne de commande. Ouvrez une fenêtre DOS à l'aide du menu « Development Kits / Windows 2000 DDK / Free Build Environment » qui a été créé lors de l'installation du DDK; cela positionne des variables globales nécessaires au compilateur. A l'aide du DOS, déplacez vous vers le répertoire qui contient votre projet, puis tapez « BUILD ». Cela compile tous les projets du répertoire ET des sous-répertoires (Attention, si vous tapez BUILD en étant à la racine du DDK, vous allez compiler tous les exemples du DDK : compter une bonne demi-heure sauf interruption par Ctrl-C). N'utilisez que des noms courts (8 caractères) pour les répertoires et les fichiers. L'édition des fichiers se fait avec un simple éditeur (J'utilise Web Expert qui a l'avantage de numéroter les lignes et de supporter des signets bien pratiques ou Visual Studio qui offre l'avantage de la coloration syntaxique). Le fichier exécutable se retrouve dans le sous répertoire « objfre\i386 »
Deux points de départ sont possible : bulkusb, l'exemple du DDK de Microsoft ou EzUsb l'exemple de Cypress. Je vais utiliser celui-ci; il passe sous silence un certain nombre de fonction du "power management" et surtout évite l'emploi des horribles GUIDs inventés par un esprit tordu ! Je préfére en effet que mon driver ait un nom plus parlant qu'un nombre de 128 bits totalement abstrait.
Je suis en cours de traduction est d'écriture ..... vous pouvez aller vaquer à vos occupations habituelles car pour aujourd'hui c'est tout ...