Rapport Programmateur de PIC

74
57 École Normale Supérieure de l’Enseignement Technique (ENSET) Rabat MÉMOIRE DE FIN D’ÉTUDES Présenté par :

Transcript of Rapport Programmateur de PIC

Page 1: Rapport Programmateur de PIC

57

École Normale Supérieure de l’Enseignement Technique (ENSET)

Rabat

MÉMOIRE DE FIN D’ÉTUDES

Présenté par : BOUCHBOURA Loubna DAHAN Fatima-Ezzahra Encadré par :

Mr Elhachem ELYOUSSFI

Page 2: Rapport Programmateur de PIC

57

Dédicace :

A nos chères famillesAvec toute tendresse, amour et

Affectueuse reconnaissance.A tous ceux qui nous sont

chers…

Page 3: Rapport Programmateur de PIC

57

Remerciement :

Au terme de ce travail, nous tenons tout d’abord à exprimer nos vifs remerciements à Monsieur A.ELGHARAD, Directeur de l’ENSET- Rabat, à notre coordinatrice Mme M.ZAZI et à l’ensemble du corps professoral et administratif pour leurs efforts considérables et leur contribution à la formation des techniciens spécialisé.

Nous exprimons notre gratitude à notre encadrant Mr H.ELYOUSSFI Professeur à l’École Normale Supérieure de l’enseignement technique pour son suivi et son soutien tout au long de ce projet.

Page 4: Rapport Programmateur de PIC

57

Nous tenons à remercier également les membres du jury d’avoir bien voulu juger notre travail.

Et enfin, nous exprimons notre profonde gratitude à toutes les personnes qui nous ont aidées à surmonter toutes les difficultés rencontrées le long de ce projet.

Cahier de charge……………………………………………………………………………….…5

Introduction général………………………………………………………………..……………6

Partie 1 : Objectif et contexte du projet 

I. Analyse fonctionnelle………………………………………………………………....7

1-Objectif………………………………………………………………………...7

2-Identification du besoin………………………………………………………...7

3-Les situations de vie et le milieu extérieurs…………………….………….…...8

4-Méthode FAST………………………………………………………………….9

Partie 2 : Le port série USB

I. Généralité sur USB……………………………………………………………...….12

1-Origine USB……………………………………………………………………12

2-Avantage de l’USB…………………………………………………………….12

3-Vitesse de transfert………………………………...……………………………13

4-Le cable USB……………………………………………………………………14

5-Bootloader………………………………………………………………………16

Page 5: Rapport Programmateur de PIC

57

II. Bus USB…………………………………………………………………….……….16

1- Définition…………………………………………………………………..16

2- Topologie du Bus USB……………………………………………………..17

3- Protocole de communication USB……………………………………….....18

4- Type de paquet USB…………….………………………………………….19

5- Alimentation USB…………………………………………………………..24

III. Différents types de transfert………………………………………………………25

IV. L’énumération……………………………………………………………………..26

1- Définition de l’énumération…………………………………………………....26

2- Principe de fonctionnement…………………………………………………...26

V. Les descripteurs..…………………………………………………………………27

1-définition………………………………………………………………………...27

VI. Canaux de communication (PIPES)……………………………………………….27

VII. Exemple de programme communication (PIC- USB)…………………………….28

Partie3 : Etude du programmateur PIC 18F2550

I. Pic programmateur 18F2550 (microcontrôleur USB)………………………..31

1- Brochage du pic 18F2550…………………………………………………....32

2- Schéma de pic 18F2550 avec USB…………………………………………33

3- Architecture interne du pic 18F2550………………………………………..34

II. Programmation des mémoires .................................................……………….35

1- EEPROM……………………………………………………………………36

2- EPROM …………………………………………………………………… 38

III. Etude de schéma du programmateur …………………………………………………………….47

1- Organigramme de fonctionnement……………………………………………………………47

2- Schéma synoptique ………………………………………………………………………………… 49

3- Schéma du programmateur sous ISIS……………………………………………………………50

Page 6: Rapport Programmateur de PIC

57

4- Analyse de schéma……………………………………………………………………………………52

Conclusion………………………………………………………………………………54

Webrgaghie……………………………………………………………………………...55

Cahier de charge

Titre du projet   : Etude d’un programmateur Pic USB

Etapes   : Analyse fonctionnelle du système Etude du port série USB Etablir l’organigramme de notre objectif Etablir schéma synoptique du fonctionnement Etude du programmateur PIC 18F2550

Page 7: Rapport Programmateur de PIC

57

Introduction Générale

Le développement des applications à base des microcontrôleurs PIC est devenu de plus en plus courant, ceci est dû à plusieurs causes : beaucoup de ressources internes (périphériques intégrés), mémoires embarquées de plus en plus grande, vitesse de calcul accrue…

En effet, un microcontrôleur est un composant parfaitement adapté à des applications embarquées, il permet, en le programmant, d’effectuer et de contrôler une tâche tout en comparant son état des conditions préfixées par l’utilisateur.

 L’utilisation des microcontrôleurs fait appel tout d’abord à leur programmation. Il existe plusieurs méthodes de programmation selon le langage utilisé, par exemple en assembleur on peut écrire un programme où on va tirer le maximum des performances du microcontrôleur mais ce programme nécessite beaucoup de travail et surtout beaucoup de temps.

Page 8: Rapport Programmateur de PIC

57

Heureusement, avec la montée en puissance des microcontrôleurs, on voit apparaitre des compilateurs en langage C qui permettent de gagner un temps considérable pour le développement des programmes.

Partie 1 : Objectif et contexte du projet

I-Analyse fonctionnelle du système :

1)-Objectif   :

L’analyse fonctionnelle à pour but d’exprimer le besoin en termes de services attendus. Pour ce faire elle cherche à s’assurer du besoin et à identifier les fonctions que doit remplir le produit pour le satisfaire.

2)-Identification du besoin   :

Un besoin est un sentiment de manque et d’insatisfaction, pour mieux le cerner on utilise l’outil de la bête à corne. Cet outil permet de répondre aux trois questions suivantes :

