Passer d’un matériel basé sur Arduino à la création de vos propres circuits imprimés avec des microcontrôleurs parait dans un premier temps un processus incroyablement intimidant.
Cependant, l’apprentissage de ces compétences ouvre un large éventail de possibilités de projets, tout en vous permettant d’acquérir des compétences pratiques en électronique.
Dans cet article, nous allons voir tout ce qui est nécessaire pour commencer à créer vos propres conceptions de matériel personnalisé basé sur des microcontrôleurs.
Vous verrez que ce n’est pas sorcier, car les fabricants de microcontrôleurs ont essayé au fil des années de rendre la courbe d’apprentissage plus facile et leurs appareils plus accessibles, aussi bien du point de vue électrique, mais aussi – ce qui est tout aussi important – du point de vue de la programmation.
La prochaine fois, nous verrons comment agencer le microcontrôleur et ses circuits sur un circuit imprimé à l’aide d’Altium Designer.
Comme c’est le cas pour presque tous les types de circuits intégrés, il existe un très grand nombre de microcontrôleurs.
Il y a une grande variété de fabricants (par exemple, Texas Instruments, STMicroelectronics, Espressif – pour n’en citer que quelques-uns), de packages (par exemple, BGA, QFN, LQFP), de tailles de mémoires Flash et RAM, de vitesses de base et bien d’autres paramètres à prendre en compte.
Pour être tout à fait honnête, à moins que vos besoins ne soient très spécifiques, les choix proposés par les différents fabricants ne varient pas trop en termes de capacités d’interface et de performances. Un choix relativement sûr est d’opter pour une grande marque.
Dans la majorité de mes projets, je finis par utiliser la gamme de microcontrôleurs STM32 de STMicroelectronics (avertissement : je n’ai aucun lien ou contrat avec STMicroelectronics, j’aime simplement leurs produits).
Les raisons de ce choix : leur chaîne d’outils très conviviale (STM32CubeIDE), qui vous permet de planifier le brochage, est livrée avec une couche d’abstraction matérielle (HAL) qui permet de développer facilement des micrologiciels, et leur large portefeuille de microcontrôleurs aux capacités variées. De plus, leur débogueur (STLink) est peu coûteux et facile à utiliser.
Je vous suggère vivement de parcourir les sites Web des distributeurs et des fabricants, d’identifier une famille de microcontrôleurs adaptée à vos besoins et de vous en tenir à ces pièces. Vous n’aurez ainsi besoin que d’un seul type de débogueur, les conceptions matérielles seront très similaires d’un projet à l’autre et votre processus de développement de micrologiciels deviendra de plus en plus familier, plutôt que de devoir passer d’une chaîne d’outils à l’autre.
Un avantage supplémentaire de passer des conceptions basées sur Arduino à un autre type de matériel est de pouvoir utiliser des débogueurs.
Les débogueurs sont des interfaces de programmation spécialisées qui vous permettent de télécharger du code, ainsi que d’effectuer un débogage de programme en temps réel. Vous pouvez par exemple définir des points d’arrêt, surveiller des variables, etc., le tout sans avoir à imprimer sur une console série.
Il existe des débogueurs à usage général qui sont compatibles avec une variété de produits de différents fabricants. Cependant, chaque fabricant propose généralement le débogueur spécifique à ses microcontrôleurs. Pour les dispositifs STM32, par exemple, il s’agit du débogueur ST-Link.
Le débogueur est généralement connecté au microcontrôleur par le connecteur du circuit imprimé qui expose les broches de débogage et de programmation dédiées. Cette interface est soit SWD, soit JTAG ; quiconque souhaitant sérieusement développer des micrologiciels doit utiliser l’une ou l’autre de ces interfaces.
Une fois que vous aurez choisi une famille de microcontrôleurs adaptée avec un débogueur compatible, je suis sûr que vous serez impatient de passer à la création du matériel destiné à votre projet personnalisé.
La création du schéma et des connexions typiques d’un microcontrôleur est généralement un processus simple et standardisé.
Tout d’abord, nous devons alimenter le microcontrôleur. En général, un microcontrôleur n’a besoin que d’un seul rail d’alimentation, et dans la plupart des cas, il s’agit d’une tension de +3,3 V.
Jetez un œil à l’image ci-dessus qui montre la section alimentation d’un puissant microcontrôleur STM32H7. Les broches d’entrée de l’alimentation du microcontrôleur sont appelées VDD (ainsi que VBAT), qui indique le rail de tension numérique. Chaque broche VDD nécessite un condensateur de découplage 100nF placé à proximité des broches VDD et VSS (ou GND) concernées.
En outre, le microcontrôleur de votre choix peut être équipé de périphériques analogiques, tels qu’un convertisseur analogique-numérique qui nécessite lui aussi une alimentation.
Pour cette entrée d’alimentation (VDDA et VREF+), nous devons effectuer un certain filtrage sous la forme d’un filtre PI, car la section analogique sera plus sensible au bruit que la partie numérique du microcontrôleur. Ceci est illustré sur l’image ci-dessus avec C216, FB200 (une perle de ferrite) et C216.
Il se peut que votre microcontrôleur ait des régulateurs internes qui doivent être contournés en externe au moyen d’autres condensateurs de découplage. Pour ce circuit intégré STM32H7 particulier, ces broches sont nommées VCAP. La valeur de 2,2 uF par broche a été tirée de la fiche technique correspondante.
Il existe deux principales méthodes pour télécharger du code sur le microcontrôleur. La première est de passer par une sonde de débogage et SWD ou JTAG, et la seconde par un chargeur d’amorçage.
Dans le cas des microcontrôleurs STM32, le chargeur d’amorçage permet à l’utilisateur de charger du code via UART, I2C, USB et des interfaces similaires (selon l’appareil !) sans avoir besoin de débogueur.
Pour activer le chargeur d’amorçage, nous devons tirer la broche BOOT0 vers le haut avant d’allumer le microcontrôleur.
Ensuite, pour exécuter le programme, nous devons abaisser la broche BOOT0 avant de remettre l’appareil sous tension. C’est donc une bonne idée de rendre l’état de BOOT0 modifiable via un commutateur, par exemple.
Dans le microcontrôleur, il sera uniquement programmé via un débogueur. Ensuite, vous pouvez abaisser BOOT0 (relié à la masse) de manière permanente.
Pour l’interface de débogage, j’ai choisi d’utiliser SWD pour cette conception, c’est-à-dire une interface à deux fils (données : SWDIO et horloge : SWCLK). En outre, j’expose le signal SWO (piste), ce qui me permet de tracer des variables en temps réel, et la ligne NRST (réinitialisation, logique inversée) qui, lorsqu’elle est abaissée, effectue une réinitialisation matérielle du microcontrôleur.
Les signaux sont connectés à un connecteur de débogage avec une protection contre les décharges électrostatiques facultative, mais fortement recommandée sous la forme de diodes TVS.
Bien que la plupart des microcontrôleurs contiennent un oscillateur interne, ce qui est suffisant pour un grand nombre de conceptions, il est généralement intéressant d’utiliser un cristal externe (ou oscillateur) avec le microcontrôleur.
Pour les dispositifs STM32 en particulier, il existe deux types d’oscillateurs : externe à haute vitesse (HSE, à des fins de temporisation générales) et externe à faible vitesse (LSE, pour l’horloge en temps réel). La plupart de mes projets requièrent simplement l’oscillateur HSE.
L’image ci-dessus montre la méthode éprouvée consistant à connecter un cristal externe au microcontrôleur. La fréquence maximale et la fréquence minimale autorisées pour le cristal sont indiquées dans la fiche technique du microcontrôleur.
Vous devrez ajouter des condensateurs de charge (C200 et C201, dans cet exemple) qui dépendent de la capacité de charge indiquée dans la fiche technique du cristal. Une fois que vous avez la capacité de charge du cristal, soustrayez 3 à 5 pf de capacité parasite, puis multipliez finalement ce nombre par deux pour obtenir la valeur de capacité requise.
Le rôle de la résistance d’alimentation (R214, dans ce cas) est d’éviter de surcharger le cristal, ce qui pourrait entraîner la création d’harmoniques indésirables. Une valeur dans l’ordre d’une dizaine d’ohms est généralement suffisante.
Une fois ces connexions en place et, bien entendu, une fois que vous avez une alimentation adaptée au rail VDD, le microcontrôleur dispose de tout ce dont il a besoin pour démarrer et être programmé. Cependant, dans cet état, il n’est pas très utile, car nous ne l’avons connecté à aucun périphérique.
Pour les appareils STM32, vous pouvez utiliser la fiche technique pour voir quelles broches peuvent exécuter la fonction requise (I2C, UART, etc.), ou utiliser la chaîne d’outils STM32CubeIDE, très pratique et gratuite, de STMicroelectronics. Cela vous permet de voir rapidement quels périphériques sont disponibles et de configurer un brochage pour votre matériel.
Étant donné que la planification du brochage est très spécifique au projet, nous n’en couvrirons pas les détails dans cet article. Si vous souhaitez en savoir plus, assurez-vous de regarder cette vidéo, qui détaille toutes les étapes requises.
Dans le prochain article, nous créerons un simple brochage, puis passerons en revue les meilleures pratiques en matière de conception de circuits imprimés avec des microcontrôleurs.
Nous verrons par exemple le meilleur placement des condensateurs de découplage, de l’oscillateur à cristal et du connecteur de débogage.