Je voudrais me documenter sur les différentes classes USB existantes comme par exemple l'HID, le masse storage ... etc. Avez-vous des sites avec les différentes caractéristiques de chaque classe ? et si possible en français ^^
Merci à vous d'avance.
Nimes Age:67820 millions de kms autour du soleil !!
Messages
30 847
Re : Classes USB ?
Bjr à toi,
Qu'est ce que pour toi les "classes USB" ?
Me semble que USB est un protocole de communication (Bus Serie Universel)
Masse storage; je traduis STOCKAGE de MASSE, mais l'USB n'a rien à voir dans le stockage en lui meme.
Donc si tu peux etre plus "clair".
A+
"Bonjour" et "Merci" (pour ceux qui oublient!!)
08/06/2008 - 16h16
RISC
Date d'inscription
novembre 2006
Messages
2 453
Re : Classes USB ?
Salut,
Je ne connais pas de tutos en francais pour les classes USB.
Tu peux cependant trouver les documents originaux sur la spécification de chaque classe sur le site du consortium USB : http://www.usb.org/developers/devclass_docs
Actuellement pour contrôler un multiplexeur j'utilise le transfert d’interruption (HID). Mais c'est assez lent.
Il me faudrait une communication plus rapide mais avec peu d'erreur ou qui renvoi la trame s'il y a une erreur. Savez vous laquelle est la mieux entre "Les transferts de commande" et "Les transferts en Bloc". Et laquelle est la plus simple à mettre en oeuvre?
J'ai utilisé un programme de Microchip pour établir ma conexion USB HID. Savez vous si Microchip fourni aussi le model pour une connexion utilisant "Les transferts en Bloc" ou "Les transferts de commande" ?
Merci pour vos aides.
09/06/2008 - 17h36
RISC
Date d'inscription
novembre 2006
Messages
2 453
Re : Classes USB ?
Salut,
Les derniers framework USB de Microchip (v1.3 ou 2.1) supportent tous les types de transfert (CONTROLE, BULK, INTERRUPT) sauf les ISOCHRONOUS standards car il faut accepter jusqu'à 1023 octets dans les ENDPOINTS et la RAM devrait être beaucoup plus grande ( 32 endpoints x 1024 ) ce qui n'est pas possible avec l'architecture des PIC18 qui peuvent acceuillir au maximum 4Ko - la taille des registres SFR.
Il existe cependant je crois un support pour une version ISOCHRONOUS sur 64 octets.
Concernant tes problèmes de vitesses, n'oublie pas que dans l'USB c'est TOUJOURS le HOST qui scrute les périphs....
Si tu veux augmenter la vitesse, il faut choisir les types transferts qui garantissent de la bande passante ou opter pour une classe CUSTOM mais il faut être prêt éventuellement à écrire un driver WINDOWS.
Dans le framework Microchip, il y a un exemple de classe custom dont les sources et le driver sont utilisables. C'est celui qui est utilisé pour l'exemple de la carte PICDEM FS-USB avec le logiciel coté PC appelé PDFSUSB.EXE qui lit les interrupteurs, la température (I2C) .
Dans le framework 1.3 tu peux trouver cet exemple dans ce répertoire après installation : C:\MCHPFSUSB\Pc\ et aussi C:\MCHPFSUSB\fw\Demo\
Je te recommande un excellent livre sur l'USB orienté embarqué et Microcontroleur :
USB complete (3rd edition)
Jan Axelson
Tu peut l'acheter sur Amazone.
Il y a un truc que je ne comprends pas ... On établit une vitesse de transmission avec la résistance de pull-up (low-speed ou full-speed) en la mettant sur D+ ou D- ... etc. Mais chaque type de transfert à sa vitesse ... A quoi ça sert de définir une vitesse full-speed si après en utilisant le type HID je suis bloqué a 64 Ko/s ?
Il ne faut pas confondre bitrate and datarate :
* bitrate = vitesse totale de transmission (data + overhead du au protocole)
* datarate = payload (données de l'application elle-même)
En plus, le protocole USB définit que jusqu'à 127 périphériques simultanés peuvent être connectés !!! C'est pourquoi, suivant ton application, il faudra choisir un mode transfert qui garantit soit de l'intégrité des données, soit une bande passante minimum...
Si tu veux garantir de la bande passante, il faut impérativement un mode de tranfert adéquat.
Dans tous les cas, du côté device on ne peut JAMAIS imposer une bande passsante. La seule chose que tu avoir c'est je crois 10%, SI ton device est énuméré (car cela aussi tu ne peux pas le garantir).
Si tu peux imposer un système ou le nombre ET le type de device USB maximum est spécifié, tu pourra alors prédire un worst case meilleur que la spec USB ;=)
a+
13/06/2008 - 12h25
bartimeus
Date d'inscription
avril 2008
Âge
24
Messages
61
Re : Classes USB ?
Oula ... j'avais jamais vu ça :s
Si j'ai bien compris, si je configure en full-speed, "bitrate" respectera cette vitesse alors que "datarate" respectera la vitesse de son type de transfert ... C est bien cest ?
13/06/2008 - 21h03
RISC
Date d'inscription
novembre 2006
Messages
2 453
Re : Classes USB ?
Salut,
Dans mon exemple "datate" et "bitrate" sont applicables à tous les types de transferts et le débit des données utiles est évidemment toujours inferieur au débit du protocole. Mais comme tu l'as compris, seuls les types transferts qui garantissent de la bande passante peuvent te garantir un débit utile pour ton application. Chaque classe prédéfinie par le consortium USB (HID, CDC, MSD,...) impose un ou plusieurs types de tranferts. Seul le type CUSTOM laisse à l'utilisateur le choix de définir les transferts à utiliser et le protocole à utiliser (overhead)...mais cela a un prix...écrire un driver sous WINDOWS !!!