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
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
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
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
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