SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
STM32F4 tutorial
Ecole Nationale d'Ingénieurs de Tunis
‫بتونس‬ ‫للمهندسين‬ ‫الوطنية‬ ‫المدرسة‬
1
Carte STM32F4Discovery
2
Caractéristiques de la carte
STM32F4Discovery
3
STM32F4 Block diagram
4
I.Noyau Cortex-M4
1. Architecture
5
Rappel: Architectures des processeurs
Harvard Von Neumann
Cortex-M4: Harvard & RISC
6
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-M4
I.2.Caractéristiques (1)
I.Noyau Cortex-M4
I.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.
8
I. Noyau Cortex-M4
I.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)
9
I. Noyau Cortex-M4
I.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
10
I. Noyau Cortex-M4
I.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
11
I. Noyau Cortex-M4
I.6. Registres du noyau
12
I. Noyau Cortex-M4
I.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)
13
I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.1. Registres GP(2)
Load & Store Process
14
I. Noyau Cortex-M4
I.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)
15
I. Noyau Cortex-M4
I.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
16
I. Noyau Cortex-M4
I.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
17
I. Noyau Cortex-M4
I.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
18
I. Noyau Cortex-M4
I.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
19
I. Noyau Cortex-M4
I.7. Les exceptions et les interruptions
1.7.1. Exceptions et interruptions (2)
20
I. Noyau Cortex-M4
I.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
21
I. Noyau Cortex-M4
I.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
22
I. Noyau Cortex-M4
I.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)
23
I. Noyau Cortex-M4
I.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
24
I. Noyau Cortex-M4
I.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)
25
I. Noyau Cortex-M4
I.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.
26
I. Noyau Cortex-M4
I.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)
27
 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. Architecture
II.1. Les bus
28
II. Architecture
II.1. Les bus (2)
29
 4GB de
mémoire
addressable
 8 blocks
mémoires
de 512MB
 Types:
 Data
 Programme
s
 Registres
 I/O ports
II. Architecture
II.2. Organisation de la mémoire
30
 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. Architecture
II.2. Organisation de la mémoire (2)
31
 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’instruction
III.1. Types d’instrcutions
32
 Généralement des registres
 Les résultats sont sauvegardés dans des
registres de destination
 Exemple:
MOVSR0, R1 ; R0 = R1, setting flags
IT MI ; IT instruction for the negative
;condition
RSBMIR0, R1, #0 ; If negative, R0 = -R1
III. Jeu d’instruction
III.2. Types d’instructions (2)
33
III. Jeu d’instruction
III.3. Flags d’état
34
III. Jeu d’instruction
III.4. Fonctions CMSIS
35
 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
36
 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
37
 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
38
IV. Reset & Clock Control (RCC)
IV.3. Schema des horloges
39
 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. Interruptions
V.1. Interrupt handling (IRQ_Handler)
Peripheric
IE
NVIC IE
Priority
level
IRQ
pending
IRQ flag
IRQ
execution
40
 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. Interruptions
V.2. Sources d’interruptions
41
 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ériques
V.I. GPIO
VI.1.1. Caractéristiques
42
 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ériques
VI.2. GPIO
VI.1.2. Alternate functions (AF)
43
 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ériques
VI.2. Timers
VI.2.1. Types
44
 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ériques
VI.2. Timers
VI.2.1. Caractériqtiques
45
 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ériques
VI.3. Watchdogs
VI.3.1. Independent Watchdog (IWDG)
46
 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ériques
VI.3. Watchdogs
VI.3.2. Window Watchdog (WWDG)
47
 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ériques
VI.4. Convertisseur Analogique Numérique (ADC)
VI.4.1.Caractéristiques
48
VI. Périphériques
VI.4. Convertisseur Analogique Numérique (ADC)
VI.4.2.Pins
49
VI. Périphériques
VI.4. Convertisseur Analogique Numérique (ADC)
VI.4.3.Interruptions
ADC_CR1 Register (Control Register1)
50
Sources d’interruptions de l’ADC
 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ériques
VI.5. Convertisseur Numérique Analogique (DAC)
VI.5.1.Caractéristiques
51
 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ériques
VI.5. Convertisseur Numérique Analogique (DAC)
VI.5.2.Pins
52

Contenu connexe

Similaire à FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurablesPeronnin Eric
 
a_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdfa_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdfAnasAsran1
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------NasriMohsen2
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..sunprass
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfDAPcreat
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Karim Touati
 
Ch8 architecture
Ch8 architectureCh8 architecture
Ch8 architecturemickel iron
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.pptamine17157
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdfAbdo Brahmi
 
DSP FPGA.pdf
DSP FPGA.pdfDSP FPGA.pdf
DSP FPGA.pdfHouBou3
 
cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)Hạ Cháy
 
Les Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptLes Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptwafawafa52
 

