Une façon personnalisée de se faire des amis avec STM32: pas Arduino ou Discovery

À tous ceux qui utilisent ou s'intéressent aux microcontrôleurs de STMicroelectronics , je veux présenter mon petit projet de loisir.


Habré et geektimes ont déjà beaucoup d'articles consacrés aux microcontrôleurs de la série STM32F, par exemple: Carte STM32 bon marché + IDE Arduino , Essayer de se faire des amis avec STM32 et la réponse à cela Comment se faire des amis avec STM32 et bien d'autres. Dans l'ensemble, ils couvrent très bien ce sujet, mais il y a une chose mais ... Dans tous ces articles, des cartes prêtes à l'emploi et un contrôleur spécifique qui sont sur cette carte sont pris en compte. Et qu'en est-il de ceux qui veulent jouer avec différents contrôleurs, et même sur la planche à pain? Par exemple, de nombreuses cartes que je connais avec le contrôleur STM32F4 (le même STM32F4-Discovery) ne peuvent pas être insérées dans la planche à pain. Mais je veux personnellement quelque chose comme ça (attention, toutes les photos sont cliquables):



En même temps, comme je l'ai déjà écrit, je ne veux pas être connecté à un contrôleur spécifique, mais je veux pouvoir le remplacer facilement. Ceux qui sont intéressés par la façon dont j'ai réalisé ces souhaits pas tout à fait ordinaires, je demande un chat.


