Ecole Nationale d'Ingnieurs de Tunis
STM32F4 tutorial
Carte STM32F4Discovery
Caractristiques de la carte
STM32F4Discovery
STM32F4 Block diagram
I.Noyau Cortex-M4
1. Architecture
Rappel: Architectures des processeurs
Harvard
Von Neumann
Cortex-M4: Harvard & RISC
I.Noyau Cortex-M4
I.2.Caractristiques (1)
Intgration troite des priphriques du systme
rduisant les cots (surface et dveloppement
du circuit intgr)
Jeu d'instructions Thumb2 combinant une
densit de code leve avec des performances
32 bits
FPU simple prcision mis en uvre dans tous
les microcontrleurs STM32F4xxx
Optimisation de la commande de l'alimentation
des composants du systme
Modes de veille intgrs faible consommation
d'nergie
I.Noyau Cortex-M4
I.2.Caractristiques (2)
Excution rapide de code (1.2 DMIPS)
permettant une frquence dhorloge plus
lente ou un temps de veille plus long
Division matrielle et multiplication rapide
Dterminisme et traitement d'alarme trs
performant pour les applications temps
critique
unit de protection de la mmoire (MPU) pour
les applications critiques pour la scurit
Vastes capacits de dbogage rduisant le
nombre de broches ncessaires.
I. Noyau Cortex-M4
I.3. Modes de traitements
Thread mode:
Utilis pour excuter les applications logicielles ordinaires
Le processeur est automatiquement en mode Thread la
suite dune RAZ (Reset)
Le registre de controle regarde si lexcution du
programme est effectue en mode privilgi ou nonprviligi
Handler mode:
Utilis pour traiter les exceptions
Le processeur retourne au mode Thread aprs avoir fini le
traitement dune exception (matrielle ou logicielle)
I. Noyau Cortex-M4
I.4. Niveaux de traitement
Niveau
Un programme en niveau prviligi peut utiliser toutes les instructions
et accder toutes les ressources.
Il peut changer le niveau de prvilge dans le registre de controle
Niveau
10
prviligi
non-prviligi
Un programme non-prviligi a un accs 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 accder certains priphriques du noyau (system timer,
NVIC, system control block)
Son accs aux mmoires et aux priphriques du noyau est limit
Doit utiliser linstruction SVC (Superviser Call) pour changer le niveau
de traitement
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
ladresse 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 utiliss pour
stocker les variables du programmes
(oprandes)
Cortex-M4 est un processeur RISC
architecture Load & Store:
Les valeurs des oprandes sont charges dans
les registres GP (Read)
Les oprations sont effectus sur ces registres
(Modify)
Le rsultat de lopration est envoy vers
ladresse de loprande 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 possde 2 niveaux (banques):
Main Stack Pointer
Process Stack Pointer
Permet de sparer lexcution de deux types de
traitement diffrents (Thread mode et Handler
mode) dans le cas dun noyau temps rel en cours
dxcution (RTOS)
15
I. Noyau Cortex-M4
I.6. Registres du noyau
I.6.3. Link Register R14
Ce registre est utilis pour garder ladresse des
rsultats retournes par des sous-programmes (de
type fonctions ou exceptions)
Il permet alors dutiliser rapidement les sousprogrammes
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 ladresse de linstruction qui suit la
dernire qui a t excute
Trs 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 privilge du programme
excut en mode Thread
Indique si lunit 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 matrielle ou
logicielle.
Une exception/interruption change le cours dexcution normal du
programme en cours.
Linterruption est un type particulier dexception o le processeur
reprend son cours dexcution normal aprs avoir effectu celui de
linterruption
Le NVIC (Nested Vectored Interruption Controller) permet dexcuter
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 donnes
Le processeur Cortex-M4 supporte les types de
donnes suivants:
Mots (word): 32-bit
Demi-mot (halfword): 16-bit
Octet (Byte): 8-bit
21
I. Noyau Cortex-M4
I.9. La bibliothque CMSIS
CMSIS (Cortex Microcontroller Software Interface
Standard) dfinit un mode commun pour:
Laccs aux registres des priphriques
Dfinir les vecteurs des exceptions
Les noms des registres des priphriques du noyau
Une interface indpendante pour les noyaux temps rels (RTOS)
CMSIS contient les adresses et les dfinitions des
structure utilises par les priphriques du noyau CortexM4.
CMSIS simplifie le dveloppement des logiciels en utilisant
des fonctions prdfinies pour laccs et la manipulation
des registres des priphriques du noyau
22
I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.1. NVIC
NVIC est le controleur des interruptions. Il
permet de grer:
23
Grer jusqu 82 interruptions (selon le modle de
la carte STM32)
Les niveaux de priorits des interruptions (de 0 : la
plus prioritaire jusqu 15: la moins prioritaire)
Les interruptions externes non-masquables (NMI)
I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.2. System Core Block (SCB)
Le System Control Block (SCB) est linterface entre
le programmeur et le processeur
Il fournit les informations concernant:
Limplmentation du systme
Le contrle du systme
La configuration
Le rapport des exceptions
24
I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.3. SysTick Timer
SysTick est un compteur 24-bit en mode
dcrmentation
Il peut etre utili en compteur simple ou comme
systme temps rel (RTOS)
Il se dcrmente partir dune certaine valeur
(Auto Reload Valeur) juqu zero que lon peut
crire dans le registre STK_LOAD
Il permet de gnrer une interruption lorsquil
dborde (atteint 0)
25
I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.4. Memory protection unit (MPU)
Lunit de protection de la mmoire permet
damliorer lefficacit du systme par:
La division de la mmoire du processeur en plusieurs
rgions (jusqu 8 rgions)
Lidentification de la localisation, la taille et le mode
daccs pour chaque rgion gre par la MPU (Memory
protection unit)
La MPU permet
26
La configuration des attributs indpendants de chaque
rgion de la mmoire
Le chevauchement des rgions
Exporter les attributs de la mmoire vers le systme.
I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.5. Floating point unit (FPU)
Le processeur Cortex-M4F (F comme FPU) comprend
lextension FPv4-SP.
Calcul en virgule flottante (simple prcision)
S
Exposant
(1bit ( 8-bit)
)
Mantisse
(23 bits)
N=(-1)S.M.2(E-127)
FPU permet deffectuer:
27
Laddition, la soustraction, la multiplication, la division, laccumulation
et le calcul de la racine carre.
FPU permet aussi la conversion des nombres en virgule fixe en virgule
flottante
FPU permet de grer les registres de 32-bits pour les oprations Load,
Store et Move.
II. Architecture
II.1. Les bus
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)
28
II. Architecture
II.1. Les bus (2)
29
II. Architecture
II.2. Organisation de la mmoire
4GB de
mmoire
addressable
8 blocks
mmoires
de 512MB
Types:
30
Data
Programme
s
Registres
I/O ports
II. Architecture
II.2. Organisation de la mmoire (2)
Unaligned memory access
Possibilit accder aux zones mmoires en
word/half-word/Byte
Avantage: Meilleure organisation de la mmoire
SRAM
Bit-banding: Technique permettant laccs
atomique un bit
31
Plus besoin de passer par la procdure
Read/Modify/write pour changer la valeur dun bit
dans un registre (Mais sur quelques zones
particulires de la mmoire)
Avantage: Rduction du nombre de cycles
dinstructions
III. Jeu dinstruction
III.1. Types dinstrcutions
2 types dinstruction
Compression du code?
Instruction 32-bit (pour la rapidit dxcution)
Instruction 16-bit (pour la compression du code): Thumb2
Une instruction prend N cycles dhorloge
Plus le nombre/la taille des dinstructions est lev (rapide) plus
la consommation dnergie est leve et La taille du code est
grande
Solution: Optimiser le nombre ou la taille des instructions pour
avoir la fois une excution rapide et une consommation
moindre
Avantages
32
Thumb2 donne 1.2 DMIPS pour 16-bit (Avantages des
processeurs ARM 7 et 9)
Amlioration de la compression de la taille du code jusqu 26%
III. Jeu dinstruction
III.2. Types dinstructions (2)
Gnralement des registres
Les rsultats sont sauvegards 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
33
III. Jeu dinstruction
III.3. Flags dtat
34
III. Jeu dinstruction
III.4. Fonctions CMSIS
35
IV. Reset & Clock Control (RCC)
IV.1. Types de Reset
System Reset
Niveau bas au pin NRST (external reset)
Dbordement du Window watchdog (WWDG reset)
Dbordement 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) aprs avoir t (OFF) .
Naffecte que les registres RTC (Real Time Clock)
36
IV. Reset & Clock Control (RCC)
IV.1. Types dhorloges
Horloges systmes
HSI oscillator clock (Oscillateur interne)
HSE oscillator clock (Cristal/Cramique/Circuit
externe)
Main PLL (PLL) clock : Permet de multiplier/diviser
la frquence dhorloge HIS ou HSE (jusqu
168MHz)
Horloges secondaires
37
Oscillateur RC interne 32KHz (LSI)
Cristal externe 32.768KHz (LSE)
RTC (Real Time Clock)
IV. Reset & Clock Control (RCC)
IV.2. Cammande dhorloges
Slection dhorloge systme (Sysclk)
Rcupration dun signal dhorloge
HSI clock est automatiquement slectionn aprs un Reset
Le registre RCC_CR (RCC control register) permet de choisir
lhorloge utiliser
Pin MCO1 (PA8 en Alternate function)
Pin MCO2 (PC9 en Alternate function)
Slectionner le signal dhorloge rcuprer dans le registre
RCC_CFGR
Condition: Fclk <100 MHz (Frquence max dun pin GPIO)
Mesure de la frquence dhorloge
38
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.3. Schema des horloges
39
V. Interruptions
V.1. Interrupt handling (IRQ_Handler)
IRQ (Interruption ReQuest) est une exception:
Signale par un priphrique
Gnre par logiciel
Condition pour lxcution dune interruption
Autorisation dinterruption du priphrique
Autorisation dinterruption par NVIC
Peripheric
IE
IRQ
pending
NVIC IE
40
Priority
level
IRQ flag
IRQ
execution
V. Interruptions
V.2. Sources dinterruptions
82 sources dinterruptions gres par NVIC
Chaque IRQ est caractris par:
Sa position (0..81)
Son niveau de priorit (fixe ou programmable)
Son adresse dans la mmoire programme
Exemples
41
VI. Priphriques
V.I. GPIO
VI.1.1. Caractristiques
Modes de sortie: push-pull/open drain et pull-up/pulldown
Slection de la frquence maximale du signal de
sortie (I/O speed)
Modes dentre: floating, pull-up/pull-down, analog
Bit set and reset register (GPIOx_BSRR) pour laccs
direct aux bits du registre de sortie GPIOx_ODR
Mcanisme de verrouillage jusquau prochain Reset
par la configuration du regsitre (GPIOx_LCKR)
Fonctionnement en mode analogique
Fonction Toggle rapide (en 2 cycles dhorloges)
42
VI. Priphriques
VI.2. GPIO
VI.1.2. Alternate functions (AF)
Multiplexage trs flexible des pins des
GPIO (jusqu 16 AF par I/O)
La sortie est rcupre dans le registre
de sortie (GPIOx_ODR) ou dans un
priphrique (alternate function output)
Lentre est mise dans le registre
(GPIOx_IDR) ou dans un priphrique
(alternate function input)
43
VI. Priphriques
VI.2. Timers
VI.2.1. Types
Types des timers priphriques
2 x advanced-control timers (TIM1 & TIM8)
10 x general-purpose timers (TIM2 TIM5 &
TIM9TIM14)
2 x basic timers (TIM6 & TIM7)
Modes
Input capture
Output compare
PWM generation (edge- or center-aligned
modes)
One-pulse mode output
44
VI. Priphriques
VI.2. Timers
VI.2.1. Caractriqtiques
Rsolution: 16-bit/32-bit
Compteur: Up/Down/Up-Down
Prescaler: 16-bit
Gnration de requte 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 complmentaires: pour les Advanced
Timers 1&8 (pour la gnration de PWM
triphas)
Frquence dhorloge max=42MHz jusqu
45
84MHz
VI. Priphriques
VI.3. Watchdogs
VI.3.1. Independent Watchdog (IWDG)
12-bit downcounter
8-bit prescaler
Horloge ddi: Oscillateur RC 32KHz independent
(LSI)
Possibilit doprer en modes Stop/Standby
Utilisation:
Reset du systme en cas derreur/chec
Reset du systme au dbordement du IWDG
Activation/Dsactivation du IWDG
46
Logicielle: Selon la valeur du registre IWDG_KR
Matrielle: Par la configuration des bits doption de la
mmoire Flash (User option bytes)
VI. Priphriques
VI.3. Watchdogs
VI.3.2. Window Watchdog (WWDG)
7-bit downcounter
Utilise lhorloge principal FPCLK1/(4096*Prescaler)
Protection du systme contre:
Conditions de Reset du systme
Les interfrences externes
Lexcution errone des programmes
Le dcompteur atteint une valeur infrieure 0x40
La valeur initiale (Auto-Reload value) est suprieure 0x7F
Possibilit de gnrer une interruption la valeur 0x40
Activation
47
Toujours Dsactiv aprs un Reset
Activ par logiciel WWDG_CR<WDGA>=1
VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.1.Caractristiques
19 canaux multiplxs: 16 canaux externes/ 2 canaux internes/1
canal pour Vbat
Rsolution configurable:12-bit/10-bit/8-bit /6-bit
Conversion en mode Single/Continu/Discontinu
Gnration dinterruption par:
Fin de conversion
Watchdog analogique
Dbordement dvnements (overrun)
Conversion automatique en mode Scan du canal 0 au canal N
Alignement des donnes configurable
Temps dchantillonnage programmable par canal
Trigger externe (Timer par exemple)
Gnration de requte DMA pendant la conversion en mode
Regular Channel
ADC input range: VREF =<VIN =<VREF+
48
VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.2.Pins
49
VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.3.Interruptions
Sources dinterruptions de lADC
ADC_CR1 Register (Control Register1)
50
VI. Priphriques
VI.5. Convertisseur Numrique Analogique (DAC)
VI.5.1.Caractristiques
2 x DAC configurable en 8-bit/12-bit
Alignement configurable des sorties ( droite ou gauche) en
mode 12-bit
Gnration de signal triangulaire/alatoire
Conversions en mode dual indpendantes ou simultanes
Requte DMA pour chaque canal
Trigger externe pour lancer la conversion
Tension dentre maximaleVREF+
51
VI. Priphriques
VI.5. Convertisseur Numrique Analogique (DAC)
VI.5.2.Pins
Pins de sorties (DAC_OUTx): PA4 et PA5 configurs
en mode analogique
Valeur analogique de la sortie
52
Vout=VREF+(DOR/2N-1)
N: 8-bit/12-bit