A qui rend-il service ? Sur quoi agit-il ? Dans quel but ?

A qui rend-il service ?

Page 9: Rapport Programmateur de PIC

57

3)-Les situations de vie et le milieu extérieur   :

Une fois le besoin est identifié, il ne s’agit pas de chercher immédiatement des solutions, il s’agit par contre de définir les fonctions que doit remplir le produit futur par la détermination des services attendus de lui dans un environnement donné. Les composants de cet environnement sont appelés les éléments du milieu extérieur et l’interaction entre les fonctions est illustrée sur un schéma appelé  «La pieuvre». 

Utilisateur

Sur quoi agit-il ?

Dans quel But ?

Les Pics

Programmateur de pic USB

Programmer les différentes familles de pic

A travers l’USB

Programmateur de pic USB

Sécurité

Environnement

Alimentation

Utilisateur

Pics

Ordinateur

Port USB

FC1

FC2

FC3

FP2

FP1

Esthétique

TémoinsFC5

FC4

Programme

FP3

Page 10: Rapport Programmateur de PIC

57

FP : Fonction principaleFC : Fonction contrainte

FP1 : permet d’acquérir le programme d’après l’ordinateur à travers le port USB. FP2 : permet à l’utilisateur de choisir le support de pic utilisé.FP3 : permet à l’utilisateur de sélectionner le programme à exécuter.FC1 : Respecter la sécurité de la carte de programmation.FC2 : assurer l’alimentation électrique de la carte.FC3 : Etre esthétique.FC4 : indiquer l’état de programmateur.FC5 : Respecter et se corréler avec l’aspect environnemental

4)-La méthode FAST   :

Elle permet de décomposer les fonctions de service en fonctions techniques. Ces fonctions techniques débouchent sur des solutions constructives qui se basent sur la démarche de questionnement Pourquoi et comment?

Tout déplacement vers la droite répond à la question : Comment réaliser cette fonction ? Comment est réalisée la fonction i ? Par la fonction k.

Tout déplacement vers la gauche répond à la question : Pourquoi réaliser cette fonction ? Pourquoi est réalisée la fonction k ? Parce ce qu'il faut réaliser la fonction i.

Page 11: Rapport Programmateur de PIC

57

Programmer les différentes familles

des Pics

Alimenter le système

Externe

Interne

Port USB

Connecteurs

Communiquer avec l’utilisateur

Témoins

Bip sonnerie

Afficheurs

Pics Arm arduinoSwitchProgramme

Port USB

Connecteurs

Témoins

Bip sonnerie

Page 12: Rapport Programmateur de PIC

57

II- ObjectifNotre objectif est de faire une étude d’un programmateur PIC 18F2550 qui va programmer des autre pics auxiliaires prenant le programme de l’ordinateur à travers un port série USB selon le schéma suivant :

Gérer les informations

Sélectionner le support

utilisé

Manuel

Automatique

Afficheurs

Pics

Arm arduino

Switch

Programme

Page 13: Rapport Programmateur de PIC

57

Figure 1 : schéma synoptique du programmateur

Partie 2 : Le Port série USB

I-Généralité sur l’USB

1. Origine de l’USB

Tout au début, avant la standardisation il y avait des problèmes avec la compatibilité de l’USB, car chaque fabricant de carte mère inventait son propre protocole, il n’y avait pas encore de norme.

C’est pourquoi on était très septique sur ce nouveau protocole à ses débuts. La dénomination USB qui est « Universal Serial Bus » a dérivée vers le nom « Useless Serial Bus».

Le bus USB est donc réellement né de l’alliance en 1994 de sept partenaires industriels (Compaq, DEC, IBM, Intel, Microsoft, NEC et Northern Telecom). C’est eux qui ont commencé à créer la norme USB. Le bus USB a été conçu à l’origine pour faciliter les transferts de données en particulier définir une connectique « universelle » et « Plug & Play », utilisable aussi bien pour une souris que pour un modem ou un moniteur.

Conçu également pour répondre au besoin d’intégration entre le monde du PC et celui du téléphone et enfin pour répondre au besoin d’extensions multiples en dehors du PC, en effet on peut brancher jusqu'à 127 périphériques en théorie, cela change de la liaison série habituelle.

2 . Avantages de l’USB

Les avantages de l’USB sont nombreux : faible coût de l'interface, alimentation possible des dispositifs via le câble, indépendance vis à vis des machines hôtes, Hot Plug &

Page 14: Rapport Programmateur de PIC

57

Play (c'est à dire branchement et débranchement sans avoir besoin d'arrêter le PC), jusqu'à 127 périphériques possibles, fiabilité et sécurité (détection et correction d'erreurs), plusieurs vitesses possibles et 4 types de transferts.

3. Vitesse de transfert de l’USB

a. Définitions des différentes vitesses

L’USB supporte 3 vitesses : Low Speed à 1.5Mbit/s – (USB 1.1)

Full Speed à 12Mbit/ s – (USB 1.1) High Speed à 480Mbit/ s – (USB 2.0)

Tous les PC supportent actuellement deux vitesses de bus, le Full Speed et le Low Speed. La vitesse High Speed a été ajoutée avec l’apparition de la spécification USB 2.0. Cependant, pour pouvoir utiliser cette vitesse de transfert, il faut être équipé de cartes mères et de contrôleurs USB supportant l’USB 2.0.

b. Raison des trois vitesses de l’USB

Le Low Speed à été introduit pour deux raisons essentielles, la première est que les périphériques USB ne sont pas cher, c’est à dire que tous le monde peut se le permettre. La deuxième raison est pour avoir des souris USB un peu plus pratiques. En effet les câbles USB pour le Low Speed n’ont pas besoin d’être blindés et, de ce fait, sont très souples.

Le Full Speed a été conçu pour remplacer les liaisons séries et parallèles.

Le High Speed est une vitesse supplémentaire qui a été introduit lors de la mise à jour de la norme USB 2.0. Elle permet de mettre en valeur la puissance du bus USB.

c. Domaine d’utilisation des différentes vitesses

