La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Périphériques de microcontrôleur

Présentations similaires


Présentation au sujet: "Périphériques de microcontrôleur"— Transcription de la présentation:

1 Périphériques de microcontrôleur
P.Acco – P.E Hladik - V.Mahout - T.Rocacher

2 Avant tout la forme ! Enseignement PRATIQUE mixte entre TP- APP-BE …
Peu de cours (fait au fil de l’eau en séance) Nécessité de mettre les mains dans le cambouis Version actuelle Puce STM32  continuité avec le Cortex M3 de l’assembleur Finalité : développer un projet d’un « petit » système embarqué (bateau, station météo, useless box…)

3 Déroulement des séquences
Différentes séquences Série de TP « classiques » en salle info: appréhender, en autonomie mais de façon guidée, les principaux périphériques. Travail en individuel Séances de TD : concevoir le code du projet le plus formellement possible ou séquences de remédiation pour ceux en difficulté. Projet (par équipe, en binôme ou seul selon avancement) en salle électronique : réutiliser de briques faites en TP et gestion d’un projet « complet ». …et des QCM pour valider l’UF. Horaires calés entre 11h00 et 15 h30….pause repas « quand ça va bien! »

4 Objectifs généraux (1) Appréhender la notion de périphérique
Pas tous les périphériques Comprendre les principes de base Se former à la programmation non séquentielle (interruption) préalable au notion de Temps réel Être capable de mettre en pratique Travail sur le STM32 Même environnement que l’assembleur Processeur très performant et ’’actuel’’ Réutilisation du langage C (avec des normes et des règles)

5 Objectifs généraux (2) Se former aux techniques de mise au point (et un peu de test) Débogage avancé Outils de test Mode simulé et mode réel Savoir lire une documentation « data sheet » STM32 = pdf de 995 pages Se confronter (un peu) à la gestion de projet Travail en équipe sur le projet Partage des tâches

6 Evaluation Evaluation par compétence (pas de notes)
Compétences de bases (celles pour obtenir l’UF) – S’acquièrent au cours de la série de TP notamment Expliquer le principe de fonctionnement des périphériques les plus couramment rencontrés Développer un programme au niveau périphérique (registres des périphériques de micro-contrôleur) Utiliser un outil de développement et de débuggage pour micro-contrôleur (IDE) Compétences avancées : programmation avancée et approche globale d’un système – Projet

7 QCM Méthode d’évaluation
Un QCM est associé est chacun des 6 sujets de TP. Quand le TP est achevé et après autorisation de l’enseignant possibilité de passer le QCM Chaque QCM peut être tenté au plus 3 fois (mais pas à la même séance) Dès que les 6 QCM sont validés => passage en projet OBJECTIF : avoir validé les 6 QCM à la séance 7 Obligation : avoir tenté l’ensemble des QCM à la séance 8 Si à la séance 11 l’ensemble des QCM n’est pas validé, l’étudiant repasse l’ensemble des QCM (équivalent session 2)

8 Validation de l’UF Règles d’obtention
UF validée en session 1 Niveau A : tous les QCM ont été validés avant le séance 8 et le projet est bien réalisé UF validée en session 1 Niveau B : tous les QCM sont validés mais l’avancement et la qualité du projet ne sont pas suffisants UF validée en session 2 Niveau B : les QCM sont validés à la séance 11 Le jury d’UF à la fin de la formation statuera pour les cas ne satisfaisant pas à ces conditions suffisantes.

9 Périphériques de microcontrôleur….
Attention !!! Le 1er QCM intégrera des questions sur ce qui suit… Périphériques de microcontrôleur….

10 Ses périphériques par STmicro
Son cœur : le cortex d’ARM ! Ses périphériques par STmicro Le STM32 c’est ça !

