Dans cet article, nous verrons comment utiliser les microcontrôleurs de la gamme STM32. Ces µC sont parmi les plus fiables, versatiles et faciles d’accès, c’est pourquoi ils sont utilisés massivement dans toutes les industries. De plus, ils sont de conception franco – italienne. 

Implémentation hardware

Nous allons partir de la base : l’instanciation du composant. Cette procédure peut varier selon les logiciels de CAO (Altium, Eagle, Kikad, …). Il faut normalement se farcir des centaines de pages de datasheet mais ST a rendu le choix et le paramétrage de chaque unité très facile avec un logiciel bien particulier : STM32CubeMX. Il suffit de choisir une unité adaptée au système, par exemple un STM32G4 pour du traitement de signal, un F103 pour le minimalisme, un F7 pour piloter une carte mère ou encore un H7 pour disposer de plusieurs cœurs et gérer d’énormes flux de données.

La gamme STM32 est basée sur l’architecture ARM Cortex-M. Le H7 contient par exemple un Cortex-M7 et un Cortex-M4 en tandem. La technologie ARM contient de nombreux brevets Américains, il faudra encore attendre un peu avant de voir du RISC-V open source dans des µC.

Le paramétrage des I/O numériques et analogiques est d’une simplicité enfantine, c’est purement graphique :

Paramétrage du SPI4 sur STM32G4

On obtient ensuite une vue graphique du composant, il ne reste plus qu’à câbler la netlist dans le logiciel de CAO :

ZetaDrums - Arkange Design

Certaines broches sont utilisées pour l’alimentation, la masse ou encore certains signaux particuliers (VREF, VBAT, VDDA, RESET, BOOT0, etc) mais une grande majorité des autres broches supportent la connection à plusieurs systèmes internes.

 Bien entendu une broche connectée à un système interne ne peut pas être utilisée pour autre chose.

PF2 pin - STM32G4

STM32CubeMX permet également de gérer la topologie d’horloge, paramétrage des prescalers et des PLL intégrées :

Horloges - STM32G4

 Il y’a en général 3 horloges et quelques PLL :

  • LSE : supporte un quartz/résonateur 32kHz pour la gestion de l’horloge temps réel (RTC). Utile pour les systèmes à grand temps d’action qui doivent passer en veille ou être réveillés à une date bien précise. 
  • HSI : résonateur interne à la puce, présent sur une majorité de chips de la gamme. Ne doit en général pas être utilisé sauf cas particulier, en particulier sur le G4 qui est un processeur de signal.
  • HSE : interface utilisée pour le quartz haute fréquence. La Master Clock découle de ce cristal.
  • PLL : boucle à verrouillage de phase utilisée en général pour générer la Master Clock. Un paramétrage précis de ce circuit permet d’atteindre des performances maximales. La première PLL est généralement la plus précise et stable en fréquence / jitter.

Les cristaux externes seront en général plus précis que leurs homologues internes à la puce. L’Ethernet ou l’USB nécessitent par exemple une stabilité en fréquence et bruit de phase que seuls des quartz externes peuvent fournir via l’interface HSE.

On câble ensuite la netlist au µC dans le logiciel de CAO, ici dans le cadre d’une application utilisant massivement les ADC :

ZetaDrums - Arkange Design

Je passe sur la gestion électrique du µC : il faut bien sûr utiliser une alimentation à faible bruit pour les ADC, découpler correctement le rail d’alimentation et le cristal, installer un filtrage anti-repliement, câbler les signaux SWD/JTAG, etc. Attention également pour l’USB et l’Ethernet : ce sont des paires différentielles, elles doivent être traitées comme tel lors du routage, certains chips comme le F4 nécessitent une adaptation.

Voici le grand minimum pour faire fonctionner un µC :

  • Une alimentation découplée (1,8v à 3,3v selon les chips)
  • Un quartz sur l’interface HSE (master clock)
  • Un jumper sur BOOT0 (sélection du bootmode)
  • Une interface JTAG ou SWD (programmation / debug)
  • Un système de RESET (compris dans JTAG/SWD)

0 commentaire

Laisser un commentaire