Les applications Low Speed concernent essentiellement des périphériques interactifs (claviers, souris, consoles), mais aussi des afficheurs, des lecteurs (de carte à puce) et des applications en automatismes (mesure, capteurs) appelées à se développer.

Page 15: Rapport Programmateur de PIC

57

En mode Full Speed on va trouver la téléphonie, les modems, les disques, les imprimantes, les fax ainsi que les scanners, certains lecteurs de carte à puce et le domaine multimédia (jeux, audio, vidéo limitée).

d. Choix « Low » ou « Full » USB Pour faire le choix entre la version USB Low Speed et Full Speed, il suffit de placer une résistance de tirage sur l’interface d’entrée (Fonction ou Hub). Cette résistance de tirage (Pull-Up de 1.5Kohm) est placée soit sur D- dans le cas du Low Speed ou sur D+ dans le cas du Full Speed.

Figure 2 : Choix Low ou Full USB – Résistance de Pull Up

4. Le câble USB

a. Définition du câble USB

Page 16: Rapport Programmateur de PIC

57

Le câblage USB est relativement simple , il a la même structure quelle que soit la vitesse de transmission.

Le câble transporte deux paires de fils :

La paire de signal destinée au transfert de données D+ et D- et une seconde paire qui peut être utilisé pour la télé alimentation GND et Vcc. La première paire est non blindée pour les périphériques lents tels que les claviers, souris fonctionnant à 1.5Mbits/s tandis que caméras, micro et autres ont recours à une paire de fils torsadée blindée pour atteindre les 12Mbits/s

b. Composition du câble USB

Chaque connecteur dispose de deux fils d’alimentation (5V et GND) et deux fils destinés au transfert de données (D+ et D-).

Une connexion entre deux PC est aussi possible par l’adjonction d’une interface spéciale qui déjoue la vigilance du PC maître et transforme le second PC en «esclave».

En version Low Speed le blindage n'est pas obligatoire (ce qui assure une plus grande souplesse de manipulation en particulier pour une liaison souris).

Figure 3 : Composition d’un câble USB

La longueur maximale autorisée par la norme est de 3m pour un câble non blindé donc généralement pour un périphérique Low USB ( 1.5Mb/s) et de 5m pour un câble blindé dans le cas d’un périphérique Full USB (12Mb/s).

Le câble USB est composé de deux fiches bien différentes : En amont d’une fiche appelé connecteur USB de type A, branché au host (PC).

L’extrémité aval par contre peut se retrouver en deux versions : Connecteur USB du type B et un mini connecteur type B (appelé souvent optionnel). Ce dernier est réservé aux dispositifs de très faible dimension (ou de grande intégration) tels les appareils photo numériques.

Page 17: Rapport Programmateur de PIC

57

Figure 4 : Brochage des connecteurs USB de type A et B

Et voici l’aspect des connecteurs en trois dimensions :

Figure 5 : Aspect des connecteurs USB de type A et B

5.Bootloader

Le Bootloader est un programme résidant dans le PIC en haut de la mémoire. Il permet de mettre à jour le programme contenu dans le PIC en écrivant directement dans la mémoire sans passer par un programmateur dédié.

Le Bootloader est protégé contre les écritures dans la zone réservée à son code. Nous l’utiliserons ici avec la liaison USB.

Au démarrage du PIC, celui-ci scrute un bouton s’il est enfoncé, il passe en mode programmation, sinon il exécute le programme.

En mode programmation il dialogue avec un programme du PC et efface l’ancien programme pour mettre le nouveau.

II- Bus USB

1-Définition

Page 18: Rapport Programmateur de PIC

57

L'USB (Universal Serial Bus) est comme son nom l'indique, un protocole de communication série entre entités. Plusieurs versions sont actuellement disponibles. L'intérêt principal de ce bus est le fait qu'un grand nombre de périphériques (jusqu'à 127) peuvent être connectés simultanément au même hôte, et qu'à tout moment, il est possible de les débrancher et de les rebrancher sans redémarrer l'ordinateur(Host) ça veut dire la configuration à chaud. Le bus USB est un bus fonctionnant sur la hiérarchie, commandé par un host unique.

Le host utilise un protocole Maître/Esclave pour communiquer avec les périphériques USB. Cela signifie que c’est le host qui décide du transfert des données et que les différents périphériques ne peuvent pas établir de connexion entre eux tant que le maître n’a pas donné l’autorisation. On peut dire que cela peut être un inconvénient par rapport aux autres protocoles mais il ne faut pas oublier que l’USB a été conçu avec des compromis de coût et de performance. Le fait que le bus USB fonctionne avec le protocole Maître/Esclave résout implicitement ces problèmes comme par exemples les problèmes de collision ou d’arbitrage de périphériques.

2. Topologie du Bus USB

La topologie est une topologie « étoile série » ou encore « tiered star » qui tolère jusqu'à 5 niveaux de concentrateurs. La spécification limite le nombre de périphérique à 127.

Un dispositif conforme à la norme 2.0 peut être relié à un HUB 1.1 mais dans ce cas le trafic sera celui défini par la norme 1.1. Les divers cas possibles sont précisés sur la figure ci-dessous.

Notons qu'à l'initialisation d'un "device" (ou d'une fonction selon la terminologie utilisée par le groupement USB) celui-ci reçoit une adresse. Les transferts Full Speed déclenchés par le "host" parcourent tous les tronçons, mais seule la fonction adressée va évidemment répondre.

Ainsi s'il s'agit d'un ordre d'impression il sera reçu par tous les périphériques, mais seule l'imprimante le comprendra.

Page 19: Rapport Programmateur de PIC

57

Figure 6 : Topologie du bus USB

Et voici en image un exemple de branchement avec le topologie étoile de l’USB.

Page 20: Rapport Programmateur de PIC

57

Figure 7 : Exemple de branchement respectant la topologie du Bus USB

