je souhaiterais dialoguer avec mon pc via un port USB à partir d'un petit microcontrolleur genre AVR d'atmel ou PIC de microchip.
dans un premier temp j'aimerais écrire moi même le protocole. j'ai téléchargé la doc de la norme USB 1.1, malgrès que l'anglais ne soit pas vraiment un probléme, je n'est pas compris comment écrire mon protocole.
la seul chose que je sais faire pour l'instant, c'est placer la résistance pour dire quel vitesse on utilise.
si quelqu'un pouvait m'aider un petit peu il me serait d'un grand secour!!!!Merci d'avance!
tu t'attaque vraiment à du lourd là!!
Si je comprend bien tu veut partir de 0 et t'embêter avec toute les histoires de fréquences d'horloge et tout le tralala. J'ai pas une grosse expérience de l'usb mais je serais toi je passerai par un chipset USB en complément de mon microcontroleur. Prends un chipset configurable et tu verra que tu aura déjà du boulot à gérer les trames que va t'envoyer le système d'exploitation pour configurer ton chipset (device descriptor, descriptor configuration etc...). De toute façon une fois que tu aura fabriqué ton propre chipset, c'est ce qui t'attend. Utilise windows xp ou vista, si tu veut pas t'embêter avec les problèmes de driver. Si tu réussi déjà à faire ça, tu vas ensuite devoirs te taper les commandes SCSI (enfin tout dépend de l'utilisation du périphérique que tu veut créer). Et la croit moi tu va commencer à en avoir marre.Surtout que tu va presque pas trouver de doc sur le net. Télécharge un sniffeur usb et analyse les trames usb d'un composant similaire pour commencer ça peut t'aider à comprendre comment les choses se passent.
a plus! et bon courage
22/01/2008 - 22h22
RISC
Date d'inscription
novembre 2006
Messages
2 882
Re : Protocole USB
GwadaBoug,
L'USB 1.1 est pratiquement obsolète sur les micros et peu d'infos sont disponibles sur internet. Je te conseille de plutôt t'investir sur l'USB 2.0.
Ci-joint plusieurs sites sur l'USB et sur le PIC18F4550 pour te permettre de progresser :
Salut les gars
Moi je suis en train de bosser sur justement le proticole USB.
J'essaye avec beaucoup de mal de développer un host à partir d'un microcontroleur ATMEL ( AT90USB1287 ) pour lire une clé USB
J'ai été sur pas mal de forum, mais beaucoup traite plutôt des pb hardware enfin de 1er niveau c'est à dire plutôt du niveau d'administrateur sur PC plutôt que de développeur software/hardware.
En effet on a pas beaucoups de réponse si on rentre dans le coeur même des commandes SCSI ou UFI. D'ailleurs à ce propos est-ce que quelqu'un peut me dire quelle est la différence entre les commandes UFI et SCSI.
Moi ce que je cherche c'est des sites ou des liens vers lequels me diriger pour reussir mon développement.
Aujourd'hui j'ai réussi les étapes suivantes
- Detection de la clé
- Lecture de ses descripteur
- Enumeration
- Commande SCSI :
- Protocole Bulk Only :
- TEST UNIT READY : OK
- READ CAPACITY : la fonction me renvoi STALL
=> Clear FEATURE sur ENDPOINT IN
=> La clé ne répond plus
Voilà j'en suis là et impossible de m'en sortir.
Sur internet y a pas grand chose, personnne sait pourquoi.
Quand tu regarde dans les spécifs USB, t'as des explication sur les différente commande par contre t'as rien qui traite les cas d'erreur.
Dans la spécif USB on te dit que si la fonction READ CAPACITY quand elle lit le device te renvoi STALL , tu fais un Clear FEATURE sur le ENDPOINT qui à renvoyer le STALL, la en l'occurence DATA IN, et c'est tout. Ils te disent qu'après le clear feature , ça marche, c'est vraiment n'importe quoi.
Y a un site qui est super bien c'est l'USB en bref parce qu'il ya un mec qu'a traduit le site de BEYOND LOGIC
J'te file le lien :
Mais ça suffit pas, il faudrait trouver des exemples de programmes host qui traite du problème.
Mais alors là sur microcontroleur , t'as rien ou quasi rien.
T'as quelques programme qui traine en C++, bonjour la prise de tete, car non seulement c'est complex le c++ mais en plus les mecs qui programmes du c++ faut qu'il programme comme des surdoué, qu'ils noient le poissons comme ça tu comprend vraiment plus rien
Si quelqu'un a déja fait ce type de developpement en C sur µcontroleurs et que vous avez des examples de programme en C , voir des organigrammes qui traitent de la lecture et ecriture sur les secteurs d'une clé usb , ce serait chouette.
J'ai bien essayé des analyseur de protocole ou des traceurs de trames usb sur PC mais c'est pas vraiment tres clair car j'ai essayé de reproduire les trame mais ça ne le fait pas.
J'ai peux etre des pb de vitesse d'horloge, enfin je ne sais pas c'est la galère.
J'ai meme essayé du coté des linuxiens mais c'est pareil, c'est tout un ensemble de suite de commande Linux qu'on comprend pas forcememt alors si quelqu'1 peut m'aider ce serait super.
Y a bien qd meme des développeurs de Host Mass storage sur le net !
Merci d'avance
28/10/2008 - 22h23
VIIV
Date d'inscription
novembre 2007
Âge
23
Messages
293
Re : Protocole USB
Je n'irai pas par 56 chemins. Si tu travailles avec un PIC télécharge le framework (1.0 le 2.2 chez moi marche pas) du site de Microchip, tu prend le code tout fait de Microchip qui s'occupe de l'énumération, du mode de transfert (bulk, interruption etc), de l'endpoint et de tout ce tralala. Le seul fichier que tu modifie c'est ton user.h et user.c.
Au début moi aussi je voulais ecrire un protocole USB pour PIC, mais j'ai vite jeté l'éponge, la quantité phénoménale des donnes a traiter. (Juste cote PIC, parce que cote PC, le driver...) Et puis c'est pas pour rien que Microchip met a dispo des utilitaires USB (Cote PC et PIC), Atmel doit faire la même chose de son cote.
Si tu veux continuer, t'es courageux ou tu as plein de temps a perdre.