Carte STM32 pas cher + Arduino IDE UPD 17/08/2017

image

Vous souhaitez mettre à niveau vos projets Arduino? Faites-les fonctionner plus rapidement, effectuez des mesures et des ajustements plus précis et ajoutez des bugs (ils sont inévitables avec les nouveaux appareils). Alors cet article est fait pour vous.

Le thème Arduino capture de plus en plus les esprits de l'humanité, mais tôt ou tard, nous sommes confrontés au fait que nous manquons quelque chose, par exemple, budget / tailles / broches de port / capacité de bit / performance ... Comme l'a dit un sage - «Celui qui veut, il cherche des opportunités qui ne veut pas cherche des raisons. »

Les bonnes personnes comprennent cela et commencent lentement à associer STM32 au thème Arduino , car les microcontrôleurs AVR huit bits, sur lesquels de nombreuses cartes Arduino sont basées, ne peuvent pas toujours faire face aux tâches.

Un résumé de cet article au format vidéo:



D'accord, moins de paroles et plus proche du sujet. Dans cet article, je considérerai une carte de débogage bon marché, basée sur le microcontrôleur STM32F103C8T6 :

image

Pour commencer, comparons les principaux paramètres de la carte STM32 et son prix analogique - Arduino Nano V3.0:

  • Fréquence de fonctionnement 72 MHz, contre 16 pour Arduino;
  • La quantité de mémoire Flash est de 64 Ko, contre 32;
  • RAM, c'est RAM (où les variables sont stockées), le STM32 a jusqu'à 20 kilo-octets, l'arduinka n'en a que 2;
  • ADC 12 bits rapide, tandis que les cartes Arduino qui utilisent des microcontrôleurs AVR (c'est généralement la majorité) utilisent 10 bits. Cela signifie que dans le cas de STM32, la fonction est analogRead (*); renverra 0..4095 contre 0..1023, ce qui dans le premier cas conduit à des mesures plus précises;
  • 16- , 8- Arduino , , analogWrite(*);pwmWrite(*); 0..65535, 0..255. , , ;
  • USB, Arduino 2 ;
  • — 2 3.6( 2 AA ), 2.7...5 ;
  • — 1.9 1.8().

De toute évidence, la carte de débogage basée sur STM32 surpasse l'Arduino Nano à tous égards, sauf pour le prix, mais d'accord 10 cents est un bon prix pour de grandes performances, mais sur les périphériques avec lesquels le STM32 est bourré, je ne sais absolument pas ce que vaut le DMA ou des horloges en temps réel intégrées dans le microcontrôleur.

image

Tout cela rend cette carte extrêmement attrayante en tout sauf une chose - pour un débutant, comme moi, le thème STM32 semble trop long, il existe des sites entiers dédiés à la programmation de ces microcontrôleurs. Mais si vous vous faites des amis STM32 avec l'IDE Arduino, le seuil d'entrée tombe à un niveau extrêmement bas. Bien que, comme on dit, "Dans chaque baril de miel, il y a une mouche dans la pommade", mais plus sur cela ci-dessous.

Commençons à préparer la carte pour travailler avec l'IDE Arduino. La première chose à faire est de télécharger un chargeur de démarrage spécial sur le microcontrôleur, qui vous permettra de flasher la carte via USB matériel, et directement depuis l'environnement de développement. Pour ce faire, déplacez le cavalier supérieur (alias «BOOT0»), en position «1»:

image

À quoi servent les cavaliers BOOT0 et BOOT1?
, STM32 , (system memory), , USB to UART , ST-Link V2.

image


Ensuite, nous avons besoin d'un adaptateur USB vers UART. Il convient de rappeler que STM32 est une logique 3,3 V, la compatibilité avec 5 V n'est pas garantie, il est donc recommandé d'utiliser USB vers UART, qui a la possibilité de sélectionner des modes de fonctionnement avec une logique 3,3 / 5 V. J'ai utilisé un adaptateur bon marché basé sur CH340G:

image
* comme vous pouvez le voir, le fabricant ne s'est pas retourné avec un flux wash, bien sûr, cela n'affecte pas le travail.

J'ai connecté la carte à l'adaptateur USB vers UART comme suit:

G <-> GND;
5V <-> 5V;
PA10 <-> TXD;
PA9 <-> RXD.

image
* PA10 / PA9 sur la carte est simplement signé comme A10 / A9 - ces ports sont le premier matériel USART, il y en a 3 sur la carte, il y a aussi 2 I2C matériels et 2 SPI.

Par souci de commodité, j'ai alimenté la carte à partir de 5 V, pour une alimentation à partir de 3,3 V, la carte a une broche «3,3». Attention, 5 V peut facilement désactiver le microcontrôleur , alors faites bien attention à la connexion.

Téléchargez, installez et exécutez Flash Loader Demonstrator (disponible dans les archives de l'article):

image

Sélectionnez le numéro de port COM de notre adaptateur, dans mon cas c'est COM43, puis cliquez sur "Suivant":

image

Puisque j'ai un nouveau microcontrôleur, la volée ne s'est toujours pas assisepersonne n'y a rien écrit (bien sûr, sauf le fabricant lui-même), puis par défaut il y a une protection en lecture, le programme nous avertit que si vous cliquez sur le bouton "Supprimer la protection", la mémoire Flash sera effacée, c'est-à-dire s'il y avait une sorte de firmware - elle prendra sa retraite. Dans mon cas, il n'y a rien d'utile, alors j'appuie hardiment. Ensuite, je vois ce qui suit:

image

Cliquez sur "OK":

image

Puisque ma carte de débogage est basée sur le microcontrôleur STM32F103 C8 - il y a 64 Ko de mémoire Flash, il y a aussi un microcontrôleur CB STM32F103 , où il y a deux fois plus de Flash.

Cliquez ensuite sur "Suivant":

image

Encore une fois, "Suivant", et nous voyons la fenêtre suivante:

image

Sélectionnez "Télécharger sur l'appareil" et cliquez sur "...":

image

Changez le type de fichier en * .bin et ouvrez le fichier «generic_boot20_pc13.bin» (également présent dans l'archive) qui peut être extrait du projet STM32duino-bootloader .

Ensuite, nous cliquons sur le bouton "Suivant", après le firmware du chargeur de démarrage, nous verrons un feu vert:

image

Ensuite, nous devons télécharger, pour l'environnement de développement Arduino IDE, un noyau STM32 spécial (il est également dans les archives de l'article). Il y a une nuance ici, au moment de la rédaction, le noyau ne fonctionne pas sur les versions de l'environnement de développement sur 1.6.5 , j'ai 1.6.5-r5 que j'ai téléchargé ici .
Le noyau a été testé pour fonctionner sur la version 1.6.9 d'Arduino IDE .

Ensuite, décompressez le contenu dans Mes documents \ Arduino \ hardware:

image

Dans mon cas, le chemin complet ressemble à ceci - "C: \ Users \ RSK \ Documents \ Arduino \ hardware"

Bien sûr, le système ne peut pas déterminer le système de l'appareil, vous devez donc toujours installer les pilotes sur la carte. Nous allons dans le dossier "Mes Documents \ Arduino \ hardware \ Arduino_STM32 \ drivers \ win" (ou "drivers \ win", dans le cas d'une archive de l'article), et exécutons le fichier "install_drivers.bat" en tant qu'administrateur:

image

Après cela, le cavalier supérieur (qui "BOOT0"), mettez-la en position "0" et connectez la carte à l'ordinateur via un câble microUSB:

image

Elle doit être définie dans le gestionnaire de périphériques comme "Maple DFU" ou "Maple Serial (COM *)":

image

On ne sait pas pourquoi après la première connexion la carte est définie différemment sur différents ordinateurs, mais pas le point, nous procédons à la configuration de l'IDE Arduino.

Nous lançons l'environnement de développement, puis Outils ->

image

Carte -> Gestionnaire de cartes: Ici, vous devez installer le noyau de la carte Arduino Due. Sélectionnez la dernière version et cliquez sur «Installer»:

image

puis Outils -> Carte -> «Générique STM32F103C», puis Variante: «STM32F103C8 (20k RAM. 64k Flash)», Méthode de téléchargement: «STM32duino bootloader», Port - numéro de port COM de la carte , en général, tout est comme dans la capture d'écran:

image

Tout, la carte est prête pour le firmware et la programmation dans l'environnement de développement Arduino IDE. Faisons clignoter quelques croquis des exemples qui sont «cousus» dans le noyau, allez dans Fichier -> Dossier avec des croquis -> matériel -> Arduino_STM32 -> STM32F1 -> bibliothèques -> A_STM32_Examples -> Numérique -> Blink:

image

Classique «Bonjour tout le monde» dans le monde des microcontrôleurs. Nous changeons PB1 en PC13, car la LED sur la carteconnecté à ce port:

image
* Au fait, il s'allume à un niveau bas sur la jambe PC13.

Nous appuyons sur le bouton «Télécharger», après le firmware, l'environnement de développement affichera quelque chose comme:

image

«Terminé!
Réinitialisation de l'USB pour revenir au mode d'exécution
Erreur de réinitialisation après le téléchargement: usb_reset: impossible de réinitialiser le périphérique, erreur de victoire: impossible de trouver le fichier spécifié. ".

Mais le firmware s'est ensuite chargé avec succès, bien que ce ne soit pas toujours le cas, parfois l'IDE Arduino donne d'autres messages.

Impossible de trouver le périphérique DFU
, :

image

«dfu-util — © 2007-2008 by OpenMoko Inc.
Couldn't find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY»

, .


Recherche d'unité DFU [1EAF: 0003] ...
:

image

«Searching for DFU device [1EAF:0003]…
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...»

, . Arduino Pro Mini.


Et maintenant, à propos de la "mouche dans la pommade", à propos de laquelle j'ai écrit au début de l'article, pour une raison quelconque, il n'est pas toujours possible de flasher la carte dans l'environnement de développement, encore plus, elle n'est pas toujours déterminée par l'ordinateur. J'ai décidé ceci pour moi comme suit, avant de télécharger le firmware (avant de cliquer sur le bouton "Télécharger"), je clique sur "Reset" sur la carte, et après le firmware, je redémarre à nouveau la carte. Dans ce cas, le pourcentage de probabilité que la planche soit cousue est de 99%. On ne sait pas pourquoi cela fonctionne de cette façon, mais c'est un fait. Je pense que tôt ou tard ce montant sera corrigé, et tout redémarrera automatiquement au besoin. Et pour résoudre ce problème plus rapidement, il est nécessaire que la communauté de cette merveilleuse carte de débogage STM32 se développe, alors partagez cet article avec des amis, en particulier des amis programmeurs.

À propos du brochage:

Cliquable
, ( ):

image
() www.stm32duino.com/viewtopic.php?p=11137

, :

digitalWrite(PB0, LOW);
analogWrite(PA8, 65535);pwmWrite(PA8, 65535);
analogRead(PA0);
LiquidCrystal lcd(PB0, PA7, PA6, PA5, PA4, PA3);


docs.leaflabs.com/docs.leaflabs.com/index.html Arduino IDE, .

, :
Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c\board.cpp

, :
  • , analogWrite();pwmWrite(); — PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, , ;
  • , analogRead(); — PB0, PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.


. , 1.9 .

, PA12/PA11 D+/D- USB, , , 2- , .


Le circuit imprimé:



Enfin, enfin:

image

Salut geektimes.ru
//https://github.com/mk90/LiquidCrystalRus

//STM32  !

#include <LiquidCrystalRus.h>

LiquidCrystalRus lcd(PB9, PB8, PB7, PB6, PB5, PB4);

void setup() {
  lcd.begin(16, 2);
  lcd.print("");
  lcd.setCursor(0, 1);
  lcd.print("geektimes.ru");
}

void loop() {
  lcd.setCursor(14, 1);
  lcd.print(millis() / 1000);
}



Liens:
Archive vers l'article ;
Portail d'un ami de Roger Clark dédié au portage de STM32 , questions / suggestions / remerciements, tout y est;
https://github.com/rogerclarkmelbourne/Arduino_STM32 ;
http://docs.leaflabs.com/docs.leaflabs.com/index.html - c'est ce projet que Roger a pris comme base, donc il y a beaucoup de choses utiles, bien qu'en anglais;
La version 1.6.5-r5 de l'IDE Arduino peut être téléchargée ici ;
Mon article, dans une certaine mesure, croise l' ami " STM32 vs Arduino " @RaJa ;
Fiche technique sur STM32F103C8T6 ;
Toutes mes publications sur les geektimes .

UPD 15/07/2016
Le noyau a été testé pour fonctionner sur la version 1.6.9 d'Arduino IDE:
geektimes.ru/post/277928/#comment_9532576

PS
Quoi d'autre oublié
:

image

, .

, microUSB :

image

, , .

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


All Articles