3. Protocole USB Le client driver communique les demandes de transfert des applications via des IRP (I/O Packet). Puis, l’USB driver traduit chaque transfert en une suite de transactions. Ensuite l’USB Host Controller driver regroupe les transactions en trames et finalement l’USB Host Controller traduit les transactions en paquets et enchaîne les trames.

Le synoptique ci-dessous traduit de façon imagée les liens entre les différents éléments.

Page 21: Rapport Programmateur de PIC

57

Figure 8 : Protocole USB

4. Type de paquet USB

Contrairement à la liaison série RS232 et des interfaces séries similaires où le format des données envoyées n'est pas défini, l’USB lui est composé de plusieurs couches de protocoles bien définis. La plupart des circuits intégrés USB s'occuperont de la couche inférieure, la rendant ainsi presque invisible au regard du concepteur final.

Mais il est tout de même intéressant d’en connaître les grandes lignes.

Application

USB Host Controlleur

USB Driver

USB Host Controller driver

USB Client Drivers

USB Bus Interface

USB Logical Device

Function

Flux physique

Flux logique

USB Device HOST System

Page 22: Rapport Programmateur de PIC

57

L’USB a quatre types différents de paquet :

Token (En-tête) SOF (Start of frame) Data (Optionnel) Acknowledge (Handshake)

Les paquets jetons indiquent le type de la transaction qui va suivre et a pour but de transporter l’adresse USB et le sens du transfert. Les paquets de données contiennent les données utiles. Les paquets "Handshake" sont utilisés pour valider les données ou rapporter les erreurs. Et les paquets début de trame (SOF) indiquent le commencement d'une nouvelle trame.

L’entité de transfert USB est appelée transaction, elle est généralement constituée de paquets juxtaposés, la transition étant un paquet SOF qui indique le début d’une autre transaction. On dit alors qu’un transfert est compose d’une succession de transactions

Voici ci-dessous le détail d’une transaction : Transaction

Token Packet Fi gure 7 :Data Packet Transactio

n USB Ack Packet SOF

Figure 9 : Transaction USB

Le premier bit transmit est le bit LSB.

Les différents paquets ont une structure bien définie que voici:

Paquet

Page 23: Rapport Programmateur de PIC

57

Synchronisation Packet ID Packet Specific Information CRC EOP

8 bits Figure10 : Structure des paquets USB

La structure des paquets étant identique il faut préciser que le format est différent selon la nature du paquet. Voici ci-dessous les différents formats de paquet. Les trames ont une durée de 1ms, elles sont marqués par le Token SOF (Start of Frame). Avec le système d’encapsulation.

L'USB a quatre types différents de paquet. Les paquets jetons indiquent le type de la transaction qui va suivre, les paquets de données contiennent la charge utile, les paquets « poignée de main » sont utilisés pour valider les données ou rapporter les erreurs et les paquets début de trame (SOF) indiquent le commencement d'une nouvelle trame.

a. Les paquets jetons :

Il y a trois sortes de paquets Jetons :

In -informe l'appareil USB que l'hôte veut lire des informations ; Out - : informe l'appareil USB que l'hôte veut envoyer des informations ;

Setup - utilisé pour commencer les transferts de commande.

Les paquets jetons doivent se conformer au format suivant :

b. Les paquets de données :

Il y a deux sortes de paquets de données, chacun étant capable de transmettre plus de 1024 octets de données.

Data0 ; Data1.

Le mode haute vitesse définit deux autres PID de données, DATA2 et MDATA. Les paquets de données ont le format suivant :

Page 24: Rapport Programmateur de PIC

57

c. Les paquets début de trame (SOF) :

Le paquet SOF composé d'une trame de 11 bits est envoyé par l'hôte toutes les 1 ms sur un bus pleine vitesse ou bien toutes les 125 μs  sur un bus haute vitesse.

e. Explication des différents champs des paquets d’une trame USB Sync

Tous les paquets doivent commencer avec un champ Sync. Le champ Sync fait de 8 bits

de long pour la basse et pleine vitesse ou 32 bits pour la haute vitesse est utilisé pour synchroniser l'horloge du récepteur avec celle de l'émetteur / récepteur. Les 2 derniers bits indiquent l'endroit ou le champ PID commence.

PID

PID signifie Paquet ID. Ce champ est utilisé pour identifier le type de paquet qui est envoyé.

Le tableau suivant montre les valeurs possibles.

Groupe Valeur PID Identificateur Paquet

Token 0001 OUT Token

1001 IN Token

0101 SOF Token

1101 SETUP Token

Data 0011 DATA0

Page 25: Rapport Programmateur de PIC

57

1011 DATA1

0111 DATA2

1111 MDATA

Handshake 0010 ACK Handshake

1010 NAK Handshake

1110 STALL Handshake

0110 NYET (No response Yet)

Tableau 11 : Désignation des PIDs

Il y a 4 bits pour le PID, toutefois pour s'assurer qu'il a été reçu correctement, les 4 bits sont complémentés et répétés faisant un PID de 8 bits au total. Le format résultant figure

Ci-dessous :

PID0 PID1 PID2 PID3 nPid0 nPID1 nPID2 nPID3

Figure 12 : Format réel d’un PID

Voici ci-dessous les explications des différentes abréviations utilisées :

SOF = Start Of Frame

SETUP = Configuration

ACK = ACKnowledge; Validation

NAK = No AcKnowledge; Pas de validation

STALL = Bloqué

PREamble = Synchronisation initiale

Split = Partager

Ping = S'assure d'une bonne connexion

Page 26: Rapport Programmateur de PIC

57

ADDR

Le champ adresse détermine à quel appareil le paquet est destiné. Sa longueur de 7 bits, lui permet de supporter 127 appareils. L'adresse 0 n'est pas valide, tant qu'un appareil qui n'a pas encore d'adresse attribuée, doit répondre aux paquets envoyés à l’adresse 0.

ENDP

Le champ de terminaison est composé de 4 bits, autorisant 16 terminaisons possibles. Les

appareils Low Speed, toutefois peuvent seulement avoir 2 terminaisons additionnelles au dessus du canal de communication par défaut ( 4 terminaisons maximales)

CRC

