La famille STM32 est une série de microcontrôleurs 32-bits en circuits intégrés réalisés par la société Franco-Italienne STMicroelectronics. Les puces STM32 sont regroupées dans différentes séries proches, basées sur les processeurs d'architecture ARM 32-bits, tels que le Cortex-M7F, le Cortex-M4F, le Cortex-M3, Cortex-M0+, ou le Cortex-M0. Chaque microcontrôleur est constitué d'un cœur de calcul, de mémoire vive (RAM) statique, de mémoire flash (pour le stockage), d'une interface de débogage et de différents périphériques1.
Le STM32 F4 comporte un Cortex-M4F, un DSP et un FPU. Il est notamment complètement géré par le système libre temps-réel ChibiOS/RT.
L'ensemble des microcontrôleurs peuvent également être programmés à l'aide de l'IDE d'Arduino.
l existe différents types de cartes compatibles Arduino basées sur le STM32. La série Nucleo a été conçue par STMicroelectronics à cet effet. D'autres constructeurs ont également fait des cartes compatibles utilisant ce SoC sous divers noms. Cela permet de l'utiliser comme contrôleur de machine-outil à commande numérique (CNC en anglais). des logiciels tels que Grbl permettent de contrôler des machines de fraisage2, auxquelles notamment les imprimantes 3D ou imprimantes de découpe laser se rapprochent. Permettant ainsi de rendre accessible ce type de machines traditionnellement très onéreuse à des fab lab et amateurs éclairés.
Les cartes Stm32 Nucleo, supportent une compatibilité avec les cartes Arduino, bien que basées sur des microcontrôleurs ARM Cortex-M (32 bits) et non Atmel AVR (8 bits) comme utilisés dans les cartes Arduino standard. Il ajoute ainsi à Arduino de bonnes performances graphiques en y ajoutant l'accélérateur graphique Chrom-ART (fourni avec une bibliothèque open source), orienté affichage TFT (ou plus généralement, écran à cristaux liquides), et comportant pour cela une interface MIPI DSI
Les STM32 F4 et supérieurs possédants un DSP, ils sont adaptés à l'usage pour le son. La carte synthétiseur Axoloti est un exemple d'application dans le domaine du son.
Le logiciel de synthétiseur analogique libre, Mozzi pour Arduino peut être utilisé directement sur les STM32, en particulier sur la carte à bas prix, STM32F103C8T6 blue pill board (dans les 2€), sans besoin d'un véritable DAC Ce processeur est utilisé comme processeur principal et contrôleur de vol dans les drones quadrirotors de course et acrobatiques utilisés en pilotage en immersion (FPV, généralement DIY (artisanaux). Il offre plus de puissance de calcul que les autres contrôleurs utilisés dans ce type de drone, tel que les Atmel AVR et le Microchip PIC, tous deux des processeurs 8 bits5,6. Les séries F1 F3 F4 et F7 peuvent en être utilisés dans ce domaine7. Les STM32 de la série F4 en particulier, ont un certain succès dans ce domaine (où il est généralement appelé F48), il est notamment utilisé par les drones de Quantum Systems9, mais également sur les « cartes de vol » (cartes contrôleur) de différents constructeurs
2. 2 / 29
Cours 2
Introduction aux microcontrôleurs
1- Les familles STM32 : les différences entre les séries des
microcontrôleurs STM32
2- Les caractéristiques de STM32: Power ON/OFF, mode faible
consommation…
3- Présenter les libraires du microcontrôleur STM32F4
3. 8 / 29
Qu’est-ce qu’un microcontrôleur?
Microcontrôleur (µC, uC, MCU)
Circuit intégré rassemblant les éléments essentiels d’un ordinateur
• unité de calcul et de contrôle (le coeur)
• mémoire vive
• périphériques
(ex : port série, timers, DMA, flash. . .)
• entrées/sorties
(ex : convertisseurs analogique ↔ numérique (ADC/DAC))
4. 9 / 29
Exemples d’utilisation
Electroménager & Internet of Things
• montres connectées, bracelets santé
• capteurs domotiques, four, machine à laver, thermostat.. .
• smartphones, tablettes
Automobile, Aeronautique
• une voiture moderne intègre ≈30 MCUs
• logiciel critique dans l’avionique (cf. reste du master)
Un foyer moyen possède 4 CPUs et 30 MCUs.
5. Quelques MCUs fameux dans leur habitat naturel
• Microchip PIC16 (1990, 8 bits, 1MHz, quelques registres)
• Microchip PIC12 (1990, très utilisé en DIY)
• Atmel AVR (2000, 8/16 bits, base des Arduino)
10 / 29
6. Quelques MCUs fameux dans leur habitat naturel
• ARM (2000) : Coeurs communs, différents constructeurs (ST,
Texas Instruments, Microchip.. .)
• SoC Freescale, Broadcom, TI etc. (2010, Raspberry Pi)
1GHz, 64 bits, RAM 512 Mo
10 / 29
7. 11 / 29
Le MCU, un compromis
L’intérêt
• forte intégration (une puce intègre toutes les fonctions)
• faible consommation électrique (1–500mW)
• faible coût (0.10–10€)
• généricité (par rapport au silicium dédié)
Les limitations
• peu de capacité de calcul (1–200 MHz)
• très faible stockage (1–512 Ko RAM, 1K–1M flash)
8. 12 / 29
Un MCU n’est pas :
• un CPU (Central Processing Unit)
(ex : Intel i7, Apple A11, . . .)
▶ puissance de calcul supérieure (GHz)
▶ pas de mémoire embarquée (quelques registres)
▶ pas de périphériques embarqués (bus externes)
• un FPGA (Field-Programmable Gate Array)
(ex : Xilinx, Altera.. .)
▶ circuit intégré reconfigurable
▶ grand nombre de portes logiques généralistes
▶ “programmation” en Verilog/VHDL
9. 13 / 29
Protocoles de communication embarqués
Toute communication entre le coeur et ses périphériques s’établit
selon un protocole (une langue commune)
Interne
bus de données : unité de calcul ↔ RAM ↔ DMA,
Externe
communication avec puces externes; communication inter-MCU
(ex : réseau de capteurs)
Architectures
symétrique, en réseaux, client-serveur.. .
en général : couches de nombreux protocoles
Exemple
UART, SPI, I2C, CAN, USB. . .
10. 14 / 29
La famille des ARM Cortex
ARM architecture qui spécifie (notamment) un jeu
d’instructions RISC, l’organisation de la mémoire,
modèle d’exécution. . .
Différentes versions du standard : ARMvX-M
Cortex Famille de coeurs physiques
vendus aux fabricants de silicone
Cortex-A pour Application (ex : smartphones)
Cortex-R pour Real-time
(temps d’exécution déterministe)
Cortex-M pour eMbedded (faible consommation)
M0 ARMv6-M, petit et pas
cher
M3 ARMv7-M, *,/ hardware,
plus d’instructions
M4 ARMv7E-M, FPU, DSP
Licences Cortex-M4
Atmel, STMicroelectronics, NXP, Texas Instruments
12. 16 / 29
La série des STM32F3
STM32F3 plusieurs sous-familles :
STM32F301, STM32F302, STM32F303 généralistes,
différents périphériques analogiques
(contrôle de moteur)
STM32F334 timer haute résolution (217
picosecondes)
STM32F373 16-bit sigma-delta ADC et ampli-ops
intégrés
STM32F3x8 marche à 1.8V au lieu de 3.3V
13. La série des STM32F3
STM32F3 plusieurs sous-familles :
STM32F301, STM32F302, STM32F303 généralistes,
différents périphériques analogiques
(contrôle de moteur)
STM32F334 timer haute résolution (217
picosecondes)
STM32F373 16-bit sigma-delta ADC et ampli-ops
intégrés
STM32F3x8 marche à 1.8V au lieu de 3.3V
. ..chacuns dans différents choix de RAM, flash et packages :
LQFP32 , LQFP100 , UFBGA100 . . .
16 / 29
14.
15. Les cartes d’essai
Si vous voulez étudier les MCUs ou faire du prototypage rapide,
pas besoin de concevoir une carte à chaque fois, il existe de
nombreuses cartes d’essai.
• produits d’appel pour les fabricants, donc très bon marché
(≈20€)
• divers périphériques embarqués : capteurs, écrans, réseau,
audio.. .
• programmation facile (interface USB)
17 / 29
16. La carte STM32F3-discovery
• STM32F303 : 72MHz,
48Ko RAM, 256Ko flash
• documentation et schéma
• programmeur USB intégré
ST-Link
• (presque) toutes les pattes
du MCU accessibles sur
header
• périphériques externes :
▶ port USB utilisateur
▶ alimentation par USB ou
externe (pile)
▶ accéléromètre/boussole
3D
▶ gyroscope
▶ 10 LEDs
▶ 1 bouton utilisateur
18 / 29
17.
18. Caractéristiques de la carte STM32F4Discovery
La carte STM32F4Discovery offre les caractéristiques suivantes :
— Un microcontrôleur STM32F407VGT6 avec processeur ARM
Cortex-M4 32 bits doté de :
une mémoire Flash de 1 Mo,
une mémoire vive de 192 Ko,
une FPU,
Un ST-LINK/V2 intégré
— Alimentation de la carte :
par bus USB,
par alimentation externe : 3 V ou 5 V.
Un accéléromètre à 3 axes ST MEMS LIS3DSH,
Un capteur audio (microphone) digital omnidirectionnel ST MEMS
MP45DT02.
Un DAC audio avec haut-parleur de classe D intégré.
19. Huit LEDs :
LD1 (rouge/vert) pour la communication USB,
LD2 (rouge) pour la mise sous tension 3.3 V,
Quatre LEDs Utilisateur : LD3 (orange), LD4 (vert),
LD5 (rouge) et LD6 (bleu),
2 LEDs USB OTG (USB On-The-Go) :
- LD7 (vert) VBUS,
- LD8 (rouge) surintensité.
Deux boutons-poussoirs (utilisateur et
réinitialisation).
Interface USB OTG avec connecteur micro-AB.
En-têtes d’extension pour les E/S pour une connexion
rapide à la carte.
Caractéristiques de la carte STM32F4Discovery
20. 24 / 29
Langages
C ou C++...
(ou tout langage compilant vers ARMv7)
Environnements de développement
Il en existe plusieurs (IDE, compilateur, debugger etc.) :
• Keil IDE / ArmCC (Keil),
• IAR Embedded Workbench (IAR),
• mBed (ARM)
• SW4STM/Eclipse/CubeMX/gcc (STMicroelectronics)
• . . .
• gcc/gdb/make/emacs :)
Chaînes d’outils de développement supportées