Introduction (inspirée des commentaires sur l'article, veuillez donc sauter avant de les lire)

L'utilisation ou non de tables d'expérimentation avec connecteurs est un point discutable. Bien sûr, à partir d'un certain nombre de composants, ils deviennent inconfortables. Mais bien que le composant ne soit pas très grand et que le nombre d'expériences au stade initial du prototypage soit encore important, les planches à pain, à mon avis, sont pratiques. Et ici, si vous souhaitez utiliser STM32, une embuscade nous attend - ils ne sont tout simplement pas dans des packages DIP, contrairement à Atmega. Vous pouvez acheter des cartes de démonstration toutes faites, mais là encore, il y a une embuscade - la plupart de ces cartes avec des contrôleurs plus anciens ne peuvent pas être coincées dans la planche à pain à cause des doubles peignes . Autrement dit, en utilisant des cartes de démonstration prêtes à l'emploi, nous sommes obligés de travailler avec les plus jeunes contrôleurs de la série (voir le même Nucleo dans la version DIP ou Blue Pill ). La deuxième façon consiste à fabriquer des adaptateurs spécialisés. Cet article explique cette deuxième voie.


Montrez immédiatement le résultat final. Ce sont de petites écharpes double face pour différents cas, dont l'impression peut être commandée dans l'Empire du Milieu (les Chinois n'ont rien contre l'impression de planches double face avec un design panneau):



Un ensemble (à droite) est simplement des adaptateurs simples pour la planche à pain pour les boîtiers LQFP32 / 48/64, mais le deuxième ensemble (à gauche) sont également des adaptateurs, mais avec un connecteur JTAG, une alimentation, du quartz basse fréquence et haute fréquence et un bouton de réinitialisation. Toutes les autres broches du contrôleur sont sur le peigne. En général, le minimum. Malheureusement, le connecteur JTAG n'est pas standard, donc la carte adaptateur de JTAG-20 à ce même JTAG-10 est également incluse.


Ces cartes sont facilement soudées par un sèche-cheveux à la maison, donc si vous avez plusieurs contrôleurs, plusieurs cartes et composants passifs de taille 0805, vous pouvez obtenir quelque chose comme ça dans un délai raisonnable:



Et cela, me semble-t-il, donne une bonne liberté de créativité. Si quelqu'un semble avoir épuisé le sujet, voici un lien vers le référentiel github .


Mais je veux vous dire étape par étape comment arriver à une telle vie. Image pour attirer l'attention (énoncé graphique du problème):



Il y a une dispersion de contrôleurs (séries L0, F3, F4), alimentation, convertisseur USART-USB, planche à pain. Je veux faire clignoter les LED. Cette étape est rendue très facile. Nous prenons n'importe quel contrôleur, carte adaptateur du premier jeu, nous soudons avec un sèche-cheveux. Ensuite, vous avez besoin de documentation sur la connexion de l'alimentation, du programmateur, du quartz. Ici ST a la commande complète, tout est sur la page avec la documentation du contrôleur sélectionné. Par exemple, pour STM32F303K8, nous n'avons besoin que d'un seul document: AN4206: Prise en main du développement matériel de la série STM32F3 , où il y a des circuits d'alimentation, des oscillateurs et un programmeur, sur la base desquels vous pouvez construire un tel modèle:



Ce contrôleur n'a pas de quartz basse fréquence externe, j'ai donc connecté uniquement des hautes fréquences à 16 MHz. Pour la programmation, un connecteur JTAG-20 standard est utilisé, qui est équipé d'un programmateur standard de ST ST-LINK / V2 .


Si vous utilisez Linux

Il y a déjà des pilotes dans le noyau, mais vous devez ajouter manuellement quelques règles au fichier /etc/udev/rules.d, voir par exemple ici


Étant donné que l'article est principalement consacré à la partie matérielle, je ne mentionnerai que brièvement la partie logicielle. Système d'exploitation: Fedora 25. Environnement de développement: System Workbench pour STM32 est un système entièrement gratuit basé sur Eclipse de la communauté OpenSTM32. La seule fois - pour télécharger, vous devez vous inscrire à http://www.openstm32.org . Il est pratique d'utiliser l'utilitaire graphique STM32CubeMX pour modéliser, documenter et générer des exemples. Par exemple, la configuration du contrôleur sur la photo ci-dessus ressemble à ceci:



Les fichiers avec ces schémas sont également dans le référentiel. Par exemple, pour STM32F303K8 voir ici


System Workbench for STM32 possède un assistant de projet intégré assez avancé qui génère la structure initiale du projet et peut éventuellement inclure dans le projet: pilotes de contrôleur de bas niveau (CMSIS), bibliothèque HAL (Hardware Abstraction Layer), FatFS, FreeRTOS. J'utilise moi-même ma bibliothèque de pilotes orientée objet, qui s'exécute au-dessus de la couche HAL. Peu importe, voir ici .


Voici un exemple de code utilisant cette bibliothèque, qui fait clignoter des LED sur une minuterie (pendant une interruption) et enregistre (via un convertisseur USART-USB à la console de la station de travail) l'état du compteur connecté à l'horloge en temps réel. Tout cela est quelque peu similaire à l'idéologie d'Arduino, mais j'aime juste programmer de telles choses moi-même.


Voici un exemple d'utilisation d'un contrôleur STM32F410RB assez puissant:



De même, le document principal est AN4488: Prise en main du développement matériel du microcontrôleur STM32F4xxxx , où il existe tous les schémas de connexion nécessaires. Le deuxième document important est AN2867: Guide de conception des oscillateurs pour les microcontrôleurs STM8AF / AL / S et STM32 , qui détaille comment connecter un oscillateur haute fréquence.


Naturellement, clôturer constamment de tels schémas prend beaucoup de temps, j'ai donc décidé de fabriquer les prochains foulards universels possibles, qui réalisent ces schémas. La polyvalence est obtenue du fait que les contrôleurs de séries différentes, mais dans le même cas (par exemple, STM32F303RB et STM32F410RB, tous deux dans le cas LQFP64) ont les mêmes conclusions (à l'exception de petites différences dans le circuit d'alimentation). Ces différences conduisent à ceci:



Tous les éléments avec des dénominations signées sont communs à différents contrôleurs, mais des éléments comme P30, P31, P47, où le nombre signifie le numéro de broche, doivent être sélectionnés en fonction du modèle spécifique. En conséquence, la planche à pain ressemblera à ceci:



Voici une si petite amélioration.


Projet sur github
Licence: GNU General Public License, Version 3


Circuit imprimé et circuits imprimés préparés par Eagle Cad. Le très respecté DiHalt a une merveilleuse série d'articles sur ce système . La version gratuite d'Eagle Cad pour un usage domestique peut être téléchargée sur le site officiel .


J'invite tout le monde à rejoindre le projet.

Source: https://habr.com/ru/post/fr406313/


All Articles