Les Contrôles à Redondance Cyclique sont exécutés sur les données à l'intérieur du paquet

de charge utile. Tous les paquets jetons ont un CRC de 5 bits tandis que les paquets de données ont un CRC de 16 bits.

EOP

Fin de Paquet. Signalé par une sortie unique zéro (SE0) pendant une durée approximative de 2 bits suivie par un " J " d'une durée de 1 bit.

5-Alimentation USB

a. Alimentation de périphérique USB Pour simplifier l’explication de l’alimentation des périphériques USB, la norme a prévu deux niveaux d’alimentations, le premier niveau consomme une unité d’énergie, l’autre consomme cinq unités. Une unité vaut 100mA.

C’est à dire qu’il existe des composants qui consomment 100mA et d’autres 500mA. Généralement les composants Low USB consomment une unité d’énergie et les composants High USB consomment jusqu'à cinq unités.

Page 27: Rapport Programmateur de PIC

57

Par défaut tous les composants consomment une unité et c’est par soft qu’on lui demande de consommer plus si l’application le nécessite, dans le cas d’un composant High USB bien sur. Toutes ces informations sont contenues dans les descripteurs, le composant ne pourra jamais consommer plus que ce qui est prescrit dans son descripteur.

On peut donc en déduire de cela qu’un périphérique High power doit posséder un dispositif d’alimentation séquentiel (100mA, puis 500mA).

Aucune fonction (Device ou hub) ne peut consommer plus de 100mA sur le bus avant d’être énumérée. Apres énumération un Device peut consommer jusqu’a 500mA pour un device « High power device » ou rester à 100mA pour un Low Power Device..

L’USB est donc assez flexible et peut supporter plusieurs types d’alimentation. Certains composants peuvent être entièrement alimentés par le bus USB. (Bus powered).

b. Avantage de l’alimentation USB Le fait de pouvoir alimenter un périphérique USB avec le même câble qui transporte les données à de multiples avantages. D’une part cela évite déjà à l’utilisateur de brancher le périphérique sur une prise de courant extérieure, ceci rend déjà le périphérique plus léger et moins encombrant. D’autre part d’un point de vue du concepteur, cela réduit le prix de fabrication.

III-Différents types de transfert a-Transfert en mode Contrôle

Ce mode de transfert est compatible avec le Low et Full Speed USB. Il est utilisé pour les opérations d’initialisations et de configurations. Il est éventuellement utilisable pour les transferts standards. Le mode contrôle est aussi utilisé pour tenter d’obtenir un débit Low Speed acceptable, ou pour utiliser le driver de classe HID standard.

b- Transfert en mode Interrupt

Ce mode de transfert est également compatible avec le Low et Full Speed USB. Il est

destiné à des échanges limités et périodiques, il garantit la fréquence de scrutation ainsi que la reprise sur les erreurs. Il est utilisé pour des transferts à l’initiative du périphérique (asynchrones) et pour des transferts périodiques ou permanents comme les claviers.

Page 28: Rapport Programmateur de PIC

57

c. Transfert en mode Isochrone

Ce mode de transfert est uniquement compatible avec le Full USB. La bande passante

est garantie (début, latence), par contre dans ce mode il n’y a pas de reprise sur erreur. Il est utilisé pour des transferts nécessitant un flux régulier de données comme par exemple les caméras ou les téléphones … La bande passante réclamée et non utilisée est perdue.

d. Transfert en mode Bulk

Ce mode de transfert est uniquement compatible avec le Full USB. Ce mode est réservé

pour les gros transferts de données (ex : imprimantes…)

Le débit est variable et dépend de la disponibilité. Ce mode assure la reprise sur les erreurs.

Les échanges isochrones sont les plus privilégiés dans le sens ou le host leur réserve une

bande passante garantie. Celui-ci peut refuser l’accès au bus à un périphérique s’il juge que les ressources qu’il requiert ne sont pas disponibles.

IV- L’énumération

1- Définition de l’énumération Le terme «énumération» désigne un processus USB par lequel le système identifie et configure le périphérique en lui donnant une adresse unique. C’est une gestion dynamique de la connexion et de la déconnexion des périphériques reliés à un bus USB.

2- Principe de fonctionnement de l’énumération

Page 29: Rapport Programmateur de PIC

57

En effet lors de la connexion (ou déconnexion) il y a une phase de détection et une phase d'identification effectuée par l'hôte qu'on appelle énumération. Lors de cette phase, le périphérique fournit à l'hôte une suite de descripteurs qui permettent son identification complète. Lors de cette phase d’énumération, on assigne une adresse unique (Unique ID) au périphérique, on charge le driver correspondant et on positionne le composant dans la configuration qui lui à été donné par les descripteurs. Il n’est pas indispensable de connaître parfaitement le processus d’énumération et le système de descripteurs pour pourvoir faire fonctionner un composant USB mais il est bon d’en connaître les grandes lignes pour pouvoir, au besoin.

Lors de l'énumération initiale (à la mise sous tension du PC) les HUBs et périphériques

sont initialisés de proche en proche.

V- Les descripteurs

1-Définition d’un descripteur

On peut définir les descripteurs comme étant des blocs d’informations pré formatés. Tous composants USB doit obligatoirement posséder les descripteurs standards. Tous les transferts d’informations durant cette phase d’énumération se font suivant le type Control. Il va de soi que tout composant USB doit pouvoir être capable de supporter ce type de transfert. Nous verrons par la suite que ce n’est pas le cas pour tous les autres types de transfert que nous définirons.

VI-Canaux de communications (Pipes) :

Tandis que l'appareil envoie et reçoit des données sur une succession de terminaisons, le logiciel client transfère des données à travers des canaux de communications.

Un canal de communication (Pipe) est une connexion logique entre l'hôte et les terminaisons. Les canaux de communications auront aussi un ensemble de paramètres qui leur seront associés tels que :

combien de bande passante leur est allouée, quel type de transfert (Commande, Bloc, Iso ou Interruption) ils utilisent, la direction du flux de données et les tailles maximales du paquet/tampons.

