STM32F4 Tutorial

52
STM32F4 tutorial Ecole Nationale d'Ingénieurs de Tunis س ن و ت ب ن سي د ن ه م ل ل ة ي ن ط و ل ا مدرسة ل ا1

description

tutorial for STM32F4

Transcript of STM32F4 Tutorial

Page 1: STM32F4 Tutorial

1

STM32F4 tutorialEcole Nationale d'Ingénieurs de Tunis

للمهندسين الوطنية المدرسةبتونس

Page 2: STM32F4 Tutorial

2

Carte STM32F4Discovery

Page 3: STM32F4 Tutorial

3

Caractéristiques de la carte STM32F4Discovery

Page 4: STM32F4 Tutorial

4

STM32F4 Block diagram

Page 5: STM32F4 Tutorial

5

I.Noyau Cortex-M41. Architecture

Page 6: STM32F4 Tutorial

6

Rappel: Architectures des processeurs

Harvard Von Neumann

Cortex-M4: Harvard & RISC

Page 7: STM32F4 Tutorial

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)

Page 8: STM32F4 Tutorial

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.

Page 9: STM32F4 Tutorial

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)

Page 10: STM32F4 Tutorial

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

Page 11: STM32F4 Tutorial

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

Page 12: STM32F4 Tutorial

12

I. Noyau Cortex-M4I.6. Registres du noyau

Page 13: STM32F4 Tutorial

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)

Page 14: STM32F4 Tutorial

14

I. Noyau Cortex-M4I.6. Registres du noyau

1.6.1. Registres GP(2)

Load & Store Process

Page 15: STM32F4 Tutorial

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)

Page 16: STM32F4 Tutorial

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

Page 17: STM32F4 Tutorial

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

Page 18: STM32F4 Tutorial

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

Page 19: STM32F4 Tutorial

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 

Page 20: STM32F4 Tutorial

20

I. Noyau Cortex-M4I.7. Les exceptions et les interruptions

1.7.1. Exceptions et interruptions (2)

Page 21: STM32F4 Tutorial

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

Page 22: STM32F4 Tutorial

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

Page 23: STM32F4 Tutorial

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)

Page 24: STM32F4 Tutorial

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

Page 25: STM32F4 Tutorial

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)

Page 26: STM32F4 Tutorial

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.

Page 27: STM32F4 Tutorial

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)

Page 28: STM32F4 Tutorial

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

Page 29: STM32F4 Tutorial

29

II. ArchitectureII.1. Les bus (2)

Page 30: STM32F4 Tutorial

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

Page 31: STM32F4 Tutorial

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)

Page 32: STM32F4 Tutorial

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

Page 33: STM32F4 Tutorial

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)

Page 34: STM32F4 Tutorial

34

III. Jeu d’instructionIII.3. Flags d’état

Page 35: STM32F4 Tutorial

35

III. Jeu d’instructionIII.4. Fonctions CMSIS

Page 36: STM32F4 Tutorial

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

Page 37: STM32F4 Tutorial

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

Page 38: STM32F4 Tutorial

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

Page 39: STM32F4 Tutorial

39

IV. Reset & Clock Control (RCC)IV.3. Schema des horloges

Page 40: STM32F4 Tutorial

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

Page 41: STM32F4 Tutorial

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

Page 42: STM32F4 Tutorial

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

Page 43: STM32F4 Tutorial

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)

Page 44: STM32F4 Tutorial

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

Page 45: STM32F4 Tutorial

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

Page 46: STM32F4 Tutorial

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)

Page 47: STM32F4 Tutorial

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)

Page 48: STM32F4 Tutorial

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

Page 49: STM32F4 Tutorial

49

VI. PériphériquesVI.4. Convertisseur Analogique Numérique (ADC)

VI.4.2.Pins

Page 50: STM32F4 Tutorial

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

Page 51: STM32F4 Tutorial

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

Page 52: STM32F4 Tutorial

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