Sommaire
Qu’est-ce qu’un microcontroleur ?
Un microcontroleur est un composant électronique actif (c’est à dire nécessitant une alimentation externe) permettant de faire du traitement numérique de l’information de manière embarquée.
Ils peuvent se présenter sous différents formats selon leurs applications.
Structure simplifiée d’un microcontroleur
Il est constitué des éléments suivants :
- une unité de calcul, aussi appelée processeur, qui réalise divers calculs (pré-établis et câblés dans la structure du microcontroleur) sur des données à partir d’instructions provenant de la mémoire programme
- une zone de mémoire programme, communément appelé ROM (Read-Only Memory – ou Flash-ROM), qui stocke la liste des instructions à réaliser par l’application embarquée
- une zone de mémoire données, communément appelé RAM (Random Access Memory), qui stocke des données temporaires, mais nécessaires à l’exécution des tâches que doivent accomplir l’application embarquée
- des entrées/sorties, qui servent à récupérer des informations numériques ou analogiques de l’environnement de l’application (pour le cas des entrées) et à piloter ou à communiquer avec d’autres systèmes externes (pour le cas des sorties)
Selon les constructeurs et le type de composant choisi (en fonction de l’application visée), ces microcontrôleurs peuvent intégrer d’autres modules spécifiques : des timers autonomes pour la gestion du temps, des protocoles de communication particuliers et très utilisés dans le monde industriel ou embarqué, des gestionnaires de modulation de largeur d’impulsions pour le pilotage de système à temps de réponse “long”…
Les différentes applications
Les microcontrôleurs sont utilisés dès qu’il est nécessaire d’avoir un traitement numérique d’une information ou d’un signal, associé par la suite : soit à un pilotage d’un système, soit à la transmission de cette information à un autre système (pour un traitement à posteriori de cette donnée).
Une des premières applications des microcontrôleurs était l’intégration d’un élément de calculs dans un système transportable facilement : la calculatrice (dans les années 1970). Associée à de touches numérotées d’un clavier et à un écran, elle devait pouvoir restituer le résultat du calcul demandé par l’utilisateur. Il était donc nécessaire d’avoir un coeur de calculs avec des entrées-sorties spécifiques (contrairement à un processeur généraliste), peu gourmand en énergie et capable d’être autonome.
Ils sont ensuite très utilisés dans le monde de l’industrie : automobile et transports, éclairage, télécommunications, systèmes portatifs… et dans les appareils “grand public” : électroménager, télévision…
Depuis, les microcontrôleurs ont évolués et intègrent toujours plus de fonctionnalités. On les retrouve à présent dans la plupart des appareils “grand public” de faible puissance et portable. Les smartphones fonctionnent, par exemple, actuellement avec des microcontroleurs spécialisées, intégrant un coeur ARM-A (avec des instructions spécialisées dans la gestion des communications et de l’affichage graphique) : Société ARM et l’exemple du Cortex ARM-A72.
Dans tous les cas, il s’agit d’une application qui tourne en permanence et qui doit systématiquement répondre à toutes les sollicitations extérieures du système. C’est pourquoi les programmes embarqués sont souvent basés sur une boucle infinie, afin de scruter en permanence les entrées et mettre à jour les sorties en conséquence.
Structures de quelques microcontrôleurs réels
Microchip PIC16F1509 / Utilisation industrielle
Les microcontroleurs de type PIC16F, de la société Microchip, sont des unités de calculs embarquées sur 8 bits (i.e. ils traitent des données sur 8 bits en parallèle) prévues pour des utilisations industrielles et cadencées à environ 10~MHz. On les retrouve surtout dans le pilotage de systèmes simples pouvant interagir entre eux : électroménager, cartes à puces, automobile…
Ils sont basés sur des architecture de type MIPS (Microprocessor without Interlocked Pipeline Stages) de type RISC (Reduced Instruction Set Computer – i.e. avec un nombre très limité de calculs précablés). Ils n’intègrent qu’une simple unité de calculs arithmétiques et logiques (ALU – Arithmetic and Logic Unit). Les opérations de type multiplication ou division ne sont pas implémentées, elles sont donc réalisées à partir des opérations plus basiques et prennent du temps à être exécutées.
Microchip développe également des architectures 16 et 32 bits sur le même principe. Ces structures intègrent une unité de calculs en virgule flottante (FPU – Flotting Point Unit), permettant ainsi du traitement du signal plus poussé.
NXP LPC800 / Utilisation industrielle – Communications – IoT
Les microcontroleurs de type LPC800, de la société NXP, sont des unités de calculs embarquées sur 32 bits (i.e. ils traitent des données sur 32 bits en parallèle) prévues pour des utilisations industrielles intégrant un aspect communications inter-systèmes important et cadencées à environ 30~MHz.
Ils sont basés sur des architecture de type ARM-M (Advanced Risc Microcontroller – version Microcontroller) de type RISC (Reduced Instruction Set Computer – i.e. avec un nombre très limité de calculs précablés).
Il existe également des versions ARM-A pour les applications portables (type smartphone) et ARM-R pour des applications en temps réel. La structure de base est la même mais les cadences d’exécution, le nombre de coeurs de calculs et les périphériques sont différents et en nombre plus important.
Atmel SAM4S / Utilisation industrielle – Communications – IoT
Les microcontroleurs de type SAM4S, de la société Atmel, sont des unités de calculs embarquées sur 32 bits (i.e. ils traitent des données sur 32 bits en parallèle) prévues pour des utilisations industrielles intégrant un aspect communications inter-systèmes important et cadencées à environ 120~MHz.
Ils sont eux aussi basés sur des architecture de type ARM-M (Advanced Risc Microcontroller – version Microcontroller) de type RISC (Reduced Instruction Set Computer – i.e. avec un nombre très limité de calculs précablés).
Comment choisir ?
Vu le nombre de microcontrôleurs différents, comment choisir le bon ?
Ce choix dépend de l’application dans lequel il sera embarqué. Comme tout système électronique/informatique, ces critères sont variés.
En voici une liste non exhaustive.
- Nombre d’entrées/sorties, et leur type : toutes numériques ? analogiques ?
- Périphériques disponibles :
- Convertisseur analogique/numérique (ADC), numérique/analogique (DAC)
- Modulation de largeur d’impulsions (PWM)
- Communications extérieures : SPI, I2C, CAN
- Mémoires : pour les données (RAM), pour le programme (Flash/ROM)
- Chaine de développement / Langage de développement : on peut avoir plus l’habitude d’un IDE qu’un autre, d’un langage qu’un autre…
- Prix du microcontroleur : que ce soit pour une application pour un particulier (qui a un budget limité) ou un industriel (qui l’embarquera dans des millions d’exemplaires). Le prix des microcontroleurs varie en fonction des ressources et des périphériques qu’il propose.
- Consommation / Encombrement
- Extensions possibles / Bibliothèques de fonctions