Par exemple le canal de communication par défaut est un canal bidirectionnel composé d'une terminaison zéro IN et d'une terminaison zéro OUT avec un type de transfert de commande.

Page 30: Rapport Programmateur de PIC

57

VII-Exemple de programme de communication PIC-USB:

figure 13 : schéma du programmateur sous isis

Le code   :

#include <p18cxxx.h>#include <usart.h>#include "system\typedefs.h"

#include "system\usb\usb.h"

#include "user\user.h"

/** V A R I A B L ES **/#pragma udata

char input_buffer[64];char output_buffer[64];

/** P R I V A T E P R O T O T Y P E S **/void InitializeUSART(void);

/** D E C L A R A T I O N S **/#pragma codevoid UserInit(void){ LATA = 0; // clear data latches

Page 31: Rapport Programmateur de PIC

57

TRISA = 0; // direction: output pins

InitializeUSART(); }

void InitializeUSART(void){ TRISCbits.TRISC7=1; // RX TRISCbits.TRISC6=0; // TX SPBRG = 0x71; SPBRGH = 0x02; // 0x0271 for 48MHz TXSTA = 0x24; // TX enable BRGH=1 RCSTA = 0x90; // continuous RX BAUDCON = 0x08; // BRG16 = 1}

void ProcessIO(void){

static unsigned int cnt = 0;char str[32];char input_buffer[10];static int blink = 1;

if( (usb_device_state < CONFIGURED_STATE) ||(UCONbits.SUSPND==1) ) return;

// User Application USB tasks

cnt++;if(blink) { // blink the LED

if(cnt == 32768) PORTA = 1;if(cnt == 0) PORTA = 2;

}

if(getsUSBUSART(input_buffer,1)) // if a byte has beenreceived from the computer { if(input_buffer[0] == 'r') { // r (red) -> light the LED on RA0

blink = 0;PORTA = 1;if(mUSBUSARTIsTxTrfReady()

putrsUSBUSART("\rRED.\r\n");return;

}

if(input_buffer[0] == 'g') { // g (green) -> light the LED on RA1

Page 32: Rapport Programmateur de PIC

57

blink = 0;PORTA = 2;

if(mUSBUSARTIsTxTrfReady())putrsUSBUSART("\rGREEN.\r\n");

return;}

if(input_buffer[0] == 'b') { // b (blink) -> blink the two LEDs alternatively

blink = 1;if(mUSBUSARTIsTxTrfReady())

putrsUSBUSART("\rBLINKING.\r\n");return;

}

if(mUSBUSARTIsTxTrfReady())putrsUSBUSART("\rNot understood (b|g|r).\r\

n");}

}

Page 33: Rapport Programmateur de PIC

57

Partie 3 : Etude du programmateur pic 18F2550

I- Pic Programmateur 18F2550 (microcontroleur USB)

Le terme PIC18 désigne une des familles de microcontrôleurs 8 bits de Microchip.Cette famille est caractérisée par un jeu d'instructions commun de 75 instructions

Remarque à propos de l'identification :

18 = famille PIC18F = mémoire de programme de type Flash (et donc reprogrammable)

Exemple : 18F2550 MICROCONTROLEUR 8 BITS FLASH CMS contrôleur Famille / Série: PIC18

Nombre de bits: 8bit

Nombre d'E/S: 24

Tension, alimentation : 5V

Nombre de broches: 28

Taille mémoire de programme: 16Kwords

Taille EEPROM: 256Byte

Taille mémoire, RAM: 2KB

Température d'utilisation min: -40°C

Température de fonctionnement max..: 85°C

Fréquence, horloge: 48MHz

Interface: EAUSART, I2C, SPI, USB

Interface Type: EUSART, I2C, SPI, USB

Interruptions, nombre interne de: 19

Page 34: Rapport Programmateur de PIC

57

1- Brochage du pic 18F2550

Le 18F2550 est un circuit intégré de 28 broches, que l'on peut trouver dans un boîtier PDIP.

Le 18F2550 possède jusqu'à 24 entrées/sorties :

7 dans le port A (RA0 à RA6) 8 dans le port B (RB0 à RB7)

7 dans le port C (RC0 à RC2, RC4 à RC7)

1 dans le port E (RE3)

2 broches de masse (broches 8 et 19).

Page 35: Rapport Programmateur de PIC

57

2- Schéma de pic 18F2550 avec USB

Page 36: Rapport Programmateur de PIC

57

3- Architecture interne du Pic 18F2550

Page 37: Rapport Programmateur de PIC

57

Page 38: Rapport Programmateur de PIC

57

II- Programmation des mémoires

1-EEPROM( Electrically Erasable Programmable Read Only Memory)

L'EEPROM est une mémoire non volatile programmable que nous pouvons effacer par un signal électrique.

L'avantage de l'EEPROM sur l'EPROM est que nous pouvons reprogrammer notre ROM par un signal électrique sans devoir l'enlever de son support.

L'effacement se fait adresse par adresse, mais très lentement (quelques millisecondes par octet).

Nous pouvons utiliser des EEPROM en tant que RAM non volatile si les changements ne sont pas trop fréquents, mais la lenteur d'effacement et le coût élevé de ce type de mémoire limitent leur usage à des fonctions ROM reprogrammées si le besoin s'en ressent.

Alors que nous utilisions des FAMOS pour les EPROMs, le type de transistor que nous utilisons dans les EEPROMs est le SAMOS (Staked gate avalanche injection MOS transistor).

Un champ électrique issu d'une tension de plus de 24V durant 10mS appliquée entre le drain et la source crée un effet de tunnel (les électrons peuvent alors voyager dans les deux sens).

Comme la seconde grille (G2) et la source sont mises à la masse, les électrons traversent l'isolant (15 nm environ de dioxyde de silicium au niveau du drain) et la tension de seuil revient à la normale. Le transistor est passant (non bloqué) et l'EEPROM est effacée.

Pour programmer notre EEPROM, nous devons bloquer certains transistors. La source et le drain sont mis à la masse, et une tension positive est appliquée entre la seconde grille et la masse. Des électrons traversent la mince couche d'oxyde à la sortie du drain et sont piégés dans la grille flottante.

Page 39: Rapport Programmateur de PIC

57

L'élimination par voie électrique des électrons piégés dans la grille flottante (G1) est facilitée par l'étroitesse de la couche entre l'oxyde et la grille.

Cette charge se maintient une dizaine d'années en condition normale.

2-EPROM (Programmable Read Only Memory)

A la différence d'une mémoire PROM (Programmable Read Only Memory) qui ne peut être programmée qu'une seule fois (ou OTP : One Time Programming), une mémoire EPROM peut être effacée et reprogrammée plusieurs fois et peut être lue à l'infini. Les EPROM possèdent une fenêtre transparente permettant le passage d'ultra-violet nécessaires a l'effacement. L’effacement et la programmation nécessitent de retirer physiquement EPROM de son support.

2-1. Programmeur d'EPROM :

La carte doit être reliée à un ordinateur pour recevoir les données à programmer dans la mémoire

Pour effacer la mémoire EPROM, il faut la retirer du circuit et soumettre la puce électronique qu'elle contient à travers une fenêtre transparente en quartz à un rayonnement ultra-violet. C'est un processus contraignant, (seule technologie d'effacement disponible à l'époque), qui limite les possibilités d'utilisation de cette mémoire. Il est de cette façon impossible d'effacer sélectivement certaines parties de la mémoire. Quand l'EPROM est exposée à la lumière ultra-violette (bande UV-C), c'est toujours la totalité de l'EPROM qui est réinitialisée. Modifier une seule donnée demande donc l'effacement et la reprogrammation de la totalité de la mémoire EPROM.

Le principe de l'EPROM-UV est le suivant :

Une charge d'électrons est stockée dans la grille d'un transistor MOS ; une tension d'environ 25 V (environ moitié moins pour les modèles récents) est requise pour ce stockage lors de la programmation du composant. Si l'on illumine la puce avec des UV-C, l'on fournit assez d'énergie aux électrons piégés pour quitter la grille. La durée requise pour l'effacement est de 10 à 20 minutes.

Le transfert des données binaires vers un Programmeur d'EPROM (en) utilise généralement un fichier texte (ASCII).

Page 40: Rapport Programmateur de PIC

57

Exemple : ( Programmation par logiciel PICKIT)

Le programmateur PICKIT2 permet de programmer les PIC placés sur vos différentes cartes à microcontrôleur PIC.Pour cela la carte doit impérativement utiliser le connecteur prévu dont le schéma est rappelé ci-dessous :

-LANCEMENT DU LOGICIEL

Double cliquer sur :

Page 41: Rapport Programmateur de PIC

57

La fenêtre suivante apparaît :Menu des

commandes

Zone d’état

Barre de progression

Source

Page 42: Rapport Programmateur de PIC

57

Si le programmateur est bien reconnu, le message « PICKit 2 found and connected » apparaît.

Si la connexion n'est pas réalisée ou que le programme a été lancé avant de brancher le programmateur le message « PICKit 2 not found.Check USB connections and use Tools ->Check Communication to retry » apparaît.

A chaque reconnexion ou test de communication, lorsqu'il n'y a pas de cible connectée une fenêtre de mise en garde au sujet de la tension VDD apparaît.

Ne pas en tenir compte et cliquer sur OK

Page 43: Rapport Programmateur de PIC

57

1- Description du menu des commandes :

Import File : Importation d'un fichier .HEX à programmerExport File : Exportation d'un fichier .HEX lu dans un contrôleurExit : Sortie du programme (même effet que le bouton quitter)

DEVICE FAMILYBaseline : Concerne les contrôleurs en architecture 12bits

Page 44: Rapport Programmateur de PIC

57

Mid-range : Concerne les contrôleurs en architecture 14bits.12F6xx, 16F6xx, 7x, 7xx, 8x, 8xx

PIC18F : Concerne les contrôleurs de la famille 18FUne fois le circuit sélectionné le logiciel teste la cible. Si celle-ci n'est pas présente, la fenêtre « Error supply voltage » apparaît.

PIC24 : Concerne les contrôleurs de la famille 24Une fois le circuit sélectionné le logiciel teste la cible. Si celle-ci n'est pas présente, la fenêtre «  Error supply voltage »apparaît.

PROGRAMMER

Read device:

Lecture des zones programmes, données, ID et bits de configuration.

Write device:

Ecriture des zones programmes, données, ID et bits de configuration.

Verify:

Vérification des zones programme, données, ID et bits de configuration par rapport aux valeurs stockées dans le buffer.

Erase:

Effacement de la cible.

Blank Check:

Vérifie la virginité de la cible.

Verify on Write:

Vérification mot à mot lors de la programmation.

Page 45: Rapport Programmateur de PIC

57

Full Erase :

Effacement total de la cible. TOOLS

Enable cod protect:

Validation du code de protection de la zone programme pour les PIC de type Flash.

Enable Data protect:

Validation du code de protection de la zone de données pour les PIC de type Flash.Set OSCCAL:

Positionnement des valeurs de OSCCAL pour calibrer l'oscillateur interne.Target VDD source:

Type d'alimentation de la cible par le PX-200

Auto Detect:

Laisse le choix au PX-200 d'alimenter ou non la cible. (Non recommandé)

Forced PICKit2 :

Force le PX-200 à fournir la tension correcte. Une fois la tension validée, la LED de la cible s'illumine et la boite de dialogue de l'alimentation du PIC est activée. L'utilisateur peut alors sélectionner la valeur correcte. (Non recommandé)

Forced Target :

Ce choix permet de laisser au logiciel de choisir la tension en rapport avec la cible à programmer sélectionnée. L'utilisateur peut donc appliquer la valeur automatiquement proposée en toute sécurité. (Configuration recommandée)

Fast Programming :

Programmation rapide des cibles Flash.

Check Communication :

Page 46: Rapport Programmateur de PIC

57

Vérification de la connection Du PC à la Cible et téléchargement de l'ID du PIC.

Download PICKit2 Firmware :

Téléchargement du Firmware du PX-200. Appliquer régulièrement cette fonction afin d'avoir une version actuelle du logiciel embarqué dans le PX-200.

HELP:Affiche tous les manuels et documents techniques disponibles dans une boîte de dialogue.

Points importants à savoir :

1-Edition des données de la mémoire :

• LE PICKit2 permet l'édition et la modification de chaque emplacement mémoire, aussi bien pour la zone programme que pour la zone donnée.L'utilisateur peut cliquer sur n'importe quelle adresse pour changer la valeur actuelle.• De plus, l'utilisateur peut accéder à son choix au deux zones mémoire ou à une seule.

Page 47: Rapport Programmateur de PIC

57

2-Accès à la zone EEPROM seule :

• Cliquer dans la case " Enabled " de la zone " Program Memory " pour la décocher• Puis dans la case " Enabled " de la zone " EEPROM " pour la cocher.• Le message " Write and Read EEPROM data " doit être affiché en rouge.

Page 48: Rapport Programmateur de PIC

57

Raccourcis :

Le logiciel PICKit2 comporte 7 touches de raccourcis :Read : charge la cible dans le tampon.Write : Ecrit le tampon dans la cibleVerify : Vérifie la programmation.Erase : Efface la cible.Blak Check : Contrôle la virginité.Import Hex File + Write Device : Ouvre un fichier .hex et programme la cible avec.Read Device + Export Hex File : sauvegarde la cible dans un fichier .hex.

Page 49: Rapport Programmateur de PIC

57

3.Programmation à l'aide du bouton " PROGRAM " :

Le PX-200 possède un bouton permettant de lancer la programmation directement par une pression sur celui-ci. Cette solution est particulièrement utile lorsqu'il faut programmer plusieurs cibles aves le même programme sans devoir cliquer les mêmes séquences de manière répétitives.• Connecter le PX-200 à la cible.• Charger le ficher .hex dans le tampon.• Dans le menu , sélectionner " Programmer " puis " Write on PICKit button "

• Une boîte de dialogue s'ouvre avec le message "Waiting for PICKit2 button to be pressed…"• Une pression sur bouton du PX-200 lance la programmation.• Si plusieurs cible PIC identiques sont nécessaires, retirer le PIC, mettre le nouveau et presser le bouton.

Page 50: Rapport Programmateur de PIC

57

Remarque   : Il ne faut surtout pas avoir à la fois une alimentation par PicKit et une alimentation externe :

RISQUE DE COURT CIRCUIT Et DESTRUCTION de PICKIT

Page 51: Rapport Programmateur de PIC

57

III-Etude du schéma du programmateur de pic USB

1)- Organigramme du fonctionnement du programmateur :

Non

Oui

Non

Oui

Détecter L’USB

Tester[RAM]

Envoyer le DATA

Ecraser [RAM]

Test deTransfert

Clignotement d’une LEDLED est éteinte

Page 52: Rapport Programmateur de PIC

57

Non

Oui

Non

Oui

Tester le bouton

poussoir

Activer les deux tensions

(VPP, VDD)

Transférer

[RAM] [ROM]

Fin de transfert

Désactiver les tensionsVDD et VPP

Fin

Page 53: Rapport Programmateur de PIC

57

2)- Schéma synoptique (le pic maitre – les Pics esclaves)

