STM32F4 Tutorial

Post on 21-Dec-2015

152 views 6 download

description

tutorial for STM32F4

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