11 Fonction de base : communiquer
industriel Bus Mesurer le temps Grandeur binaire (Capteur, Codeur,.. Actionneurs (Moteurs, Leds, …) Grandeur physique (T°, vitesse,pression,…)

12 Les ports E/S : généralités
Les broches du circuit : connexion physique Fonction élémentaire : niveau « binaire » Notion de port : regroupement en 8 bits (octet) ou en 16 bits (mot) Association de registres d’E/S à chaque port pour lire ou écrire sur l’extérieur. Electronique liée à la gestion de ces E/S Registres de configuration  avoir des connaissances de l’électronique de câblage du processus (ex: push/pull ou open drain)

13 Structure basique sur le STM32
L’électronique interne (à configurer!!!) permet de fixer la direction (et plus même sans affinité) Possibilité de lire via un registre d’entrée (Port) La broche de sortie peut également « attaquer » ou « recevoir » une fonction alternative : (compteur, PWM,….) … ou d’écrire via un registre de sortie and co La broche d’entrée/sortie = Accès au monde extérieur Existence de protection électrique mais prudence dans vos câblages !!! Utilisation d’une alternate function  configuration des broches d’E/S!!!

14 Généralités sur les fonctions alternatives
Réalisent une fonction particulière Micro-machine indépendante du « core » Communiquent ou pas avec l’extérieur Se configurent à travers R/W des registres Dialoguent avec le core du microcontrôleur par les registres mais aussi (et surtout) par l’envoi d’interruption Chef d’orchestre : le gestionnaire d’interruptions (NVIC) Sur les STM32 : grosses unités parfois fort complexes

15 Les timers /compteurs Les grandes familles
Comptent ou décomptent des impulsions périodiques (horloge = timer) ou non périodiques (compteur) Evénement essentiel : le débordement (overflow ou underflow)  interruption, changement de l’état de bascules de sorties,…

16 Principe du timer (1)

17 Principe du timer (2) En choisissant correctement h et reload :
Mise en place de tâches périodiques

18 Principe du timer (3)

19 Timers du STM32 Différents timers 16 bits avec autoreload
1 timer  avancé : TIM1 3 timers « généraux » : TIM2 TIM3 et TIM4 1 timer du cortex : Systick 2 timers de type « watchdog » Les TIMx = multiples et complexes fonctionnalités PWM Capture/Compare Codeurs incrémentaux ….

20 Les grandes familles L’ADC Convertit un tension analogique en valeur numérique Généralement plusieurs canaux multiplexés sur un seul convertisseur Entrée admissible : 0 – 5 volts Conversion sur 8bits : précision 19.6 mV Conversion sur 10bits : précision 4.88 mV Conversion sur 12bits : précision 1.22 mV

21 ADC du STM32 2 convertisseurs (ADC1 et ADC2) 12 bits
Multiplexage possible de 16 voies externes ADC12_IN16 connecté à un capteur de température interne Temps de conversion : 1.17 µs Différentes possibilités : Simple acquisition Acquisition continue Scan, … Accès possible en DMA

22 Les grandes familles La PWM Engendre des signaux carrés asymétriques
Fréquence rapide + ratio réglable = valeur moyenne vue de l’extérieur. Equivalence avec un DAC

23 Principe de la PWM (1) La fréquence de la PWM tape dans les basses fréquences : pas glop…. Dans l’exemple : le gain statique est unitaire

24 Principe de la PWM (2) On augment la fréquence de la PWM , les effets fréquentiels diminuent….

25 Principe de la PWM (3) A haute fréquence (relatif à la fréquence de coupure du système) : comportement « quasi continu » : ici échelon constant de 0.75*3 = 2,25

26 PWM du STM32 Fonction intégrée aux timers TIM1 à TIM4
Le timer est programmé (base de temps + reload) pour assurer la base de temps (fréquence de la PWM) Un second registre permet (par comparaison avec la valeur du timer). Grossièrement l’algo est le suivant : reg = ratioPWM * reload Si timer < reg alors sortie = état bas Si timer  reg alors sortie = état haut Différents cycles de fonctionnement sont possibles

27 Les grandes familles Les Capture/Compare
Associées à un timer (spécifique ou général) Capture : permet de « dater » un événement Sur événement extérieur ( sur une broche par exemple) : on mémorise dans un registre annexe la valeur du timer Compare : permet d’attendre un nombre d’événements Le registre annexe contient une valeur comparée avec celle contenue dans le timer (compteur). L’égalité déclenche interruption et/ou basculement d’une broche de sortie

28 CapCom du STM32 C’est pas gagné
Là aussi fonctions intégrées aux timers TIM1 à TIM4 C’est pas gagné

29 Les grandes familles Les « bus » d’échanges avec l’extérieur
Echange d’informations numériques Le plus simple : liaison série (synchrone ou asynchrone) : facile à fabriquer avec des ports E/S et 1 timer Implémentation des couches physiques dans le circuit Grosses utilités : Rajout de périphériques extérieurs : exemple convertisseur DAC sur bus SPI Dialogue avec des systèmes hôtes (ex debug) STM32 : CAN, USB, SPI, I²C, USART. En gros la totale

30 Considérations de programmation …ou comment s’y prendre

31 De la notion d’interruption
Un périphérique fait des demandes d’interruption (conversion ADC terminée, débordement de timer, …) Une interruption acceptée = détournement via la table des vecteurs d’interruption (IVT) Soit on gère en assembleur cette table Soit on utilise le compilateur qui connait et impose le nom des routines d’exception  va remplir la IVT si on utilise ce nom pour une procédure. Le fichier (assembleur) STM32F10X.s contient les noms prédéfinis Voir la documentation rédigée à ce sujet

32 Exemple Waouh ! SysTick_Handler (! Majuscule!)
/* Systick Interrupt Handler SysTick interrupt happens every 10 ms * */ void SysTick_Handler (void) { static unsigned long ticks; static unsigned long timetick; static unsigned char leds = 0x01; if (ticks++ >= 99) { // Set Clock1s to 1 every 1 second ticks = 0; Clock1s = 1; } // Blink the LEDs depending on ADC_ConvertedValue if (timetick++ >= (ADC_ConvertedValue>>8)) { timetick = 0; leds <<= 1; if (leds == 0) leds = 0x01; GPIOB->ODR = (GPIOB->ODR & 0xFFFF00FF) | (leds << 8); } // end SysTick_Handler SysTick_Handler (! Majuscule!) Procédure d’interruption pour le timer Systick Sur demande d’IT de ce timer cette routine est exécutée Cette routine est (évidement) void/void Waouh !

33 Les registres avancent masqués
Chaque famille de périphérique est définie par une structure Exemple pour les ports E/S contenant les différents registres qui le composent Après instanciation sur une adresse particulière (fournie par STmicro) On accède aux registres qui nous intéressent avec -> typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; #ifdef _GPIOB #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) #endif GPIOB->ODR = 0x45A2;

34 Pourquoi as-tu le masque ?
Programmer un périphérique = modification D’un registre entier (rarement le cas) Pas de pb par exemple GPIOB->ODR = 0x45A2; Un bit d’un registre (mise en marche par exemple) Cortex a la possibilité de bit-banding  envisageable par une instruction De plusieurs bits ou d’un champ de bits d’un registre Obligation d’appliquer un masque si on ne veut pas modifier le reste du registre .

35 Exemple de mise à 1 On applique 1 avec l’opérateur OU Ex : mise à 1 des bits de poids 2 et 5 de l’octet Bobo :

36 Exemple de mise à 0 On applique 0 avec l’opérateur ET Ex : mise à 0 des bits de poids 0 et 3 de l’octet Bibi :

37 Extension A partir des deux principe de base précédents :
Possibilité de l’étendre à des champs de bits Possibilité de contrôler les valeurs maximales applicables à un champ de bits Ce principe permet d’avoir une programmation Sûre Lisible (au final) Générique Voir la documentation rédigée à ce sujet

38 Structuration de programme
Assez rapidement on vous imposera la structuration suivante pour vos applications : Qualité logicielle Généricité Sûreté

39 A vous de jouer…


Télécharger ppt "Périphériques de microcontrôleur"

Présentations similaires


Annonces Google