Page 54: Rapport Programmateur de PIC

57

3)-Schéma du programmateur sous isis :

Page 55: Rapport Programmateur de PIC

57

La gestion du programmateur USB est confiée à un microcontrôleur de dernière génération PIC18F2550. Ce dernier sert d'interface entre notre PC et les différents microcontrôleurs que

nous souhaitons programmer.

Page 56: Rapport Programmateur de PIC

57

4- analyse de schéma

Bloc 1 : filtrage d’alimentation

Les deux sorties D+ et D- sert à envoyer l’information du USB vers le PIC 18F2550 (RC4 et RC5) et +5 et GND pour l’alimentation.L1 est une bobine permet de lissage et de choc.J3 est un connecteur.D2 est une LED permet de témoigner la présence d’alimentation à l’USB.C5 : condensateur chimique permet de stabiliser la tension.C4 : condensateur antiparasite ( éliminer les parasites)

Bloc 2 : Activation ou masquage de la tension d’alimentation VDD

Page 57: Rapport Programmateur de PIC

57

Bloc 3 : Activation et masquage de la tension de programmation VPP

Q5

Q6

Tension d’alimentation VDD

RB4= 1RB3= 1

Saturé Bloqué

5V

RB4= 0RB3= 0

Bloqué

Saturé

0V

