mardi 8 janvier 2019

Programmer la Blue Pill avec un adaptateur USB-série

IMPORTANT:

Certains é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.


Il y a quelques mois, je vous avais expliqué comment j'avais procédé pour programmer une carte STM32F103 "Blue Pill" avec l'IDE Arduino (projet STM32Duino). J'avais alors utilisé un dongle STLink pour lier la carte à l'ordinateur.

Mais il est tout à fait possible de programmer la carte sans utiliser de dongle STLink. Une autre option (et c'est celle que je vous propose d'explorer aujourd'hui) consiste à utiliser un adaptateur USB-série.

Adaptateur USB-Série

Si vous n'avez pas déjà un adaptateur USB-Série, vous devriez pouvoir en trouver un facilement pour moins de 2 euros sur les sites de vente en ligne (recherchez "USB TTL serial adapter 3.3V").

Il est préférable d'utiliser un modèle qui permet le fonctionnement à un niveau logique de 3,3 V (le modèle que j'utilise comporte un jumper qui peut être placé en position 3,3 V ou en position 5 V). Mais puisque les broche PA9 et PA10 qui sont utilisées pour la communication tolèrent 5 V, je suppose qu'un adaptateur USB-série fonctionnant à 5 V ne causerait pas de dommages à la Blue Pill.

Connexions

4 fils sont utilisés pour brancher la carte Blue Pill à l'adaptateur USB-Série:
  • GND de l'adaptateur USB/Série --- GND de la Blue Pill
  • RXD de l'adaptateur USB/Série --- PA9 de la Blue Pill
  • TXD de l'adaptateur USB/Série --- PA10 de la Blue Pill
  • 3V3 de l'adaptateur USB/Série --- 3.3V de la Blue Pill




Réglages de l'IDE Arduino

Je vous réfère à ce précédent article qui vous indique comment ajouter à l'IDE Arduino les fichiers qui sont nécessaires à la programmation de la Blue Pill.

Une fois ces fichiers installés, vous choisissez la carte "Generic STM32F103C series dans le menu "Type de carte".



Pour "Upload method", vous choisissez "Serial".



Téléversement du sketch dans la carte Blue Pill

Téléversons maintenant un sketch dans la Blue Pill. Il peut s'agir du sketch d'exemple "Blink", à la condition de remplacer le numéro de broche "13" par "PC13" puisque c'est à cette broche qu'est branchée la LED intégrée à la carte (si votre version de Blink utilise la constante LED_BUILTIN, vous n'avez aucune modification à effectuer).

La carte Blue Pill comporte deux jumpers. Le jumper "Boot0" (celui qui est le plus éloigné du bouton reset) doit être placé en position "1" pour que le téléversement du sketch réussisse.



Dans l'IDE Arduino, vous sélectionnez le port associé à votre adaptateur USB-Série.



Finalement, avant de cliquer sur le bouton "Téléverser", vous devez appuyez sur le bouton "reset" de la carte Blue Pill (mon doigt est trop gros pour atteindre le bouton: je suis obligé d'utiliser un crayon).



Si vous omettez d'appuyer sur le bouton reset, l'IDE affiche le message d'erreur "Failed to init the device."


Si le téléversement est un succès, vous devriez voir s'afficher une série de messages qui commencent par "Wrote address", puis finalement "Starting execution at address 0x08000000... done."



Le sketch va démarrer automatiquement après le téléversement. Par contre, pour qu'il s'exécute automatiquement lors de la mise sous tension de la carte (ou de l'appui sur le bouton reset), il faut replacer le jumper Boot0 en position 0.

Avantages/inconvénients

Comparons finalement les deux méthodes de téléversement: STLink et l'adaptateur USB-série.

Le principal avantage d'utiliser un dongle STLink, c'est que vous n'avez pas besoin d'appuyer sur le bouton reset avant chaque téléversement du programme, et vous n'avez pas à vous préoccuper de la position du jumper Boot0. Toutefois, STLink ne gère pas la communication série, ce qui peut être irritant si vous avez l'habitude d'utiliser le moniteur série pour déboguer vos programmes (c'est mon cas). Il faut alors utiliser un autre port USB de l'ordinateur pour la communication série (en utilisant, par exemple, le port USB de la Blue Pill).

L'avantage de programmer avec l'adaptateur USB-série est évident si vous possédez déjà un adaptateur USB-Série, mais n'avez  pas de dongle ST Link. De plus, l'adaptateur permet à la fois le transfert du programme et l'affichage d'informations dans le moniteur série. Par contre, la nécessité d'appuyer sur le bouton reset avant chaque transfert et l'obligation de placer le jumper Boot0 dans la position appropriée peut être agaçante, surtout au début, quand on n'en a pas l'habitude.

Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire