0% ont trouvé ce document utile (0 vote)
48 vues6 pages

Usb 2

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
48 vues6 pages

Usb 2

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MICROINFORMATIQUE

Interface USB
Essayez-vous à l’Universal Serial Bus
projet : Burkhard Kainka

L’acronyme USB se trouve, aujourd’hui, dans toutes les bouches. Cette


nouvelle interface sérielle risque, à moyen terme, de se substituer à la
plupart des interfaces actuelles d’un PC. Cela explique qu’Elektor ait
décidé de mettre la main à la pâte.
Prenons le temps, avant de passer à
la pratique, de donner quelques-
unes des rares caractéristiques de
base de l’USB (le Universal Serial
Bus). Il existe, dans la première mou-
ture de cette norme, la version USB-
V1.1, les périphériques qui tra-
vaillent à faible vitesse (1,5 Mbit/s)
et ceux qui l’utilisent à pleine vitesse
(12 Mbits/s). La vitesse de transmis-
sion la plus faible dépasse déjà de
beaucoup les taux de transmission
usuels des interfaces sérielles
actuelles. L’un des problèmes
majeurs que l’on rencontrait sur un
PC tant soit peu « évolué » était une
absence d’interface qui soit encore
libre. L’USB présente l’indiscutable
avantage de permettre, par la simple
adjonction d’un répartiteur de bus
(HUB), de disposer de 4 nouveaux
ports. Il est, théoriquement, possible
de connecter un maximum de
127 périphériques au total.
La connexion USB est en mesure de
fournir la tension d’alimentation
requise par les périphériques petits
consommateurs. Elle peut fournir
jusqu’à 100 mA sans le moindre pro-
blème. Il est même possible, à condi-
tion de mentionner spécifiquement
ce besoin, de drainer 500 mA.
Nombre d’applications de laboratoire
typiques se contentent de beaucoup
moins. L’absence de câble d’alimen-
tation pour chacun des périphé-
riques à alimenter est un excellent
moyen de lutter contre les imbroglios
MICROINFORMATIQUE

de câbles. 6 MHz
RESONATOR
En principe, les périphériques USB R/C EXT

peuvent être connectés au système


CY7C63001
(et également en être déconnectés)
sans qu’il ne soit nécessaire de RAM
INSTANT-ON 8-bit
mettre le PC hors-tension. Le sys- OSC 128 Byte
NOW TM Timer
tème d’exploitation charge automati-
quement les pilotes requis. Cette
EPROM RAM
capacité de « Plug-and-Play » avan- 2K/4K Byte 128 Byte
cée simplifie très sensiblement la
mise en oeuvre simultanée de plu- Power
on
sieurs périphériques. Un nouveau Reset Interupt USB PORT PORT
Controller Engine 0 1
périphérique connecté au système se Watch
Dog
voit attribuer automatiquement un Timer
numéro de bus. Après interrogation
du nouveau périphérique le système
D+, D- P0.0 - P0.7 P1.0 - P1.3
d’exploitation en reçoit les informa- VCC / VSS
000079 - 12
tions requises et charge automati-
quement le pilote nécessaire.
De ce fait, tout périphérique USB pos- Figure 1. Structure interne du CY7C63001.
sède, dès le départ, une certaine
« intelligence » que n’a pas un péri-
phérique connecté à l’interface RS-
232. Il lui faut s’identifier auprès du concerné. Après cette initialisation, est, actuellement, malheureusement, limitée
système d’exploitation par le biais toute nouvelle connexion du périphé- au système d’exploitation Windows 98. Si l’on
d’une série de tableaux descriptifs de rique se traduira pour un chargement dispose de Windows 95 version SR2, l’utilisa-
manière à ce que ce soit bien le pilote automatique du pilote sans que l’uti- tion de périphériques USB est, en principe
adéquat qui soit choisi et chargé. lisateur n’ait plus à intervenir. Dès également possible, mais il ne faut pas s’at-
Lors de la connexion initiale du péri- déconnexion du périphérique le tendre à un fonctionnement parfaitement
phérique le système d’exploitation pilote correspondant est automati- fiable en toutes circonstances. Il est partant
demande la présentation (sur dis- quement supprimé de la mémoire. recommandé, si l’on envisage de travailler
quette ou CD-ROM) du pilote La mise en oeuvre de l’interface USB avec des périphériques USB, d’opter pour

5V

R1 R2 R3 C1
470Ω

270Ω

IC2 R4
10k

8 100n
47Ω

7 1
TH DQ
6 2
TL CLK R5
D1 D2 S1 5 3 C2
1k5

TC RST

100n
4
DS1620 K2
12
JP1 JP2 1 VCC 10
P0.0 XI
2 X1
P0.1
K1 3 K3
P0.2 IC1 USB Type B
1 4 11
P0.3 XO
20 6MHz 1
P0.4
19 13 2
P0.5 D–
18 CY7
P0.6 C63001
17 14 3 4
P0.7 A CP D+
5
P1.0
16 9
P1.1 CEXT
6
P1.2
15
P1.3
10 VSS VPP
7 8

000079 - 11

Figure 2. L’électronique de l’interface USB avec son capteur de température.


MICROINFORMATIQUE

1
000079-1 Liste des composants
H1

H2

R4 H5

Résistances :
+ R1 = 470 Ω
IC2

K1

0
IC1 R2 = 270 Ω
R3 = 10 kΩ
K3 C1
R4 = 47 Ω
ROTKELE )C(
1-970000

R5 = 1kΩ5
R5

X1 JP2
Condensateurs :
C1,C2 = 100 nF
C2
R1
R2
H3

R3 D1 D2 Semi-conducteurs :
H4

JP1
S1 D1 = LED rouge (haut
rendement)
D2 = LED verte (ordinaire) Figure 4. Recopie d’écran de la
IC1 = CY7C63001ACP démonstration proposée à l’origine
(programmé EPS000079-41) par Cypress.
IC2 = DS1620 (Dallas
Semiconductor)

Divers :
JP1,JP2 = embase mâle à
000079-1
(C) ELEKTOR

2 contacts + cavalier
K1 = bornier encartable à
1 rangée de 10 contacts (voire
2 borniers à 5 contacts)
K2 = picot
K3 = embase USB Type B (Farnell
153-503)
S1 = bouton-poussoir unipolaire à
contact travail
X1 = résonateur céramique
6 MHz (Murata CSA6.00MG
chez Farnell 295-292 ou
Newport ZTA6.00MT)
Figure 3. Cette platine servira de support à Figure 5. Le programme permet
Boîtier : 61⋅22⋅80 mm (tel que
l’ensemble de l’électronique constituant notre d’accéder à toutes les fonctions de
Conrad 522848)
interface USB. port; il affiche en outre la température.

Windows 98. Windows NT4 n’a pas la outre un processeur RISC, une ROM vos premières expériences avec
moindre idée de ce qu’est l’USB, OTP (One Time Programmable = pro- l’USB et ensuite d’utiliser cette inter-
Windows NT5 et Windows 2000, les sys- grammable une unique fois) pour le face USB pour nombre d’applications
tèmes d’exploitation les plus récents de programme d’exploitation (firm- plus sérieuses.
Microsoft®, supportent eux l’interface USB. ware), 2 ports qui mettent à disposi- L’interface USB possède les fonctions
Signalons cependant que nous n’avons pas tion, ensemble, 12 lignes, sans suivantes :
testé le fonctionnement des programmes oublier de la RAM et un temporisa- – Mesure de la température
accompagnant ce projet sous Windows 2000. teur (timer). – Interrogation d’une touche
L’interface USB décrite dans le pré- – Réglage de la luminosité d’une
L’électronique sent article repose sur une applica- LED
tion de Cypress. Cette société pro- – Mise à disposition d’un total de
L’interface USB fait appel à un microcontrô- pose, avec son Starter Kit CY3640, de 9 lignes de port d’E/S.
leur du type CY7C63000 de Cypress. Les fonc- réaliser un thermomètre à inter- L’interface USB est compatible à
tions premières dont fut chargé ce microcon- face USB. La fonction première du kit 100% avec l’application de thermo-
trôleur à l’origine étaient les souris et autres est bien évidemment de faire mètre présentée à l’origine par
ports de jeux; il intègre un moteur USB (USB connaissance avec le processeur et Cypress. On pourra partant utiliser
engine) complet prévu pour le mode USB son environnement. Ce Starter Kit tous les programmes d’exemple et
faible vitesse (Lowspeed USB). Les 2 lignes n’est malheureusement plus dispo- implémenter le pilote de thermo-
de données, D+ et D– attaquent le microcon- nible actuellement sous sa forme ori- mètre. Dans l’application originale, il
trôleur directement. ginale, mais le présent projet publié n’était cependant pas possible d’ac-
La figure 1 nous montre la structure interne dans Elektor lui donne une nouvelle céder à toutes les lignes de port.
de ce composant. Le microcontrôleur intègre, vie. Il vous permettra de procéder à Pour cette raison le progiciel du
MICROINFORMATIQUE

(D2 ne sera pas partant du type faible cou-


Informations sur Internet rant) à la ligne de port P13. Cette LED visua-
lise une énumération se faisant bien, sa lumi-
Microsoft VB5 nosité pouvant prendre l’un des 16 niveaux
www.microsoft.com/msdownload/vbcce.htm disponibles. Par le biais de l’embase à cava-
lier JP2, le bouton-poussoir S1 se trouve relié
Microcontrôleur CY7C63001ACP de Cypress à la ligne de port P1.2. Le bouton-poussoir fait
http://www.cypress.com/cypress/prodgate/usb/cy7c63001.html
basculer un registre interne du programme,
Capteur de température de Dallas Semiconductor registre que l’on peut interroger par le biais
http://www.dalsemi.com/datasheets/pdfs/1620.pdf de l’interface USB.
Les 2 lignes de bus D+ et D– sont amenée à
une embase USB du type B. S’il vous est
impossible de mettre la main sur un connec-
microcontrôleur a été modifié et doté composant requiert au total 3 lignes teur de ce type, rien ne vous interdit de souder
de fonctionnalités additionnelles. de port, P0.0 à P0.2. Les 9 autres l’extrémité du câble USB directement aux
L’électronique sur laquelle repose lignes de port disponibles, P0.3 à points correspondants de la platine. L’inter-
cette réalisation prend la forme du P0.7 et P1.0 à P1.3, ont été amenées face USB dérive sa tension d’alimentation
schéma représenté en figure 1. La sur le bornier à griffe K1 pour une (+5 V et Masse) du bus. La seconde LED, D1,
mesure de la température est confiée éventuelle utilisation. On pourra éga- de couleur rouge sera elle du type à haut ren-
à un circuit intégré spécialisé de Dal- lement, par le biais du cavalier JP1, dement (ou faible courant comme vous vou-
las Semiconductor, un DS1620; ce connecter une LED verte ordinaire lez), signalise la présence de la tension d’ali-

Listage 1. Le module USB1.BAS avec déclarations


Attribute VB_Name = “Module1”
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type

Declare Function CreateFile Lib “kernel32” Alias “CreateFileA”


(ByVal lpFileName As String, ByVal dwDesiredAccess As Long,
ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES,
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long,
ByVal hTemplateFile As Long) As Long
Declare Function DeviceIoControl Lib “kernel32” (ByVal hDevice As Long,
ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize
As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long,
lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long

Public Security As SECURITY_ATTRIBUTES


Public gOverlapped As OVERLAPPED
Public hgDrvrHnd As Long
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_WRITE = &H2
Public Const FILE_SHARE_READ = &H1
Public Const OPEN_EXISTING = &H3
MICROINFORMATIQUE

Listage 2. Accès à tous les ports et fonctions


Dim sFileName As String USB_IO
Dim htemp As Long End Sub
Dim lIn As Long, lInSize As Long, lOut As Long, lOut-
Size As Long, lSize As Long Private Sub HScroll1_Change()
Dim lTemp As Long Wert = HScroll1.Value * 8 + 7
Sub USB_IO() WrRAM 46, Wert
sFileName = “\\.\Thermometer_0” Label4.Caption = Str$(Wert)
hgDrvrHnd = CreateFile(sFileName, GENERIC_WRITE Or End Sub
GENERIC_READ, FILE_SHARE_WRITE Or FILE_SHARE_READ,
Security, OPEN_EXISTING, 0, 0) Private Sub HScroll2_Change()
lTemp = DeviceIoControl(hgDrvrHnd, 4&, lIn, lInSize, WrRAM 47, HScroll2.Value
lOut, lOutSize, lSize, gOverlapped) Label5.Caption = HScroll2.Value
htemp = CloseHandle(hgDrvrHnd) End Sub
End Sub
Private Sub HScroll3_Change()
Sub Brightness(Level) Brightness HScroll3.Value
lIn = Level * 256 + 14 Label6 = HScroll3.Value
lInSize = 2 End Sub
lOutSize = 1
USB_IO Private Sub Timer1_Timer()
End Sub lIn = 11
lInSize = 1
Function RdPort(Port) As Integer lOutSize = 3
lIn = Port * 256 + 20 USB_IO
lInSize = 2 Temp = ((lOut \ 256) And 255) / 2
lOutSize = 2 Minus = (lOut \ 65536) And 255
USB_IO If Minus > 0 Then Temp = Temp * -1
RdPort = (lOut / 256) And 255 Button = (lOut \ 16777216) And 255
End Function Label7.Caption = Str$(Temp)
Label8.Caption = Str$(Button)
Sub WrRAM(Adresse, Wert) Label9.Caption = Str$(RdPort(0))
lIn = 65536 * Wert + Adresse * 256 + 23 Label10.Caption = Str$((RdPort(1)) And 15)
lInSize = 3 End Sub
lOutSize = 1

mentation. Cette tension est également dis- pouvant circuler au niveau de l’em- entre 2 (et non pas 3) de ses broches.
ponible aux picots + et 0 pour d’éventuelles base USB. Les condensateurs requis au fonc-
applications. En tout état de cause, une résis- Le microcontrôleur dérive sa fré- tionnement de ce composant y sont
tance de 47 Ω, R4, limite, même en cas de quence d’horloge d’un résonateur déjà intégrés.
court-circuit, à 100 mA l’intensité maximale céramique travaillant à 6 MHz pris

Fonctions 15h: Write Port


lIn: Valeur (0 à 255), Port (0,1), 15h (longueur : 3 octets)
iOut: État (longueur : 1 octet)
0Bh: Read Thermometer
lIn: 0Bh (longueur : 1 octet) 16h: Read RAM
iOut: Button, Signe, Température, État (longueur : 4 octets) lIn: Adresse (0 à 255), 16h (longueur : 2 octets)
iOut: valeur, État (longueur : 2 octets)
0Eh: Set LED Brightness
lIn: luminosité (0 à 15), 0Eh (longueur : 2 octets) 17h: Write RAM
iOut: Status (longueur : 1 octet) lIn: Valeur (0 à 255), Adresse (0 à 255), 17h (longueur : 3 octets)
iOut: État (longueur : 1 octet)
14h: Read Port
lIn: Port (0,1), 14h (longueur : 2 octets) 18h: Read ROM
iOut: Valeur, État (longueur : 2 octets) lIn: Index, Adresse (0 à 255), 18h (longueur : 3 octets)
iOut: Valeur, État (longueur : 2 octets)
MICROINFORMATIQUE

dré) qui comporte un certain nombre de


Contenu de la diskette déclarations et le fichier de format USBElek-
EPS 000079-11 tor.VPB, responsable non seulement du pilo-
tage graphique du moniteur mais aussi du
CypressSemiconductorsCYPRESS.INF Infos d’installation des pilotes USB déroulement correct de l’application (com-
Thermometer.exe Programme de démonstration de Cypress munication avec le contrôleur de Cypress,
USB 20e.ASM Listing en assembleur pour le microcon- traitement de données). le programme est
trôleur lancé par une action sur l’option de menu
Usb 20e.hex Fichier HEX pour le microcontrôleur « RUN ».
Usb 20e.lst Code-source pour le microcontrôleur Il vous faudra, pour pouvoir accéder au
USBTherm.sys Pilote USB pilote SYS, des fonctions de Windows sui-
USBelektor.vbp Projet Visual Basic
vantes : CreateFile, CloseHandle et DeviceIo-
USBelektor.frm Fichier Format Visual Basic
Control. Elles sont déclarées dans le cas pré-
usb1.bas Module Visual Basic
copyright.txt Texte de copyright sent dans le module USB1.BAS.
contents.txt Contenu de la disquette Le fichier de format USBElektor.FRM (Lis-
tage 2) permet l’accès à toutes les fonctions
de port du microcontrôleur. Il faudrait en
outre conserver toutes les fonctions de ther-
momètre d’origine. Nous avons besoin, pour
Réalisation et essais ment présent sur la disquette per- la commande du pilote, d’un certain nombre
La mise en place des composants met de réaliser un thermomètre à d’informations que nous passerons en
sur la platine dont nous vous pré- visualisation graphique de l’évolu- revue un peu plus loin. Ce programme génère
sentons les 2 faces en figure 3, ne tion de la température. L’utilisateur l’écran représenté en figure 5.
devrait pas poser le moindre pro- peut, par action sur le bouton-pous- Lors de l’appel du pilote par le biais de l’ins-
blème. Il n’y a pas la moindre contre- soir présent sur la platine, passer, à truction DeviceIoControl il faut indiquer un
indication à utiliser des supports (de condition que le cavalier JP2 soit numéro de fonction de pilote, un tampon
bonne qualité) pour les 2 circuits implanté, d’un affichage en degrés d’entrée IIn et un tampon de sortie IOut. Si le
intégrés. Une fois l’étape de réalisa- Celsius à un affichage en degrés numéro de fonction de pilote reste impertur-
tion terminée il reste à s’assurer de Fahrenheit. Il est en outre possible bablement à 4, le choix de l’action propre-
l’absence d’erreur d’implantation de jouer sur la luminosité de la LED ment dite se fait par le biais d’un octet de
grossière, c’est-à-dire visible au pre- verte. Le microcontrôleur comporte commande de IIn. Le pilote répond, en fonc-
mier coup d’oeil avant de pouvoir à cet effet un convertisseur numé- tion de la fonction concernée, en fournissant
passer au moment crucial. Connec- rique/analogique à 4 bits permettant entre 2 et 4 octets. L’octet de poids faible
tez l’interface USB au PC par le biais d’ajuster la valeur du courant drainé comporte à chaque fois une information
d’un câble USB de type A–B. au niveau des sorties de port P1. Le d’état du résultat de l’accès. Il existe, outre la
Quelques instants plus tard Win- logiciel permet uniquement de jouer lecture du thermomètre, d’autres fonctions
dows devrait se manifester et signa- sur le port P1.3. On voit en figure 4 spécifiques servant au réglage de la lumino-
ler la détection de la connexion au une recopie d’écran du thermomètre. sité de la LED et à l’accès à la mémoire et aux
système d’un nouveau matériel. Un ports du microcontrôleur. L’encadré « Fonc-
message demande alors la présenta- Programmation tions » vous en donne un aperçu.
tion d’une disquette comportant le La fonction Write Port ne travaille, avec le
pilote correspondant. Répondez-y en
en Visual BASIC pilote disponible, que partiellement. L’auteur
introduisant dans le lecteur corres- Une interface ne présente un intérêt a partant essayé, tout en ne modifiant pas le
pondant (A: en règle générale) la dis- réel que lorsqu’il est également pos- pilote, de trouver une solution qui tout en se
quette (EPS000079-11) disponible sible de la piloter par le biais de pro- limitant uniquement à une adaptation du pro-
auprès des adresses habituelles grammes que l’on aura écrit soi- giciel du microcontrôleur permettrait toutes
requise. Le système y trouvera le même. L’accès au périphérique se les tâches ayant trait au port. La solution à ce
fichier CypressSemiconductorsCY- fait à l’aide d’un petit programme en problème a pris la forme d’une utilisation de
PRESS.INF donnant la description du Visual BASIC. Nous avons utilisé l’instruction WriteRAM. Il fut défini
périphérique et le pilote requis. Il VB5CCE, un programme mis gratui- 2 variables RAM additionnelles :
procédera ensuite au chargement du tement au téléchargement par
pilote proprement dit, Microsoft®, logiciel parfaitement Fonctions du port 0 : 2Eh
USBTherm.sys. Dès que ce proces- fonctionnel, mais n’étant cependant Fonctions du port 1 : 2Fh
sus sera terminé on aura énuméra- pas en état de produire des applica-
tion du périphérique, c’est-à-dire son tions autonomes (stand-alone). Il faut à partir de là écrire directement les
annonce au système. On verra alors Après installation du set de pro- données de port dans certaines des adresses
s’allumer non seulement la LED grammes, on ouvre le projet présent de mémoire de RAM du microcontrôleur. Le
rouge, si tant est que le cavalier JP1 sur le lecteur de disquette A; on progiciel actualise ensuite les sorties de port.
soit mis en plase, mais également la sélecte et ouvre ensuite le fichier Le programme d’exploitation se trouve
LED verte. USBelektor.VSP. Le projet comprend d’ailleurs dans le fichier USB 20e.asm présent
Le programme de démonstration le module USB1.BAS (cf. la liste du sur la disquette évoquée plus haut.
Thermometer.exe de Cypress égale- contenu de la disquette dans l’enca- (000079)

Vous aimerez peut-être aussi