Académique Documents
Professionnel Documents
Culture Documents
Réaliser
par :
Chahla
essounn
i
EI2
2022/20
23
-1-
I. MISE EN SITUATION :
1. Introduction :
-2-
Le cœur de la structure interne d’un PSoC est un microcontrôleur 8-bits qui interagit avec :
- Mémoire Flash
- Oscillateurs Internes
- Multiplieur/Accumulateur
- Contrôleur I2C.
Tout au long des séances de l’atelier, nous allons utiliser la CT PSOC-DEV01 qui est un kit
didactique fabriqué et commercialisé par la société tunisienne Corail Technologies.
La CT PSOC-DEV01 est un système de développement pour les microcontrôleurs Cypress
PSOC. Elle est conçue pour permettre aux étudiants de tester rapidement et facilement les
capacités des microcontrôleurs PSOC. Elle permet aussi d’interfacer les microcontrôleurs PSOC
avec des circuits et des systèmes extérieurs.
Pour utiliser ce kit, il faut passer par ces étapes :
-3-
Figure 3: Présentation du kit
Dans ce qui suit, nous allons présenter le manuel d’utilisation de la CT PSOC-DEV01 avant
d’entamer la partie manipulation.
-4-
Figure 4: Schéma synoptique
-5-
On présente également le schématique de la carte dans l’ [Annexe1]. Ceci est conçu et fourni par
la société Corail Technologies.
A partir de ce manuel, on va étudier chaque bloc séparément afin d’identifier et comprendre le
rôle dans le fonctionnement de la carte.
c) Bloc MCU :
Le Bloc MCU contient trois autres sockets : DIP28, DIP20 et DIP8. Il est à signaler également
qu’avec cette carte, on peut monter et utiliser une liste non exhaustive des PSoC suivante :
CY8C21123 CY8C21223 CY8C21234 CY8C21323 CY8C21334 CY8C21434
CY8C21534 CY8C21634 CY8C22113 CY8C22213 CY8C24123 CY8C24223
CY8C24423 CY8C24794 CY8C24894 CY8C24994 CY8C25122 CY8C26233
CY8C26443 CY8C26643 CY8C27143 CY8C27243 CY8C27443 CY8C27543
CY8C27643 CY8C28000 CY8C28243 CY8C28403 CY8C28413 CY8C28433
CY8C28445 CY8C28513 CY8C28533 CY8C28545 CY8C28623 CY8C28643
CY8C28645 CY8C29466 CY8C29566 CY8C29666 CY8C29866
Tous les Ports du microcontrôleur sont connectés sur des connecteurs SILS pour les utiliser dans des
applications externes.
Le tableau ci-dessous indique les différents types de PsoC1 ainsi que leurs principales caractéristiques :
Tableau 1: Récapitulatif des différentes caractéristiques
-6-
Remarque :
d) Bloc d’alimentation :
Lors de l’utilisation d’une source extérieure, l’alimentation +5V est délivrée par le circuit
régulateur L49418V. Elle présente un switch S1 qui bascule entre ces deux types de sources
de tension.
Un Jumper est utilisé pour établir une connexion entre deux points. Sous la couverture plastique
du Jumper, il y’a un contact métallique qui établit une connexion quand le Jumper est placé entre
les deux points.
Il est utilisé soit pour sélectionner entre deux connexions possibles d’un connecteur de trois
pins : le pin du milieu peut être connecté au pin de droite ou de gauche, soit pour connecter le
microcontrôleur à un bloc donné de la carte.
Figure 8 : Jumper
-7-
f) Bloc LED :
Ce clavier contient 16 touches dont leur branchement avec les pins du microcontrôleur est
mentionné dans le tableau ci-dessous :
-8-
h) Bloc d’affichage :
Les afficheurs à cristaux liquides, autrement appelés afficheurs LCD (Liquid Crystal Display),
sont des modules compacts intelligents et nécessitent peu de composants externes pour un bon
fonctionnement.
La carte CT PSoC-DEV01 est équipée aussi d’un afficheur 4 digits 7 segments comme le montre la
figure ci-dessous :
-9-
Les afficheurs 7 segments sont un type d'afficheur très présent sur les applications embarquées :
les caractères (des chiffres, bien que quelques lettres soient utilisées pour l'affichage
hexadécimal) s'écrivent en allumant ou en éteignant des segments, au nombre de sept.
Cet afficheur 7segements est constitué de 4 digits reliés au port1 du microcontrôleur et 7
segments et un DP (digital point) reliés au port0 (voir le schématique dans l’Annexe1).
i) Bloc ADC :
La carte CT PSoC-DEV01 contient un potentiomètre utilisé pour ajuster une tension de test
d’une valeur comprise entre 0v-5v. Cette tension est connectée à travers un Jumper w1 au pin
P2.1.
L’utilisation de la conversion A/N est très répandue dans la plupart des applications. Dans notre
cas, le PSOC accepte une valeur mesurée qui varie entre 0v-5v.
j) Bloc Buzzer :
La carte CT PSoC-DEV01 contient un Buzzer connecté à travers d’un Jumper W4 au pin p2.5
pour le commander par un signal PWM.
- 10
-
Un Buzzer est un élément électromécanique ou piézoélectrique qui produit un sa caractéristique
quand on lui applique une tension.
La fréquence du signal sonore est relative au signal appliqué. Cette fréquence est généralement
comprise entre 2 kHz et 4 kHz. Ce type de Buzzer peut générer des bips graves, aigus, plus
graves ou plus aigus.
k) Capteur DS1820 :
Le thermomètre DS1820 est un capteur numérique de température qui capte une valeur entre
-55° et +125° avec une résolution de 0.5° (entre -10° et +85°).
Il communique avec le microcontrôleur par le biais d’une liaison 1_wire qui permet de
connecter (en série, parallèle ou en étoile) des composants avec seulement deux fils (un fil de
données et un fil de masse). Cette communication avec le PSoC est effectuée à travers les deux
pins p2.6 et p2.7.
l) Bloc de communication série (RS232) :
La communication RS232 est largement utilisée pour l’acquisition et le transfert point à point
des données entre le microcontrôleur et le PC.
Puisque le niveau de tension entre ces deux derniers n’est pas compatible, il faut utiliser le
MAX232 qui inclut deux récepteurs transformant les signaux RS232 en signaux TTL, et deux
émetteurs transformant les signaux TTL en signaux RS232.
Ce circuit utilise un convertisseur élévateur de tension pour fournir les niveaux de +12V et - 12V
à partir du +5V.
- 11
-
Tableau 3 : Configuration des PINs (RS232)
- 12
-
Figure 18: Outils de développement PSoC
Tout au long de cet atelier, nous faisons appel au logiciel PSoC Designer (voir Figure 19) pour
- 13
-
La conception d’un nouveau projet nécessite le passage par les quatre étapes suivantes :
- Sélection et placement des modules
- Configuration des modules et des drivers d'entrées et sorties
- Connexion des modules
- Codage, Compilation, vérification et débogage.
-
MANIPULATION 1 :
Activité 1 :
L’objectif de cette activité est de débuter avec une première application simple sur la carte CT
PSoC-DEV0 qui consiste à allumer une LED (voir figure 20) choisie parmi 8 (D9 par exemple).
Ceci sera effectué en expliquant pas à pas les différentes étapes de développement d’une
application PSoC.
- 14 -
Après l’installation du PSoC Designer, lancez le programme et créez un nouveau projet nommé
« TestLed »
Dans la fenêtre « Select Project Type», sélectionnez « select target device » et cliquez sur view
catalog. La fenêtre de « device catalog » s'ouvre. Cliquez sur l'onglet PSoC et choisissez la
référence CY8C27643-24PVXI.
Choisissez le langage de programmation C pour le programme main. Puis cliquez sur OK.
Dans la fenêtre « User Modules», sélectionnez « Misc Digital » et cliquez sur le module « LED
».
Paramétrez le module LED au niveau « Parameters-LED » et donnez les valeurs des champs
suivants :
1. Name
2. Port
3. Pin
4. Drive
(Vous pouvez afficher la documentation du module en cliquant avec le bouton droit sur le module LED
puis « Datasheet » puis « Show in Separate Window »).
Activité :
Afin de créer un nouveau projet, nous suivons les étapes mentionnées dans la figure ci- dessous :
- 15 -
Figure 22 : Etapes de création d'un nouveau projet
Dans la fenêtre « Select Project Type», sélectionnez « select target device» et cliquer sur view catalog.
La fenêtre de « device catalog » s'ouvre. Nous choisissons le PSoC CY8C27643-24PVXI pour notre
- 16 -
Nous choisissons le langage de programmation C pour le programme main. Puis nous cliquons
sur OK.
Dans la fenêtre « User Modules», sélectionnez « Misc Digital » et cliquez sur le module « LED
».
Dans cette étape, nous ajoutons le module LED (voir figure 24) via la fenêtre User Modules. Ce
module permet de contrôler une Led directement branchée sur une broche du PSoC.
La fenêtre User Module n’est présente dans PSoC designer, nous pouvons
l’afficher avec le menu View puis User Module Catalog.
- 17 -
Paramétrez le module LED au niveau « Parameters-LED » et donnez les valeurs des
champs suivants :
o Name : LED_1
o Port : Port_0
o Pin : Port_0_0
o Drive : Active high
NB :
Le module LED peut être configuré pour entraîner soit une configuration «Active High» ou
«Active Low».
Dans la configuration «Active High», l'anode de la LED est connectée à la broche de PSoC à
travers une résistance, et la cathode de la diode est reliée à Vss.
Par contre pour une configuration «Active Low», la cathode de la LED est connectée à la broche de
PSoC à travers une résistance, et l'anode de la diode est reliée à Vcc. (voir datasheet LED)
Nous pouvons afficher la documentation du module en cliquant avec le bouton droit sur
- 18 -
Dans la fenêtre «Workspace Explorer», sélectionnez TestLed>Source File>main.c
Dans cette partie, nous écrivons le programme permettant d’allumer la diode LED.
En se référant à la datasheet du module LED, nous aurons besoin des fonctions suivantes :
- LED_Start() : La fonction permet d’éteindre la LED.
- LED_Switch() :La fonction permet d’éteindre ou d’allumer la LED selon la valeur
donnée :
Si la valeur est à 1allumer la led
Si la valeur est à 0éteindre la led.
Listing du programme :
void main(void)
{
LED_1_Start(); LED_1_Switch(1);
}
- 19 -
Dans la fenêtre Output en bas, nous devrons avoir le message suivant :
«TestLed - 0 error(s) 0 warning(s) 18:24:43
Dans cette partie, nous cherchons à flasher dans le PSoC le fichier .HEX généré. Pour cela, nous
allons suivre les étapes suivantes :
- 20 -
- Etape3 : cliquez sur le bouton de programmation (encadrer en bleu)
- 21 -
MANIPULATION 2 :
La CONVERSION ANALOGIQUE/NUMERIQUE :
Combien de modules utilisateurs nécessite le convertisseur ? de quels types sont les modules
?
La conversion A/N nécessite deux blocs utilisateurs : un bloc analogique (DELSIG11 ADC) et un bloc
numérique (DELSIG11 TMR)
Reliez l’entrée du module analogique à l’entrée 2.1
- 23 -
Figure 36 : Paramétrage de l'afficheur LCD
Réalisez un programme qui permet de lire la valeur envoyée par le potentiomètre et de l’afficher
sur l’afficheur LCD
En se référant à la datasheet du DELSIG11, nous aurons besoin des fonctions suivantes :
- DELSIG11_Start(DELSIG11_HIGHPOWER) : initialiser le module et définir le niveau
de puissance qui lui sera alloué (dans notre cas c’est la puissance maximale autorisée)
- DELSIG11_StartAD() : activer et initialiser le temporisateur du convertisseur
- DELSIG11_fIsDataAvailable() : vérifier la disponibilité d’une donnée valide
- DELSIG11_iGetData() : retourner la donnée convertie, après avoir vérifier sa disponibilité.
La valeur sera stockée dans la variable globale DELSIG11_iResult (à condition d’activer
l’option Polling)
- DELSIG11_ClearFlag() : remettre à zéro le drapeau de présence d’une donnée valide avant
de passer à la conversion suivante:
Listing du programme :
#include <m8c.h>
#include "PSoCAPI.h"
#include "stdlib.h"
void main(void)
{
float v;
char *tmp;
int stat;
M8C_EnableGInt;
LED_Start();
LED_Switch(1); - 24 -
while (1)
{
while (DELSIG11_fIsDataAvailable() ==
Remarque :
- Pour afficher une information sur l’afficheur LCD, elle doit être de type caractère. C’est
pour cette raison qu’il faut convertir la tension calculée (variable v dans notre programme)
en une chaine de caractère à l’aide de la fonction « ftoa ». pour utiliser cette fonction, il faut
ajouter la bibliothèque « stdlib.h » à l’entête de notre programme.
- 25 -
Compilez votre programme et transférez le vers la maquette. Vérifiez son bon fonctionnement.
Modifiez votre programme pour qu’il n’affiche que deux chiffres après la virgule.
Pour fixer le nombre de chiffres après la virgule, il suffit d’ajouter le caractère fin de chaine
« \0 » à la position souhaitée. Dans notre cas, si nous voulons deux chiffres après la virgule,
nous insérons le caractère de fin de chaine à la 4 ème position juste avant de l’afficher sur
… tmp=ftoa(v,&stat); tmp[4]='\0' ;
LCD_1_PrString(tmp); DELSIG11_ClearFlag();
}
}
l’afficheur :
Compilez votre programme et transférez le vers la maquette. Vérifiez son bon fonctionnement.
- 26 -
- 27 -
Numéro Adres Numér Adres Numéro Adres Numéro Adresse
de la se en o se en de la se en de la en
Hexadéci de la hexadéci touche hexadéci touche hexadécimal
touche mal mal mal
touc
he
B 0x18 B 0x28 B9 0x48 B13 0x88
1 5
B 0x14 B 0x24 B10 0x44 B14 0x84
2 6
B 0x12 B 0x22 B11 0x42 B15 0x82
3 7
B 0x11 B 0x21 B12 0x41 B16 0x81
4 8
Nous ajoutons le module LED tout en le configurant à travers le remplissage de ces paramètres.
- 28 -
Dans cette partie, nous paramétrons les broches du microcontrôleur afin de configurer les
résistances de tirages :
- 29 -
Par contre, le mode Open Drain High peut être utilisé pour créer un circuit OU câblé.
Pull Up et Pull Down : Dans ces modes, la broche est entraînée par une résistance pour un 1
et 0 respectivement. Ces modes peuvent être utilisés aussi bien pour les entrées et les sorties.
Strong : Ce mode d'entraînement est utilisé lorsqu’ une sortie connectée à la broche
nécessite plus de quantité de courant.
Strong Slow : Un condensateur interne est ajouté lorsque ce mode est choisi. Cela réduit les
harmoniques de la sortie.
- Etape2 : Répétez la même manipulation pour P4 [1] jusqu’à P4 [7]. Le résultat devrait
ressembler à la -figure ci-dessous :
- 30 -
Pour écrire un programme permettant d’allumer une diode LED à travers la touche B1 du clavier
par exemple, nous avons recours aux :
Registre PRTXDR : C’est un registre de données qui contrôle l’état des ports. Chaque port est
associé à un registre de données. Par exemple, PRT4DR contrôle le Port4 ; Le bit # 0 des
contrôles PRT4DR est associé au P4 [0]. L'état d'une broche GPIO peut également être lu en
utilisant le registre PRTxDR.
Variable rows (type chaine de caractère) : nous affectons dans cette variable l’adresse de la
ligne.
Variable cols (type chaine de caractère) : nous attribuons dans cette variable l’adresse de la colonne.
Variable code (type chaine de caractère) : nous stockons dans cette variable l’adresse de la touche du
clavier appuyée. Ceci résulte d’un ET logique (&) entre rows et cols.
LED_Switch(1) : nous utilisons cette fonction pour activer la diode led.
Listing du programme :
#include <m8c.h>
#include "PSoCAPI.h"
char rows = 0, cols = 0;
char code ;
void main(void)
{
LED_1_Start();
while(1){
PRT4DR = 0xF0;
cols = PRT4DR;
PRT4DR = 0x0F;
rows = PRT4DR;
code = rows & cols;
switch (code)
{
case 0x18: //Adresse de la touche B1
LED_1_Switch(1);
break;
default: LED_1_Switch(0);
break;
}
}
}
- 31 -
- 32 -