STM32F4 Tutorial
description
Transcript of STM32F4 Tutorial
1
STM32F4 tutorialEcole Nationale d'Ingénieurs de Tunis
للمهندسين الوطنية المدرسةبتونس
2
Carte STM32F4Discovery
3
Caractéristiques de la carte STM32F4Discovery
4
STM32F4 Block diagram
5
I.Noyau Cortex-M41. Architecture
6
Rappel: Architectures des processeurs
Harvard Von Neumann
Cortex-M4: Harvard & RISC
7
Intégration étroite des périphériques du système réduisant les coûts (surface et développement du circuit intégré)
Jeu d'instructions Thumb2 combinant une densité de code élevée avec des performances 32 bits
FPU à simple précision mis en œuvre dans tous les microcontrôleurs STM32F4xxx
Optimisation de la commande de l'alimentation des composants du système
Modes de veille intégrés à faible consommation d'énergie
I.Noyau Cortex-M4I.2.Caractéristiques (1)
8
I.Noyau Cortex-M4I.2.Caractéristiques (2)
Exécution rapide de code (1.2 DMIPS) permettant une fréquence d’horloge plus lente ou un temps de veille plus long
Division matérielle et multiplication rapide Déterminisme et traitement d'alarme très
performant pour les applications à temps critique
unité de protection de la mémoire (MPU) pour les applications critiques pour la sécurité
Vastes capacités de débogage réduisant le nombre de broches nécessaires.
9
I. Noyau Cortex-M4I.3. Modes de traitements
Thread mode: Utilisé pour exécuter les applications logicielles ordinaires Le processeur est automatiquement en mode Thread à la
suite d’une RAZ (Reset) Le registre de controle regarde si l’exécution du
programme est effectuée en mode privilègié ou non-préviligié
Handler mode:
Utilisé pour traiter les exceptions Le processeur retourne au mode Thread après avoir fini
le traitement d’une exception (matérielle ou logicielle)
10
I. Noyau Cortex-M4I.4. Niveaux de traitement
Niveau préviligié Un programme en niveau préviligié peut utiliser toutes les
instructions et accéder à toutes les ressources. Il peut changer le niveau de prévilège dans le registre de controle
Niveau non-préviligié Un programme non-préviligié a un accès limité aux instructions MSR
et MRS (Move Special Registers to GP registers et inversement) Ne peut pas utiliser les instructions CPS (Change Processor State) Ne peut pas accèder à certains périphériques du noyau (system
timer,NVIC, system control block)
Son accès aux mémoires et aux périphériques du noyau est limité Doit utiliser l’instruction SVC (Superviser Call) pour changer le niveau
de traitement
11
I. Noyau Cortex-M4I.5. Piles du noyau (Stacks)
Le processeur utilise 2 types de piles (Main Stack et Process Stack).
Le pointeur de pile (Stack pointer) indique l’adresse du dernier programme empilé
La valeur du pointeur de pile est toujours enregistré dans le registre SP
12
I. Noyau Cortex-M4I.6. Registres du noyau
13
I. Noyau Cortex-M4I.6. Registres du noyau
1.6.1. Registres GP (1)
Les registres GP (R0..R12) sont utilisés pour stocker les variables du programmes (opérandes)
Cortex-M4 est un processeur RISC à architecture Load & Store:
Les valeurs des opérandes sont chargées dans les registres GP (Read)
Les opérations sont effectués sur ces registres (Modify)
Le résultat de l’opération est envoyé vers l’adresse de l’opérande à modifier (write)
14
I. Noyau Cortex-M4I.6. Registres du noyau
1.6.1. Registres GP(2)
Load & Store Process
15
I. Noyau Cortex-M4I.6. Registres du noyau
1.6.2. Stack Pointer R13
Ce registre possède 2 niveaux (banques): Main Stack Pointer Process Stack Pointer
Permet de séparer l’exécution de deux types de traitement différents (Thread mode et Handler mode) dans le cas d’un noyau temps réel en cours d’éxécution (RTOS)
16
I. Noyau Cortex-M4I.6. Registres du noyau
I.6.3. Link Register R14
Ce registre est utilisé pour garder l’adresse des résultats retournées par des sous-programmes (de type fonctions ou exceptions)
Il permet alors d’utiliser rapidement les sous-programmes
17
I. Noyau Cortex-M4I.6. Registres du noyau
1.6.4. Program counter R15
Le program counter PC est utilisé pour pointer sur l’adresse de l’instruction qui suit la dernière qui a été exécutée
Très utile pour effectuer les retours des interruptions
18
I. Noyau Cortex-M4I.6. Registres du noyau
1.6.5. Control Register
Controle la pile utilisé (MSP ou PSP)
Controle le niveau de privilège du programme exécuté en mode Thread
Indique si l’unité de calcul en de virgule flottante (FPU) est active
19
I. Noyau Cortex-M4I.7. Les exceptions et les interruptions
1.7.1. Exceptions et interruptions (1)
Le processeur Cortex-M4 autorise les exceptions et les interruptions en mode Handler (sauf pour les exceptions de type Reset).
Une exception/interruption peut être due à une source matérielle ou logicielle.
Une exception/interruption change le cours d’exécution normal du programme en cours.
L’interruption est un type particulier d’exception où le processeur reprend son cours d’exécution normal après avoir effectué celui de l’interruption
Le NVIC (Nested Vectored Interruption Controller) permet d’exécuter les interruptions en mode Handler
20
I. Noyau Cortex-M4I.7. Les exceptions et les interruptions
1.7.1. Exceptions et interruptions (2)
21
I. Noyau Cortex-M4I.8. Les types de données
Le processeur Cortex-M4 supporte les types de données suivants: Mots (word): 32-bit Demi-mot (halfword): 16-bit Octet (Byte): 8-bit
22
I. Noyau Cortex-M4I.9. La bibliothèque CMSIS
CMSIS (Cortex Microcontroller Software Interface Standard) définit un mode commun pour: L’accès aux registres des périphériques Définir les vecteurs des exceptions Les noms des registres des périphériques du noyau Une interface indépendante pour les noyaux temps réels
(RTOS)
CMSIS contient les adresses et les définitions des
structure utilisées par les périphériques du noyau Cortex-M4.
CMSIS simplifie le développement des logiciels en utilisant des fonctions prédéfinies pour l’accès et la manipulation des registres des périphériques du noyau
23
I. Noyau Cortex-M4I.10. Les périphériques du noyau
I.10.1. NVIC
NVIC est le controleur des interruptions. Il permet de gérer: Gérer jusqu’à 82 interruptions (selon le modèle de
la carte STM32) Les niveaux de priorités des interruptions (de 0 : la
plus prioritaire jusqu’à 15: la moins prioritaire) Les interruptions externes non-masquables (NMI)
24
I. Noyau Cortex-M4I.10. Les périphériques du noyau
I.10.2. System Core Block (SCB)
Le System Control Block (SCB) est l’interface entre le programmeur et le processeur
Il fournit les informations concernant: L’implémentation du système Le contrôle du système La configuration Le rapport des exceptions
25
I. Noyau Cortex-M4I.10. Les périphériques du noyau
I.10.3. SysTick Timer
SysTick est un compteur 24-bit en mode décrémentation
Il peut etre utilié en compteur simple ou comme système temps réel (RTOS)
Il se décrémente à partir d’une certaine valeur (Auto Reload Valeur) juqu’à zero que l’on peut écrire dans le registre STK_LOAD
Il permet de générer une interruption lorsqu’il déborde (atteint 0)
26
I. Noyau Cortex-M4I.10. Les périphériques du noyau
I.10.4. Memory protection unit (MPU)
L’unité de protection de la mémoire permet d’améliorer l’efficacité du système par: La division de la mémoire du processeur en plusieurs
régions (jusqu’à 8 régions) L’identification de la localisation, la taille et le mode
d’accès pour chaque région gérée par la MPU (Memory protection unit)
La MPU permet La configuration des attributs indépendants de
chaque région de la mémoire Le chevauchement des régions Exporter les attributs de la mémoire vers le système.
27
I. Noyau Cortex-M4I.10. Les périphériques du noyau
I.10.5. Floating point unit (FPU)
Le processeur Cortex-M4F (F comme FPU) comprend l’extension FPv4-SP.
Calcul en virgule flottante (simple précision)
N=(-1)S.M.2(E-127)
FPU permet d’effectuer: L’addition, la soustraction, la multiplication, la division,
l’accumulation et le calcul de la racine carrée. FPU permet aussi la conversion des nombres en virgule fixe en
virgule flottante FPU permet de gérer les registres de 32-bits pour les opérations
Load, Store et Move.
S(1bit)
Exposant ( 8-bit)
Mantisse(23 bits)
28
8 masters: Cortex™-M4F core I-bus, D-bus and S-bus DMA1 memory bus DMA2 memory bus DMA2 peripheral bus Ethernet DMA bus USB OTG HS DMA bus
7 slaves: Internal Flash memory ICode bus Internal Flash memory DCode bus Main internal SRAM1 (112 KB) Auxiliary internal SRAM2 (16 KB) Auxiliary internal SRAM3 (64 KB) (disponible que pour STM32F42xxx et
STM32F43xxx) AHB1 peripherals including AHB to APB bridges and APB peripherals AHB2 peripherals FSMC (Flexible Static Memory Controller: LCD interfacing)
II. ArchitectureII.1. Les bus
29
II. ArchitectureII.1. Les bus (2)
30
4GB de mémoire addressable
8 blocks mémoires de 512MB
Types: Data Programme
s Registres I/O ports
II. ArchitectureII.2. Organisation de la mémoire
31
Unaligned memory access Possibilité à accéder aux zones mémoires en
word/half-word/Byte Avantage: Meilleure organisation de la mémoire
SRAM
Bit-banding: Technique permettant l’accès atomique à un bit Plus besoin de passer par la procédure
Read/Modify/write pour changer la valeur d’un bit dans un registre (Mais sur quelques zones particulières de la mémoire)
Avantage: Réduction du nombre de cycles d’instructions
II. ArchitectureII.2. Organisation de la mémoire (2)
32
2 types d’instruction Instruction 32-bit (pour la rapidité d’éxécution) Instruction 16-bit (pour la compression du code): Thumb2
Compression du code? Une instruction prend N cycles d’horloge Plus le nombre/la taille des d’instructions est élevé (rapide) plus
la consommation d’énergie est élevée et La taille du code est grande
Solution: Optimiser le nombre ou la taille des instructions pour avoir à la fois une exécution rapide et une consommation moindre
Avantages Thumb2 donne 1.2 DMIPS pour 16-bit (Avantages des
processeurs ARM 7 et 9) Amélioration de la compression de la taille du code jusqu’à 26%
III. Jeu d’instructionIII.1. Types d’instrcutions
33
Généralement des registres Les résultats sont sauvegardés dans des
registres de destination Exemple:
MOVSR0, R1 ; R0 = R1, setting flagsIT MI ; IT instruction for the negative
;conditionRSBMIR0, R1, #0 ; If negative, R0 = -R1
III. Jeu d’instructionIII.2. Types d’instructions (2)
34
III. Jeu d’instructionIII.3. Flags d’état
35
III. Jeu d’instructionIII.4. Fonctions CMSIS
36
System Reset Niveau bas au pin NRST (external reset) Débordement du Window watchdog (WWDG reset) Débordement du Independent watchdog (IWDG reset) Software reset (SW reset) Low-power management reset
Power Reset Power-on/power-down reset (POR/PDR reset) Brownout (BOR) reset Quand le Standby mode est quitté
Buckup Domain Reset Software reset (RCC_BDCR<BDRST>=1). Alimentations VDD ou VBAT (ON) après avoir été (OFF) . N’affecte que les registres RTC (Real Time Clock)
IV. Reset & Clock Control (RCC)IV.1. Types de Reset
37
Horloges systèmes HSI oscillator clock (Oscillateur interne) HSE oscillator clock (Cristal/Céramique/Circuit
externe) Main PLL (PLL) clock : Permet de multiplier/diviser
la fréquence d’horloge HIS ou HSE (jusqu’à 168MHz)
Horloges secondaires Oscillateur RC interne 32KHz (LSI) Cristal externe 32.768KHz (LSE) RTC (Real Time Clock)
IV. Reset & Clock Control (RCC)IV.1. Types d’horloges
38
Sélection d’horloge système (Sysclk) HSI clock est automatiquement sélectionné après un Reset Le registre RCC_CR (RCC control register) permet de choisir
l’horloge à utiliser
Récupération d’un signal d’horloge Pin MCO1 (PA8 en Alternate function) Pin MCO2 (PC9 en Alternate function) Sélectionner le signal d’horloge à récupérer dans le registre
RCC_CFGR Condition: Fclk <100 MHz (Fréquence max d’un pin GPIO)
Mesure de la fréquence d’horloge Timer 5/Channel 4 en mode IC pour mesurer LSI/LSE/ Timer 11/Channel1 en mode IC pour mesurer HSE
IV. Reset & Clock Control (RCC)IV.2. Cammande d’horloges
39
IV. Reset & Clock Control (RCC)IV.3. Schema des horloges
40
IRQ (Interruption ReQuest) est une exception: Signalée par un périphérique Générée par logiciel
Condition pour l’éxécution d’une interruption Autorisation d’interruption du périphérique Autorisation d’interruption par NVIC
V. InterruptionsV.1. Interrupt handling (IRQ_Handler)
Peripheric IE
NVIC IEPriority
level
IRQ pending
IRQ flag
IRQ execution
41
82 sources d’interruptions gérées par NVIC Chaque IRQ est caractérisé par:
Sa position (0..81) Son niveau de priorité (fixe ou programmable) Son adresse dans la mémoire programme
Exemples
V. InterruptionsV.2. Sources d’interruptions
42
Modes de sortie: push-pull/open drain et pull-up/pull-down
Sélection de la fréquence maximale du signal de sortie (I/O speed)
Modes d’entrée: floating, pull-up/pull-down, analog Bit set and reset register (GPIOx_BSRR) pour l’accès
direct aux bits du registre de sortie GPIOx_ODR Mécanisme de verrouillage jusqu’au prochain Reset
par la configuration du regsitre (GPIOx_LCKR) Fonctionnement en mode analogique Fonction Toggle rapide (en 2 cycles d’horloges)
VI. PériphériquesV.I. GPIO
VI.1.1. Caractéristiques
43
Multiplexage très flexible des pins des GPIO (jusqu’à 16 AF par I/O)
La sortie est récupérée dans le registre de sortie (GPIOx_ODR) ou dans un périphérique (alternate function output)
L’entrée est mise dans le registre (GPIOx_IDR) ou dans un périphérique (alternate function input)
VI. PériphériquesVI.2. GPIO
VI.1.2. Alternate functions (AF)
44
Types des timers périphériques 2 x advanced-control timers (TIM1 & TIM8) 10 x general-purpose timers (TIM2 …TIM5 &
TIM9…TIM14) 2 x basic timers (TIM6 & TIM7)
Modes Input capture Output compare PWM generation (edge- or center-aligned
modes) One-pulse mode output
VI. PériphériquesVI.2. Timers
VI.2.1. Types
45
Résolution: 16-bit/32-bit Compteur: Up/Down/Up-Down Prescaler: 16-bit Génération de requête DMA (Advanced
Control Timers 1&8, GP Timers 2&5, 3&4, Basic Timers 6&7)
Capture/Compare channels : de 1 jusqu’à 4 (sauf pour les Basic Timers 6&7)
Sorties complémentaires: pour les Advanced Timers 1&8 (pour la génération de PWM triphasé)
Fréquence d’horloge max=42MHz jusqu’à 84MHz
VI. PériphériquesVI.2. Timers
VI.2.1. Caractériqtiques
46
12-bit downcounter 8-bit prescaler Horloge dédié: Oscillateur RC 32KHz
independent (LSI) Possibilité d’opérer en modes Stop/Standby Utilisation:
Reset du système en cas d’erreur/échec Reset du système au débordement du IWDG
Activation/Désactivation du IWDG Logicielle: Selon la valeur du registre IWDG_KR Matérielle: Par la configuration des bits d’option de
la mémoire Flash (User option bytes)
VI. PériphériquesVI.3. Watchdogs
VI.3.1. Independent Watchdog (IWDG)
47
7-bit downcounter Utilise l’horloge principal FPCLK1/(4096*Prescaler) Protection du système contre:
Les interférences externes L’exécution erronée des programmes
Conditions de Reset du système Le décompteur atteint une valeur inférieure à 0x40 La valeur initiale (Auto-Reload value) est supérieure à 0x7F
Possibilité de générer une interruption à la valeur 0x40 Activation
Toujours Désactivé après un Reset Activé par logiciel WWDG_CR<WDGA>=1
VI. PériphériquesVI.3. Watchdogs
VI.3.2. Window Watchdog (WWDG)
48
19 canaux multiplxés: 16 canaux externes/ 2 canaux internes/1 canal pour Vbat
Résolution configurable:12-bit/10-bit/8-bit /6-bit Conversion en mode Single/Continu/Discontinu Génération d’interruption par:
Fin de conversion Watchdog analogique Débordement d’évènements (overrun)
Conversion automatique en mode Scan du canal 0 au canal N Alignement des données configurable Temps d’échantillonnage programmable par canal Trigger externe (Timer par exemple) Génération de requête DMA pendant la conversion en mode
Regular Channel ADC input range: VREF– =<VIN =<VREF+
VI. PériphériquesVI.4. Convertisseur Analogique Numérique (ADC)
VI.4.1.Caractéristiques
49
VI. PériphériquesVI.4. Convertisseur Analogique Numérique (ADC)
VI.4.2.Pins
50
VI. PériphériquesVI.4. Convertisseur Analogique Numérique (ADC)
VI.4.3.Interruptions
ADC_CR1 Register (Control Register1)
Sources d’interruptions de l’ADC
51
2 x DAC configurable en 8-bit/12-bit
Alignement configurable des sorties (à droite ou à gauche) en mode 12-bit
Génération de signal triangulaire/aléatoire
Conversions en mode dual indépendantes ou simultanées
Requête DMA pour chaque canal
Trigger externe pour lancer la conversion
Tension d’entrée maximaleVREF+
VI. PériphériquesVI.5. Convertisseur Numérique Analogique (DAC)
VI.5.1.Caractéristiques
52
Pins de sorties (DAC_OUTx): PA4 et PA5 configurés en mode analogique
Valeur analogique de la sortie Vout=VREF+(DOR/2N-1) N: 8-bit/12-bit
VI. PériphériquesVI.5. Convertisseur Numérique Analogique (DAC)
VI.5.2.Pins