VDD

VPP

Page 58: Rapport Programmateur de PIC

57

Q3 ( NPN) Q2 (PNP) Q1 (NPN) Tension de program- mation VPP

RB2= 0RA5= 1 RC1= 1

Bloqué

Bloqué saturé VPP=0V

RB2= 1RA5= 1 RC1= 0

saturé saturé bloqué VPP=5V

Page 59: Rapport Programmateur de PIC

57

Conclusion Notre formation de deux années en Génie électrique et informatique industrielle à l’ENSET de Rabat, nous oblige à réaliser un projet de fin d’études « Etude d’un programmateur de pic USB », afin de nous permettre de joindre entre toutes nos compétences acquises durant les deux années de formation et la pratique sur le terrain.

Ce projet nous a été bénéfique dans la mesure où il nous a familiarisés avec le bus USB et la manipulation des microcontrôleurs et plus précisément avec le PIC 18F2550. En outre, ce projet a énormément contribué à consolider nos connaissances dans la conception des projets et l’étude des cartes électroniques. A travers ce dernier on a su acquérir et l’esprit du travail en groupe avec tout l’échange d’idées qui vient avec, et la capacité de bien coordonner et répartir les tâche

Page 60: Rapport Programmateur de PIC

57

Webographie :

www.oumnad.123.fr www.technologuepro.com Wikipédia

Page 61: Rapport Programmateur de PIC

57

Page 62: Rapport Programmateur de PIC

57