TP Systèmes Embarqués F
TP Systèmes Embarqués F
TP Systèmes Embarqués F
I. Principe et fonctionnement
Une entrée / sortie est une broche (pin) sur laquelle on peut relier des éléments
électroniques externes au microcontrôleur. Ces pins sont appelés GPIO (General Purpose
Input Output). Les caractéristiques des GPIOs sont les suivantes :
Un GPIO standard d’alimentation à 5V
Un GPIOs délivre au maximum un courant de 25mA
Le temps de montée en sortie est configurable (max 100 MHz)
Tous les pins peuvent être programmés comme entrées analogiques
Tous les pins peuvent être programmés en fonctions alternées (USARTx, TIMx,
I2Cx, SPIx,…)
Toute entrée peut être configurée comme source d’interruption
9 ports de GPIO standard (GPIOA..GPIOI) (1 port = 16 pines d’E/S)
Le GPIO est l'interface entre l'intérieur du µC et l'extérieur : il est donc nécessaire de
configurer chaque I/O en respectant les contraintes électriques extérieures sans qui non
seulement le comportement souhaité ne sera pas achevé, mais surtout, l’entrée-sortie
considérée peut être détruite.
Concernant la carte STM32F4, Chacune des entrées/ sorties peut être configurée
comme suit :
Entrée (limites 0 / 3,3V)
– floating input : le courant demandée par l'IO est quasiment nul.
– Analog input : l'IO est reliée à un convertisseur analogique numérique ADC avec
précaution pour une immunité au bruit optimale,
– Pull up : en interne, une résistance d'environ 40k, est reliée entre l'IO et le +vdd
(3,3V),
– Pull down :en interne, une résistance d'environ 40k, est reliée entre l'IO et le GND
(0V).
Sortie
– Output PushPull : l'IO est capable de fournir 0V ou 3,3V avec un courant maximum
d'environ +/- 20mA (attention : toutes les IO ne peuvent pas débiter en même temps ce
courant maximal, car il existe également un limite globale en courant pour le
microcontrôleur),
2. Manipulations
1er exercice
On propose dans cette première manipulation d’allumer deux LEDs (la rouge et la bleue)
pendant une même durée de 1s : les LEDs s’allumeront toutes les 1 seconde et resteront
éteintes pendant une seconde. Référez-vous à la datasheet afin de pouvoir répondre aux
questions suivantes et rédiger votre programme.
a. Identifier les registres pour la configuration des GPIOs permettant de
commander les LEDs
b. Quelles sont les LEDs disponibles sur la carte STM32F4 ? Identifier
chaque pin et la couleur de la LED correspondante
c. Quel est le type qualifiant les registres en terme de mémoire (volatile ou
Const) ? Justifier votre réponse.
d. Déclarer en haut de votre programme main.c les registres choisis
e. Quel est la fonction à utiliser pour garder la LED éteinte ou allumée
pendant la durée choisie ? Déclarer la fonction dans votre programme
main.c
f. Calculer les valeurs en Hexadécimal à mettre dans les registres
correspondants.
g. Identifier le registre de l’activation de l’horloge et activer la
h. Ecrire le corps du programme main.c
i. Compiler et charger le programme sur la carte
2ème exercice
Clignotez les 4 LEDS en même temps
3ème exercice
Allumez les LEDs selon le chronogramme décrit dans la figure ci-dessous.
A la question "Initialize all peripherals with their default mode ?", responder Yes :
Pour terminer, cliquer sur le bouton "Generate source code based on user settings" :
Remarque : Il sera possible de retourner par la suite dans CubeMX afin d’activer d’autres
périphériques ou bien modifier la configuration.
Un projet sera créé sur Keil qui comporte toutes les bibliothèques et les configuration des
entrées/sorties que vous avez défini via l’interface graphique.
2. Configuration
Configurer les GPIOs en output push-pull pour commander les LEDs connectées aux
broches14 et 15
HAL_GPIO_ReadPin
GPIO_PinState HAL_GPIO_ReadPin( GPIO_TypeDef*GPIOx, uint16_t GPIO_Pin )
typedefenum
{
GPIO_PIN_RESET = 0,
Exemple:
HAL_GPIO_WritePin( GPIOD, GPIO_PIN_12|GPIO_PIN_14, GPIO_PIN_SET);
4) HAL_GPIO_TogglePin
voidHAL_GPIO_TogglePin( GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIOx->ODR ^= GPIO_Pin;
}
Description Toggles the specified GPIO pins.
Exemple:
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
III. Les applications
Exemple 1 :
Clignoter la diode LED connectée à PD12 en utilisant les registres prédéfinis dans le HAL.
Exemple 2 :
Clignotez les 4 LEDS en même temps en utilisant le HAL ?
TP N°2 :
Manipulation des GPIOs et EXTI
Principe de fonctionnement
Le projet consiste à la commande d’un moteur pas à pas 4 phases en mode demi-
pas en utilisant le driver ULN2003 pour booster le courant dans les phases du moteur. La
carte STM32 sert à générer les signaux de commande du moteur pas à pas (8 commandes /
tour) cadencés par une fréquence.
PA0
PA1
PA4
PB0
2éme étape : Choisir les pins de la carte stm32 connectées aux entrées du notre moteur.
3éme étape :
1-Ecrire un algorithme qui permet de faire tourner un servo moteur « mg90 » à 0°, 90° et
180°.
Maintenant, notre timer clock est 45MHz, et on a besoin une fréquence de sortie 50Hz. On va
appliquer la formule suivante afin de déterminer les variables du TIMER.
( ) (( ) )
Sous le block Clock configuration, cliquer sur TIM2 pour modifier sous Setting Parameters
les deux valeurs de Prescaler et du counter period.
Alors : ( ) (( )) =900000
TP3 : ADC
Objectif
Principe de fonctionnement d’un périphérique ADC.
Etude théorique
Fréquence de conversion de l’ADC est de 1 MHz
Résolution configurable 6, 8, 10 ou 12-bit
Plage de conversion VREF : 0 à 3.6 V telque :
VREF- ≤ VIN ≤ VREF+ (VREF+ et VREF- valables uniquement dans les packages
LQFP100 )
2 groupes de conversion :
- Conversion régulière : jusqu’à 16 voies
- Conversion injectée : jusqu’à 4 voies
2 modes de conversion :
- Single : une seule conversion est effectuée
- Continue : L’ensemble des voies configurées de l’ADC sont converties sans arrêt.
Séquenceur : Permet de définir l’ordre de conversion des différentes voies.
Mode discontinu : Un sous ensemble des voies configurées n ≤8 est converti suite à
chaque ordre de conversion
Période d’échantillonnage de l’entrée analogique
- ADCCLK, jusqu’à 14MHz, prise du PCLK2 à travers un pré-diviseur (Div2, Div4,
Div6 et Div8)
- Trois bits configurables, permettant de définir la période d’échantillionnage pour
chaque entrée.
Application
Convertir l’entrée analogique connectée à PA0 en utilisant le convertisseur ADC1.
1) Plateforme: STM32 F4 Discovery
2) CPU: STM32F407VG 8Mhz
3) entrées: PA0 entrée analogique;
4) sorties: PD12, PD13, PD14 et PD15
- LD4 (LED Verte) active si Vin<1v
- LD3 (LED Orange) active si 1v<Vin< 2v
- LD5 (LED Rouge) active si 2v<Vin< 2.6v
- LD6 (LED Bleue) active si Vin>2.6v