STM32 : Présentation

08 février 2020 rdorigny 0 commentaires

Le STM32 est un microcontrôleur 32 bits très répandu dans le monde de l'électronique, on le trouve un peu partout sur les circuits intégrés désormais. A noter, qu'il est produit par la société STMicroelectronics qui est d'origine française.

Et donc, je vais vous présenter dans cet article la famille des microcontrôleurs STM32 qui sont élaborés autour du processeur Cortex développé par la société ARM.



1) Le Processeur ARM CORTEX

Attardons nous un peu sur le processeur ARM Cortex RISC 32 bits qui est le cœur de notre microcontrôleur. On en distingue 3 types:
  • Cortex-A : A pour application, pensé pour les smartphones ou tablettes. Ils sont donc très performants en calcul et prennent en compte les jeux d’instructions ARM, Thumb et Thumb-2. On y trouve les A5, A7, A15, A17, ... ;
  • Cortex-M : eMbedded (embarqué), le rendement énergétique est privilégié. Peu coûteux, il supporte seulement le jeu d’instructions Thumb-2;
  • Cortex-R : pensé pour les applications temps réel. Très performant pour les systèmes embarqués, il supporte les jeux d’instructions ARM, Thumb et Thumb-2.

  • Le Cortex M est le processeur ARM que l'on trouve généralement dans le STM32, il est totalement intégré dans la puce. Comme tous les processeurs, on trouve une gestion de interruptions, une horloge système, un système de mise au point et un espace d’adressage mémoire.

    Les DMA (Direct Memory Access, accès direct mémoire) du STM32 possèdent douze canaux servants aux échanges des données avec les registres des périphériques en mémoire sur 8, 16 ou 32 bits. Rappelons que le principe de fonctionnement est que les valeurs en mémoire sont chargées dans les registres, puis le traitement est effectué, et enfin la valeur finale est remise en mémoire. Le Cortex-M dispose de deux modes de travail :
  • Thread Mode : exécution du programme classique.
  • Handler Mode : mode exception suite à un événement (différent d'une interruption). Il redonne la main par la suite au Thread Mode.

  • Pour les registres:
  • R0 à R12 : registre de données;
  • R13 : Stack Pointer, pointeur de pile
  • R14 : Link Register, mémorise l’information de retour pour les sous-routines, les appels de fonctions et les exceptions;
  • R15 : PC pour Program Counter.
  • 2) Les différents modèles de STM32

    On a globalement plusieurs familles de STM32 :
  • La série Fast STM32Fxx pour les microcontrôleurs rapides;
  • La série Fast STM32Wxx pour les microcontrôleurs qui gèrent le sans fil;
  • La série Lowpower STM32Lxx à faible consommation.

  • A noter, que le numéro derrière la lettre indique le processeur ARM. Par exemple, le STM32F4 est composé d'un Cortex-M4. Mais le mieux est de vérifier sur le site STMicroelectronics pour en savoir plus. Le datasheet du processeur est disponible ici.


    La carte Nucleo-64 que je vais utiliser est basé sur STM32F401, soit un cortex M4 cadencé à 84Mhz, 512K de mémoire flash et 96K de RAM. On trouve également un contrôleur de vecteurs d’interruption NVIC, une gestion de l’alimentation, des horloges internes et externes, des watchdogs (chiens de garde), un système de contrôle de la bonne transmission des données (CRC), des entrées-sorties à usage général, des convertisseurs CAN et CAN, des compteurs, des interfaces pour périphériques USB, SPI, I2C et USART.


    Pour les entrées/sorties:

  • alimentations VDD et les masses VSS ; (obligatoire)
  • les gpio PAx, PBx, PCx, PDx voir le tableau du datasheet
  • reset du circuit NRST ; (obligatoire)
  • BOOT0 qui indique la zone mémoire où se trouve le programme. (obligatoire)

  • 3) La carte Nucleo 64

    Cette carte est dédiée à l'apprentissage des STM32, c'est une carte de développement qui est adaptée au prototypage et permet à tout à chacun de tester ce microcontrôleur. Le datasheet de cette carte est disponible ici. Je vais tenter de vous en faire un résumé.


    Les pinout donnent accès aux entrées/sorties. La carte dispose également de 3 led, 2 boutons, un port usb, un quartz, ... Le Nucleo 64 intègre également une carte interface STLink pour interfacer le stm32 de différentes façons.


    Le ST-LINK/V2-1 permet la programmation des STM32.
    Pour l'alimentation, il y a plusieurs solutions : par l'USB, par le VIN (7V-12V), E5V (5V) ou +3.3V power supply pins sur CN6 ou CN7. Dans le cas VIN, E5V ou +3.3V sont utilisés pour alimenter la carte par une alimentation externe. Le cavalier JP5 permet de choisir externe ou USB, voir le datasheet .

    La LED LD1 à trois couleurs (vert, orange, rouge) tel que :
  • clignotement lent de couleur rouge indique la mise sous tension du STLINK ;
  • clignotement rapide rouge pour signaler que l’énumération de l’USB s’est bien passée et que la communication entre l’ordinateur et le STLINK est nominale ;
  • rouge continu indique que l’initialisation entre l’ordinateur et le STLINK est terminée ;
  • vert continu signale une communication terminée ;
  • orange continu indique une erreur de communication.


  • La LED LD2 est connectée au signal D13 (GPIO PA5) (dédiée aux développeurs). La LED LD3 rouge indique la carte est alimentée en 5V.

    Concernant les boutons, B1 est connecté au GPIO PC13, il est au profit des développeurs. B2 est connecté au signal NRST pour le reset du STM32.

    Concernant le brochage de la carte Nucleo :


    Conclusion

    Voici une petite présentation du STM32 qui est quasiment un SOC (System on Chip) plus qu'un microcontrôleur classique. STMicroelectronics propose également une carte de développement, la Nucleo-64, qui semble très accessible pour le commun des mortels que je suis.

    Je vous présenterai la prochaine fois l'environnement de développement et on essaiera de réaliser un petit exemple pour commencer dans la pratique.








    Pseudonyme (obligatoire) :
    Adresse mail (obligatoire) :
    Site web :




    © 2020 www.doritique.fr par Robert DORIGNY