Académique Documents
Professionnel Documents
Culture Documents
2
Architecture Cortex
L’architecture cortex est divisée en trois familles :
CORTEX A (APPLICATION) : Microprocesseurs à haute performances,
capables de supporter des systèmes d’exploitation. (Application : smartphones, digital
TV, smart-books…)
CORTEX R (REAL TIME) : Hautes performances pour les applications temps
réel, grande fiabilité. (Applications : Système de freinage automobile, les groupes
motopropulseurs, etc…)
CORTEX M (MICROCONTROLEUR) : Des solutions à faible coût pour des
applications embarquées. (Applications : sonorisation, électroniques de carrosserie
automobile et les airbags).
3
Processeur ARM vs architecture ARM
Architecture ARM
Décrit les détails du jeu d'instructions, du modèle du programmeur, le modèle d'exception
et la répartition de la carte mémoire.
Documenté dans le Manuel de Référence de l'Architecture.
Processeur ARM
Développé en utilisant l'une des architectures ARM.
Plus de détails de mise en œuvre.
4
Architecture Cortex M
6
Gamme Cortex-M
7
La famille STM32
Actuellement, la famille STM32 se divise en deux grandes catégories :
Les STM32Fxx, F pour Fast (rapide), sont utilisés dans les applications qui
donnent priorité à la vitesse d’exécution et dont la consommation en énergie n’est
pas une exigence première.
Les STM32Lxx, L pour Low power (faible consommation), sont utilisés dans des
domaines où la faible consommation en énergie est prioritaire par rapport à la vitesse
d’exécution de l’application.
Pour aller plus vite on doit consommer plus et, inversement, moins on veut
consommer moins il faut aller vite.
Il est impossible d’avoir ces deux qualités, vitesse d’exécution et faible
consommation, dans un même microcontrôleur.
Chacune des deux grandes catégories STM32Fxx et STM32Lxx se divise elle-même
en séries suivant le Cortex-M choisi.
Un STM32F7 est composé d’un Cortex-M7 et un STM32L4 d’un Cortex-M4. Le
chiffre après la lettre F ou L ne reflète pas toujours le Cortex-M utilisé ; par exemple, le
STM32F1 est composé d’un Cortex-M3. Il faut alors se référer à la documentation pour
connaître le Cortex-M qui compose le STM32 choisi.
8
Cortex M4
Interconnexion de bus
Permet au transfert de données d'avoir lieu sur différents bus simultanément
Fournit la gestion du transfert de données, par ex. un tampon d'écriture, opérations
orientées bit (bit-band)
Peut inclure des ponts de bus (par exemple, un pont de bus AHB à APB) pour connecter
différents bus dans un réseau en utilisant un seul espace mémoire global
Comprend le système de bus interne, le chemin de données dans le cœur du processeur10et
l'unité d'interface AHB LITE
Bloc diagramme de Cortex M4
Sous-système de débogage
Gère le contrôle de débogage, les points d'arrêt du programme et les points de surveillance
des données
Lorsqu'un événement de débogage se produit, il peut mettre le cœur du processeur dans un
état arrêté, où les développeurs peuvent analyser l'état du processeur à ce stade, comme les
valeurs de registre et les drapeaux.
Contrôleur d'interruption vectorielle imbriqué (Nested Vectored Interrupt
Controller NVIC)
Jusqu'à 240 signaux de demande d'interruption et une interruption non masquable (NMI)
Gère automatiquement les interruptions imbriquées, telles que la comparaison des
priorités entre les demandes d'interruption et le niveau de priorité actuel
Contrôleur d'interruption de réveil (Wakeup Interrupt Controller : WIC)
Pour les applications à faible consommation, le microcontrôleur peut passer en mode
veille en arrêtant la plupart des composants.
Lorsqu'une demande d'interruption est détectée, le WIC peut demander à l'unité de gestion
de l'alimentation de mettre le système sous tension.
Unité de protection de la mémoire (Memory Protection Unit) (en option)
Utilisé pour protéger le contenu de la mémoire, par ex. rendre certaines régions de
mémoire en lecture seule ou empêcher les applications utilisateur d'accéder aux données
d'application privilégiées
11
Cortex M4
Cortex-M3 et Cortex-M4 sont des microcontrôleurs 32bits.
Cortex-M4 a été étendu pour implémenter le profil d’une architecture Armv7E-M (FPU,
Instructions DSP …).
Cortex M possède un jeu d’instructions RISC. Toutes les opérations sur les données sont
effectuées sur les registres du CPU, ce qui limite l’accès à la mémoire uniquement pour
chargement et le sauvegarde des données.
Historiquement les processeurs ARM, possèdent un jeu d’instructions de 32 bits. Dans le
bit d’optimisation de la mémoire, ARM a introduit les instructions Thumb sur 16bits. Par la
suite, ARM a introduit le jeu d’instructions Thumb-2, qui est un mélange de jeux
d’instructions de 16 et 32 bits.
Cortex M3/M4/M7 sont conçus pour supporter les instructions Thumb et Thumb-2,
avec les instructions de l’unité à virgule flottante et les instructions SIMD : Single
Instruction Multiple Data.
S’appuyant sur une architecture Hardvard, le microcontrôleur Cortex M possèdent
plusieurs bus, ce qui lui permet d’effectuer plusieurs opérations en parallèles.
L’accès aux données peut être aligné sur 32 bits ou non aligné ; ces deux modes d’accès
offrent une grande flexibilité et une bonne exploitation de la mémoire.
12
Accès aux données
13
Architecture minimale d ’une Unité Centrale
Bus d ’adresses
Bus de données
Bus de commandes
Sorties
Coupleur
Micro-
ROM RAM d ’entrée
processeur
sortie Entrées
14
Architecture minimale d ’une Unité Centrale
Bus d ’adresses
Coupleur Sorties
Micro- Mémoire
d ’entrée Entrées
processeur données
sortie
Adresses
Mémoire
programme
Architecture Harvard
15
Cycle d’exécution d’une instruction
Fetch
Exécution Decode
Fetch: l'instruction suivante est extraite de l'adresse mémoire actuellement stockée dans
le compteur de programme et stockée dans le registre d'instructions. A la fin de l'opération
de récupération, le PC pointe vers la prochaine instruction qui sera lue au cycle suivant.
Decode : Au cours de cette étape, l'instruction codée présentée dans le registre
d'instructions est interprétée par le décodeur.
Exécution : l'unité de contrôle de la CPU transmet les informations décodées sous la
forme d'une séquence de signaux de commande aux unités fonctionnelles concernées de la
CPU pour effectuer les actions requises par l'instruction
16
Stage de Pipeline
18
Autorisations du programme
Il existe deux types d’autorisations du programme : Unprivileged et privilileged
Sans privilège (Unprivileged): sans privilège, ce qui signifie qu'il n'y a pas de
privilèges pour le programme.
Le programme sera interdit d’utiliser les instruction assembleur MSR ou bien
MRS qui sont des instructions d’écriture dans les registres de microprocesseur.
Le programme subit aussi un empêchement d’accès au système d’horloge du
système
Pas d’accès au circuit d’interruption NVIC ainsi que le bloc de contrôle système
(system control block).
Il a également des autorisations restreintes pour gérer la mémoire et les
périphériques.
Avec privilège (Privileged): donne au logiciel tous les privilèges. Le logiciel peut
utiliser toutes les instructions et a accès à toutes les ressources. C’est l’autorisation
obtenue après un démarrage ou bien un REST.
Lorsque le processeur est en mode Handler, il va avoir toujours tous les accès, tandis que
lorsqu'il est en mode Thread, les permissions sont contrôlées par le registre CONTROL.
20
Les registres internes
Un ensemble de registres généraux
R0-R12,
Un pointeur de pile SP (Stack Pointer)
Un registre de lien LR (Link
Register),
Un compteur de programme PC
(Program Counter),
Un registre d'état du programme PSR
(Program Status Register),
Un groupe de registres pour traiter les
interruptions, des registres de masque
d'exception
le registre spécial du contrôleur
CONTRÔLE.
21
Les registres internes
Enregistreurs publics R0-R12
Tout processus effectué par le processeur les registres généraux doivent faire partie. Par
exemple, le processus d'addition de deux nombres se fait en plaçant les deux nombres à
partir de l'endroit où ils sont stockés dans les registres, par exemple R1 et R2, puis en les
additionne, le résultat sera stocké dans un autre registre, par exemple R3.
23
Pointeur de pile
Il existe deux pointeurs de pile : le main stack et le process stack.
Le main stack est le pointeur pile principal qui sera utilisé directement après la
mise sous tension ou bien après un RESET.
Le process stack peut être utilisé dans le cas où en utilise un système
d’exploitation. Le système d’exploitation réserve pour lui le main stack et si il avait
une application on lui reserve le pointeur process stack pour ne pas avoir un
chevauchement entre les deux.
Le tableau suivant montre les pointeurs pile utilisés pour chaque mode de privilèges et
type d’accès.
24
Les registres internes
Registre de lien (Link Register)
Contient les données de retour pour chaque sous-fonction, et supposons que le processeur
exécute une fonction spécifique, et à l'intérieur de cette fonction en appel une autre
fonction, l'adresse de la fonction en cours sera enregistrée dans l'enregistreur de lien avant
d'aller à la deuxième fonction et à la fin de son exécution, l'assistant trouve l'adresse de la
fonction d'origine dans l'enregistreur de lien et y retourne.
25
Les registres internes
Registre d'état du programme PSR (Program status register)
Il contient 3 couches APSR, IPSR et EPSR comme indiqué :
La couche APSR (Application Program Status Register) contient l'état des applications
du programme, en particulier lors de l'utilisation d'opérations mathématiques, nous pouvons
voir si une opération de division s'est produite par zéro ou un débordement pour une variable
particulière.
La deuxième couche est l'IPSR (Interrup Program Status Register) et contient le
numéro de de l’interruption en cour.
La couche EPSR (Execution Program Status Register) ), le processeur stocke l'état
actuel d'exécution du programme, par exemple, s'il exécute une instruction qui peut être
interrompue ou non.
26
Les registres internes
28
Les registres internes
Le tableau suivant contient le type de chaque registre et la validité d'accès ainsi que sa
valeur après le redémarrage
29
Système de bus
Le système principal de Bus se base sur une matrice de bus multicouche de 32 bits de
haute vitesse (AHB : Advanced High-Speed bus) qui interconnecte 8 unités maîtres à 7
esclaves.
La matrice de bus permet d'accéder à partir d'un maître à un esclave, permettant un accès
simultané et un fonctionnement efficace même lorsque plusieurs périphériques de vitesse
différents fonctionnent simultanément.
Il y a 2 types de bus connectées à la matrice : systèmes AHB et APB.
30
Système de bus
Huit maîtres :
Cortex™-M4F core I-bus, D-bus et S-bus
Bus mémoire DMA1
Bus mémoire DMA2
Bus périphérique DMA2
Bus Ethernet DMA
Bus DMA USB OTG HS
Sept esclaves :
Bus ICode de la mémoire Flash interne
Bus DCode mémoire Flash interne
SRAM1 interne principale (112 Ko)
SRAM2 interne auxiliaire (16 Ko)
SRAM3 interne auxiliaire (64 Ko) disponible uniquement sur les appareils
STM32F42xxx et STM32F43xxx
Périphériques AHB1, y compris les ponts AHB vers APB et les périphériques
APB
Périphériques AHB2
FSMC (flexible static memory controller)
31
Système de bus
32
Interconnexions du CPU avec les mémoires et les périphériques
Les mémoires flash et SRAM sont connectées au CPU à travers le bus AHB
(Advanced High-Speed bus), tandis que les périphériques sont connectés à un ou
plusieurs bus APB (Advanced Peripheral Bus).
Le bus AHB est également pris en charge des maîtres de bus supplémentaires, tels que
des unités DMA (Direct Memory Access).
En ajoutant des périphériques plus complexes tels que l’Ethernet MAC et USB ayant
leurs propres DMA. Avec la puissance et la complexité des périphériques, l’arbitrage des
bus est devenu difficile à maitriser.
La famille de processeurs Cortex-M résout ce problème en utilisant une matrice de
bus AHB.
La matrice de bus AHB consiste en un certain nombre de bus AHB parallèles
connectés à différentes régions du circuit. Ces zones sont définies par le fabricant lors de
la conception de la puce.
Chaque région est un périphérique esclave; il peut s'agir d'une mémoire flash, d'un
bloc de mémoire SRAM ou d'un groupe de périphériques utilisateur sur un bus APB.
Chacune de ces régions est ensuite connectée à chacun des maîtres de bus par le
biais de bus AHB supplémentaires pour former la matrice de bus.
Cette technique permet aux fabricants de concevoir des périphériques complexes avec
plusieurs processeurs Cortex-M, unités DMA et périphériques avancés, chacun avec des
chemins d'accès parallèles vers les différentes ressources de périphérique.
33
AHB vs APB
Les deux font partie du standards AMBA (Advanced Microcontroller Bus Architecture)
34
Horloge système et bus
L'horloge système est utilisée pour déterminer la vitesse à laquelle les instructions sont
exécutées et elle a une vitesse maximale de 168 MHz.
Le Bus AHB est dérivé de l'horloge système, ce bus a une vitesse maximale de
168MHz.
Le Bus APB1 est dérivé de l'AHB, ce bus a une vitesse maximale de 42MHz.
Le Bus APB2 est dérivée de l'AHB, ce bus a une fréquence maximale de 84MHz.
Périphériques d'horloge non système : Un certain nombre d'horloges périphériques ne
sont pas dérivées de l'horloge système mais ont leur propre source indépendante.
35
Système de bus
I-Bus (Instruction Bus): dédié principalement pour le transfert des instructions (code)
entre Cortex et la mémoire Flash. Principalement pour la mémoire de programme. Ce bus
de 32 bits permet la recherche des instructions et des vecteurs à partir de l’adresse
0x00000000 à 0x1FFFFFFF. Basé sur le protocole AMBA 3.0 AHB.
D-Bus (Data Bus) dédié principalement pour le transfert des données (SRAM) entre
Cortex et la mémoire SRAM. Principalement pour la mémoire de programme. Il permet
l’accès aux données à partir de l’adresse 0x20000000 à 0x2FFFFFFF. Ce bus est de 32
bits.
S-Bus (System bus) Ce bus permet d'accéder aux données situées dans un périphérique ou
dans la SRAM. Les instructions peuvent également être récupérées sur ce bus (moins
efficace que ICode). Les cibles de ce bus sont les SRAM1, SRAM2 et SRAM3 internes,
les périphériques AHB1 comprenant les périphériques APB, les périphériques AHB2 et les
mémoires externes. Principalement pour la RAM et les périphériques. Il permet l’accès à
la totalité de l’espace compris entre 0x20000000 et 0xFFFFFFFF à l’exception de la
région PPB (Private Peripheral Bus : bus pour le traçage des données). Ce bus est de
32 bits.
APB1 & 2 (Advanced Peripheral Bus 1 & 2): Chacun des deux bus est connecté au
AHB à travers un pont (respectivement AHB-APB1 et AHB-APB2) et servent à véhiculer
les données vers et depuis une partie des périphériques .
36
Système de bus
Bus Matrix La matrice de Bus gère l'arbitrage d'accès entre maîtres. L'arbitrage utilise un
algorithme à tour de rôle.
Ponts AHB / APB (APB) Les deux ponts AHB / APB, APB1 et APB2, fournissent des
connexions synchrones complètes entre l'AHB et les deux bus APB, permettant une
sélection flexible de la fréquence périphérique. Avant d'utiliser un périphérique, vous
devez activer son horloge dans le registre RCC_AHBxENR ou RCC_APBxENR.
Remarque: Lorsqu'un accès 16 ou 8 bits est réalisé sur un registre APB, l'accès est
transformé en accès 32 bits: le pont duplique les données 16 ou 8 bits pour alimenter le
vecteur 32 bits
37
Système de bus
38
Système de bus
39
Répartition de Mémoire
Le processeur possède un bus d’adresse de 32 bits donc on peut adresser un espace
mémoire de 4Go dans laquelle chaque adresse et/ou une zone spécifique est allouée à
chaque mémoire ou extrémité de terminal.
40
Répartition de Mémoire
41
Répartition de Mémoire
Le premier 1 Go de mémoire est réparti uniformément entre une région de code et une
région SRAM.
L'espace de code est optimisé pour être exécuté à partir du bus I-Code.
La SRAM est atteinte avec le bus D-code.
La SRAM démarre à partir de l'adresse 0x2000 0000 et peut potentiellement durer jusqu'à
0x3FFF FFFF.
L'adresse de fin réelle dépend de la quantité effective de SRAM interne. Par exemple,
en supposant un STM32F103RB avec 20 Ko de SRAM , nous avons que l'adresse finale est
0x200013FF. Essayer d’accéder à un emplacement en dehors de cette zone provoquera
une exception Bus Fault .
Bien que le code puisse être chargé et exécuté à partir de la SRAM, les instructions seraient
récupérées à l'aide du bus système, ce qui entraîne un état d'attente supplémentaire. Il est
probable que le code s'exécute plus lentement à partir de la SRAM qu'à partir de la mémoire
FLASH sur puce située dans la région de code.
En fait, pour tous les appareils STM32, une zone commençant à l' adresse 0x08000000 est
liée à la mémoire FLASH interne du MCU , et c'est la zone où réside le code de
programme .
Grâce à une configuration de démarrage spécifique, cette zone est également alaisée à
partir de l’adresse 0x0000 0000.
Cela signifie qu'il est parfaitement possible de consulter le contenu de la mémoire
FLASH aussi bien à partir de l'adresse 0x0800 0000 que de celle 0x0000 0000 (par
exemple, une routine placée à l'adresse 0x0800 16DC est également accessible à partir de l'
42
adresse 0x000016DC. .
Répartition de Mémoire
Le 0,5 Go de mémoire suivant est la région périphérique sur puce.
Chaque périphérique fourni par le MCU (timers, interfaces I2C et SPI, USART, etc.) est
associé à cette région.
Le premier 1 Mo des régions SRAM et Périphérique est adressable en bits en utilisant
une technique appelée bande de bits.
Étant donné que toutes les SRAM et tous les périphériques utilisateur du STM32 sont
situés dans ces régions, tous les emplacements de mémoire du STM32 peuvent être
manipulés au niveau du mot ou au niveau du bit.
L'espace d'adressage de 2 Go suivant est alloué à la SRAM mappée en mémoire
externe et aux périphériques.
La RAM externe est dédiée à la SRAM externe et aux flashs. Les dispositifs Cortex-M
peuvent exécuter du code et charger/stocker des données à partir de mémoires
externes, qui étendent les ressources de mémoire interne, via l'interface EMI/FSMC.
Le dernier 0,5 Go est alloué aux périphériques internes du processeur Cortex et à une
région pour les futures améliorations spécifiques du fournisseur du processeur Cortex.
Tous les registres du processeur Cortex se trouvent à des emplacements fixes pour tous
les microcontrôleurs Cortex.
Cela permet au code d'être plus facilement porté entre les différentes variantes de
STM32 et en fait les microcontrôleurs Cortex d'autres fournisseurs.
Un processeur à apprendre, un ensemble d'outils dans lesquels investir et de grandes
quantités de code réutilisable sur une large gamme de microcontrôleurs. 43
Répartition de Mémoire
Le Cortex-M4 définit une carte mémoire fixe de 4 Go qui spécifie les régions pour les
périphériques de code SRAM, la mémoire externe et les périphériques et les registres du
système Cortex.
Cette carte mémoire est commune à tous les appareils Cortex.
L'adresse de départ de la mémoire dans laquelle le programme est stocké est 0x00000000
et le plus grand espace pouvant être utilisé est de 512 Mo, bien sûr, cela varie en fonction de
la RAM ou de la mémoire flash disponible dans chaque contrôleur, par exemple, avec le
contrôleur stm32F429, la mémoire flash est de 2 Mo.
44
Répartition de Mémoire
à l'adresse 0x00000000 il est toujours stocké l’adresse de pointeur de pile, l'adresse de la
pile en RAM, et à l‘adresse suivante, qui est 0x00000004, est stocké le vecteur
d’interruption. La société ST divise cet espace pour les contrôleurs STM32, par exemple, les
codes de programme sont toujours placés à partir de l'adresse 0x08000000, qui est dédiée à
la mémoire flash.
L'adresse de la RAM externe, telle que celle de la carte Discovery, est 0x60000000, car les
processeurs Cortex-M peuvent exécuter le programme et traiter les données sur la mémoire
externe et cette mémoire est utile dans le cas de systèmes d'exploitation ou d'applications
45
multimédias.
Fonctionnalité bit-Banding
L'une des grandes caractéristiques des processeurs ARM Cortex-M4 est qu'un bit est
contrôlé en écrivant un mot complet et un mot signifie 4 octets. Par exemple, si nous
voulons changer la valeur d'un bit particulier, que ce soit le bit 2 d'une variable dans la
mémoire RAM, le processeur lit d'abord le mot que cette variable contient et récupère sa
valeur, puis le change par la fonction logique ET ou bien OU, puis il est réécrit, et cela
prend 3 cycles, et si une interruption se produit pendant ce processus, la situation ne sera
pas bonne.
Grâce à la fonction Bit-Banding, le processus précédent peut être complété en une seule
étape qu'en écrivant directement sur un mot entier à un autre endroit, et le bit que nous
voulons est automatiquement changé, l'idée ici est que le processeur 32 bits traite plus
rapidement la réponse de mot et non un bit spécifique.
Dans la figure suivante, nous voyons les endroits désignés pour les opérations de bande
de bits pour la RAM, car il y a aussi une zone de bande de bits dédiée aux périphérique.
46
Fonctionnalité bit-Banding
47
Fonctionnalité bit-Banding
49
Fonctionnalité bit-Banding/ EXEMPLE
Cherchant l’adresse du bit 2 de l'octet situé à l'adresse SRAM 0x2000 0300
dans la région d'alias se fait comme suit :
0x2200 6008 = 0x2200 0000 + (0x300*32) + (2*4).
L'écriture à l'adresse 0x2200 6008 a le même effet qu'une opération de lecture-
modification-écriture sur le bit 2 de l'octet à l'adresse SRAM 0x2000 0300
L'adresse de lecture 0x2200 6008 renvoie la valeur (0x01 ou 0x00) du bit 2 de
l'octet à l'adresse SRAM 0x2000 0300 (0x01 : bit activé ; 0x00 : bit effacé)
Le mot d'alias à 0x23FFFFE0 correspond au bit [0] de l'octet de bande binaire à
0x200FFFFF :
0x23FFFFE0 = 0x22000000 + (0xFFFFF*32) + 0*4.
Le mot d'alias à 0x23FFFFFC correspond au bit [7] de l'octet de bande binaire à
0x200FFFFF :
0x23FFFFFC = 0x22000000 + (0xFFFFF*32) + 7*4.
Le mot d'alias à 0x22000000 correspond au bit [0] de l'octet de bande binaire à
0x20000000 :
0x22000000 = 0x22000000 + (0*32) + 0*4.
Le mot d'alias à 0x2200001C correspond au bit [7] de l'octet de bande binaire à
0x20000000 :
0x2200001C = 0x22000000 + (0*32) + 7*4. 50
Fonctionnalité bit-Banding
Dans cet exemple, nous voulons pouvoir mettre à 1 ou 0 le huitième bit de registre de
donnée de sortie GPIO de port B qui est à l’adresse 0x40010C0C
PB8 = 1; //led on
51
Disposition des variables en mémoire
Toute variable 32 bits se compose de 4 octets. La question qui se pose est comment
placer cette information dans la mémoire?
Pour cela, il y a deux méthodes de placement:
Big-endian est un ordre dans lequel la valeur la plus significative de la séquence est
stockée en premier.
little-endian, la valeur la moins significative de la séquence est stockée en premier.
Par exemple, dans une CPU big-endian, les quatre octets de données 0x01020304
seraient stockés 0x01 (adresse + 0), 0x02 (adresse + 1), 0x03 (adresse + 2), 0x04 (adresse +
3). Dans un processeur little-endian, les mêmes octets seraient stockés 0x04 (adresse + 0),
0x03 (adresse + 1), 0x02 (adresse + 2), 0x01 (adresse + 3).
52
Architecture du microcontrôleur STM32F4xx
53
Configuration de Boot
Les valeurs sur les broches BOOT sont verrouillées sur le 4e front montant de
SYSCLK après une réinitialisation
Il appartient à l'application de définir les broches BOOT1 et BOOT0 après la
réinitialisation pour sélectionner le mode de démarrage requis.
Les broches BOOT sont également ré-échantillonnées lors de la sortie du mode
veille et doivent donc être conservées dans le mode de démarrage requis en mode
veille.
Une fois ce délai de démarrage écoulé, la CPU récupère la valeur de haut de pile à
partir de l'adresse 0x0000 0000, puis démarre l'exécution du code à partir de la
mémoire de démarrage à partir de 0x0000 0004.
Architecture du microcontrôleur STM32F4xx
Le circuit STM32F4xx est basé sur une architecture ARM® Cortex™-M4 RISC 32 bits,
fonctionnant à une fréquence maximale de 168 MHz.
Il intègre une mémoire flash de 1Mo, une mémoire système SRAM de 128 Ko, une
mémoire SRAM de sauvegarde de 4 Ko, une RAM couplée au core de 64Ko et une vaste
gamme de périphériques d’entrées-sorties.
L’intégration efficace des différents composants exige l’emploie d’un bus système à
haute performance et ayant une grande bande passante pour effectuer des opérations en
parallèle.
55