Similaire à FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD (20)

Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Cours pics16 f877
Cours pics16 f877Cours pics16 f877
Cours pics16 f877
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
a_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdfa_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdf
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
 
Ch8 architecture
Ch8 architectureCh8 architecture
Ch8 architecture
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.ppt
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
 
DSP FPGA.pdf
DSP FPGA.pdfDSP FPGA.pdf
DSP FPGA.pdf
 
cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)
 
Les Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.pptLes Microcontrôleurs 68HCXX.ppt
Les Microcontrôleurs 68HCXX.ppt
 

FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

  • 1. STM32F4 tutorial Ecole Nationale d'Ingénieurs de Tunis ‫بتونس‬ ‫للمهندسين‬ ‫الوطنية‬ ‫المدرسة‬ 1
  • 3. Caractéristiques de la carte STM32F4Discovery 3
  • 6. Rappel: Architectures des processeurs Harvard Von Neumann Cortex-M4: Harvard & RISC 6
  • 7. 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-M4 I.2.Caractéristiques (1)
  • 8. I.Noyau Cortex-M4 I.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. 8
  • 9. I. Noyau Cortex-M4 I.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) 9
  • 10. I. Noyau Cortex-M4 I.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 10
  • 11. I. Noyau Cortex-M4 I.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 11
  • 12. I. Noyau Cortex-M4 I.6. Registres du noyau 12
  • 13. I. Noyau Cortex-M4 I.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) 13
  • 14. I. Noyau Cortex-M4 I.6. Registres du noyau 1.6.1. Registres GP(2) Load & Store Process 14
  • 15. I. Noyau Cortex-M4 I.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) 15
  • 16. I. Noyau Cortex-M4 I.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 16
  • 17. I. Noyau Cortex-M4 I.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 17
  • 18. I. Noyau Cortex-M4 I.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 18
  • 19. I. Noyau Cortex-M4 I.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 19
  • 20. I. Noyau Cortex-M4 I.7. Les exceptions et les interruptions 1.7.1. Exceptions et interruptions (2) 20
  • 21. I. Noyau Cortex-M4 I.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 21
  • 22. I. Noyau Cortex-M4 I.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 22
  • 23. I. Noyau Cortex-M4 I.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) 23
  • 24. I. Noyau Cortex-M4 I.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 24
  • 25. I. Noyau Cortex-M4 I.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) 25
  • 26. I. Noyau Cortex-M4 I.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. 26
  • 27. I. Noyau Cortex-M4 I.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) 27
  • 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. Architecture II.1. Les bus 28
  • 30.  4GB de mémoire addressable  8 blocks mémoires de 512MB  Types:  Data  Programme s  Registres  I/O ports II. Architecture II.2. Organisation de la mémoire 30
  • 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. Architecture II.2. Organisation de la mémoire (2) 31
  • 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’instruction III.1. Types d’instrcutions 32
  • 33.  Généralement des registres  Les résultats sont sauvegardés dans des registres de destination  Exemple: MOVSR0, R1 ; R0 = R1, setting flags IT MI ; IT instruction for the negative ;condition RSBMIR0, R1, #0 ; If negative, R0 = -R1 III. Jeu d’instruction III.2. Types d’instructions (2) 33
  • 34. III. Jeu d’instruction III.3. Flags d’état 34
  • 35. III. Jeu d’instruction III.4. Fonctions CMSIS 35
  • 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 36
  • 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 37
  • 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 38
  • 39. IV. Reset & Clock Control (RCC) IV.3. Schema des horloges 39
  • 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. Interruptions V.1. Interrupt handling (IRQ_Handler) Peripheric IE NVIC IE Priority level IRQ pending IRQ flag IRQ execution 40
  • 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. Interruptions V.2. Sources d’interruptions 41
  • 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ériques V.I. GPIO VI.1.1. Caractéristiques 42
  • 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ériques VI.2. GPIO VI.1.2. Alternate functions (AF) 43
  • 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ériques VI.2. Timers VI.2.1. Types 44
  • 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ériques VI.2. Timers VI.2.1. Caractériqtiques 45
  • 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ériques VI.3. Watchdogs VI.3.1. Independent Watchdog (IWDG) 46
  • 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ériques VI.3. Watchdogs VI.3.2. Window Watchdog (WWDG) 47
  • 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ériques VI.4. Convertisseur Analogique Numérique (ADC) VI.4.1.Caractéristiques 48
  • 49. VI. Périphériques VI.4. Convertisseur Analogique Numérique (ADC) VI.4.2.Pins 49
  • 50. VI. Périphériques VI.4. Convertisseur Analogique Numérique (ADC) VI.4.3.Interruptions ADC_CR1 Register (Control Register1) 50 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ériques VI.5. Convertisseur Numérique Analogique (DAC) VI.5.1.Caractéristiques 51
  • 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ériques VI.5. Convertisseur Numérique Analogique (DAC) VI.5.2.Pins 52