vendredi 1 décembre 2017

Programmer un STM32F103 (blue pill) avec l'IDE Arduino



IMPORTANT:


Plusieurs éléments de cet article sont devenus désuets. Vous devriez plutôt vous référer à cet article plus récent: Programmation d'une carte STM32 avec l'IDE Arduino.

On trouve facilement les "blue pills" pour moins de deux euros, sous la désignation "STM32F103C8T6 Minimum System Development Board" (à ce prix, vous devrez souder vous-mêmes les deux rangées de connecteurs).  Ces petites cartes, munies d'un  STM32, peuvent être programmées au moyen de l'IDE Arduino.  Voici une petite marche à suivre sous Windows 7.

Tout d'abord, si votre objectif est de programmer la carte au moyen de l'IDE Arduino, assurez-vous d'acheter un module comportant un STM32F103.  On peut trouver pour encore moins cher des modules comportant un STM32F030, mais ces derniers ne sont pas supportés par le projet STM32Duino.



Programmateur ST-Link V2

Malgré la présence d'un connecteur micro-USB, on ne peut pas programmer la carte en la branchant directement dans le port USB d'un ordinateur, à moins d'y avoir préalablement gravé un bootloader.  Je me suis donc procuré un programmateur STLink V2, qui prend la forme d'un petit dongle USB (il m'a coûté environ 2 euros).



Le ST-Link V2 se branche aux 4 connecteurs situés à l'extrémité de la carte.


Si vous préférez utiliser un adaptateur USB-série plutôt que STLink V2, vous trouverez des informations utiles dans cet autre article.

Préparation de l'IDE Arduino

1) Vous vous assurez d'abord d'avoir une version récente de l'IDE Arduino.  Pour ma part, j'ai fait mes tests avec la version 1.8.1.

2) Vous ouvrez le gestionnaire de carte en passant par le menu Outils - Type de carte - Gestionnaire de carte.


3) Une fois dans le gestionnaire de carte, vous installez "Arduino SAM Boards (32-bits ARM Cortex-M3) by Arduino" (ça va prendre quelques minutes).  Ces fichiers sont prévus pour l'Arduino Due qui, tout comme le STM32F103, est de type ARM Cortex-M3.



4) Vous téléchargez ce fichier, et vous le décompressez pour obtenir un dossier intitulé "Arduino_STM32".  Vous vous rendez ensuite dans votre dossier "Arduino" (celui qui contient le dossier "librairies") et, à moins qu'il n'existe déjà, vous créez un dossier "hardware" dans lequel vous placez le dossier "Arduino_STM32".


5) Vous fermez l'IDE Arduino, et vous l'ouvrez à nouveau.

6) Tadam!  Dans "Type de carte", vous disposez maintenant d'une liste de cartes de type STM32.  Le type qui convient à notre blue pill est "Generic STM32F103C series".



7) Les réglages par défaut sont tous appropriés, sauf "Upload method", que j'ai réglé à "STLink".


8)  Lorsque vous insérez le dongle STLink dans un port USB de l'ordinateur, un pilote de périphérique est installé (de plus, la LED située sur la carte se met à clignoter).


On peut ensuite ouvrir l'exemple "blink" et changer le numéro pour PC13 (qui est la broche reliée à la LED intégrée sur la carte).  Puisque la LED sur la carte clignote déjà, c'est une bonne idée de modifier la fréquence de clignotement, afin de voir une différence...

(Le téléchargement du sketch devrait fonctionner, malgré le fait que l'article "Port" du menu "Outils" demeure grisé.)

Installation des pilotes

Sous Windows, si vous désirez utiliser le port USB de la Blue Pill (pour utiliser le moniteur série, par exemple, ou si vous avez l'intention d'installer le bootloader afin de programmer la Blue Pill par son port USB), vous devrez également installer des pilotes. Pour ce faire, vous ouvrez le dossier "Arduino_STM32" que nous avons installé dans le dossier "hardware" à l'étape 4.  En suivant le chemin d'accès "Arduino_STM32/drivers/win", vous démarrez le script d'installation "install_drivers.bat".



Yves Pelletier   (TwitterFacebook)


3 commentaires:

  1. Bonjour,
    j'ai programmer le bootlaodr avec le stm32 utilisty. Tout c'est bien passé. Si je cmprend bie,, maintenant je peux deconnecter mon stlink et programmer directment en usb comme pour un arduino classique ?
    Vrai ou faux.
    Merci pour votre réponse

    RépondreSupprimer
  2. Bonjour,
    vrai, mais il faut évidemment spécifier la méthode à l'IDE
    par ailleurs, la blue pill souffre d'un petit défaut : la résistance servant à forcer l'énumération en usb a une valeur trop élevée, ce qui fait que pour certaines configs, cela ne marche pas sauf à changer la résistance
    voir le site stm32duino pour +

    RépondreSupprimer
  3. généralement, il y a peu d'intérêt à utilisé le bootloader quand on dispose du programmateur/débogueur
    c'est même déconseillé pour la blue pill, dont le connecteur est fragile

    RépondreSupprimer