vers GE

Projet AB 07 2001
Carte d'acquisition - USB

Etudiants : Jonathan BOM et Stéphane PIERREL
Tuteur Technique : Roland CHAPUIS
Tuteur Industriel : Jean-Yves RIGNAULT

Photo du projet AB07

Mots-clefs

USB - microcontrôleur - language assembleur - Driver Windows USB

Présentation du sujet

Introduction
Ce projet a pour but la conception et la réalisation d'une carte de mesure interfacée avec le bus USB. Cette carte sera composée d'un microcontrôleur, gérant la carte. De plus, une application propre au PC devra être réalisée.
L'USB
L'USB a été conçu à l'origine comme une extension de l'architecture du PC. Il permet de connecter plusieurs périphériques sans avoir besoin d'éteindre l'ordinateur. En effet, les connecteurs présentent l'avantage de pouvoir se brancher à chaud. C'est pourquoi, ce bus remplacera prochainement les liaisons séries et parallèles classiques. L'USB présente de nombreux avantages : il est rapide, permet de plus importants transferts de données et il est plus simple d'utilisation que les "anciennes" interfaces. Actuellement, l'USB V1.1 est la version courante (l'ancienne version est la V1.0 et la prochaine sera la version 2.0). Cette version (V1.1) peut fonctionner à 2 vitesses. En haute vitesse il fonctionne à 12Mbits/s, tandis qu'en vitesse faible il fonctionne à 1.5Mbits/s.
Objectifs
L'objectif principal est de réaliser une carte d'acquisition. Pour cela, nous réaliserons plusieurs étapes :

Cahier des charges

La carte doit présenter au moins 2 entrées et une sortie analogiques et être suffisamment rapide (un transfert de données au moins toutes les millisecondes).

Solutions retenues

Eléments technologiques
Pour réaliser notre carte, plusieurs composants s'offraient à nous. Nous en avons recensé une dizaine. Ceux-ci peuvent être classés en 2 groupes : les interfaces USB et les microcontrôleurs intégrant l'USB. Après une recherche de disponibilité et de coût auprès des distributeurs de composants, nous avons trouvé 2 circuits USB : le PIC16C675 de chez Microchip microcontrôleur avec interface USB low speed) , et le PDIUSBD12 de chez Philips (circuit interface USB/parallèle).

Avancement

Recherche sur l'USB
Initialisation
Lorsque l'on connecte un périphérique au bus USB d'un PC, celui-ci déclenche une phase d'énumération. Les principales étapes de cette énumération sont décrites ici : Quand on retire un périphérique USB, le PC reçoit un signal qui l'avertit de l'absence du périphérique. Une fois ce signal reçu, le PC gère l'information en fermant les applications liées au port USB.
Différents types de transfert
La norme USB définit 4 types de transfert : Nous avons décidé d'utiliser le transfert Interrupt, car il est simple d'utilisation et correspond à notre application.
Recherche de composants USB :
Nous avons trouvé une dizaine de composants utilisables pour notre carte. Ceux ci peuvent être classés en 2 groupes : les interfaces USB et les microcontrôleurs intégrant l'USB. Après des recherches et études sur ces composants, nous avons classé nos composants par différents critères (disponibilité, coût, performance,...). Nous avons ainsi choisi une interface USB de chez Philips : PDIUSBD12. Pour contrôler le PDIUSBD12, un PIC16F877 (microcontrôleur fabriqué par Microchip) a été choisi pour ces performances.
Programme implanté dans le microcontrôleur
Premièrement, le programme initialise le PIC puis le PDIUSBD12. Ensuite, le programme se charge de l'énumération décrite précédemment. Après cela, le programme se charge du transfert de données. Le langage de programmation est celui de l'assembleur spécifique au PIC.
Conception de la carte
La carte est composée de 2 parties importantes : L'application côté PC
Afin de pouvoir transmettre des données entre une application et le bus USB il faut passer par l'intermédiaire d'un driver. Nous avons adapté un driver USB sous Windows98 afin de le rendre compatible avec notre périphérique. Celui ci écrit en C, permet d'utiliser 2 pipes (liaison virtuelle unidirectionnelle entre le PC et le périphérique), en mode Bulk, l'un en entrée et l'autre en sortie. Cependant ce driver et son application n'ont pu être validés entièrement.