Dans cet article j'explique comment installer un boot loader compatible avec l'environnement de développement Arduino ansi que l'installation de Arduino IDE sur Ubuntu.
Modification matérielle
La spécification USB précise qu'il doit y avoir une résistance de 1k5 entre D+ et l'alimentation 5V. Hors les cartes blue pill ne respecte pas ce standard. Sur la schématique que j'ai téléchargé R10 indique une valeur de 4k7 et sur les cartes que j'ai la valeur est de 10K. Plutôt fantaisiste comme valeurs.
La carte blue pill doit-être modifiée soit en remplacant la résistance R10 par une résistance de 1k5 ou en mettant en parallèle avec celle-ci une résistance pour que la valeur équivalente de R10//Rs soit de 1k5. Sur mes cartes R10 est de 10K donc il faut une résistance de 1k8 en parallèle pour obtenir 1k5 entre D+ du connecteur USB et le +5v comme sur la photo suivante où j'ai soudé Rs entre les broches A12 et 5V de la carte. A12 est relié à D+ du connecteur USB.
Programmation du bootloader STM-Arduino
- Clonez sur votre ordinateur le dépôt https://github.com/rogerclarkmelbourne/STM32duino-bootloadergit clone https://github.com/rogerclarkmelbourne/STM32duino-bootloaderDéplacez vous dans le dossier binaries de ce dépôt. Sur mes cartes la LED verte est branchée sur la broche PC13 donc j'utilise le bootloader
generic-boot20_pc13.bin.
Si votre carte est différente utilisez le fichier correspondant à la broche où est branché la LED verte. - Sur la carte blue pill placer le cavalier boot0à la position 1.
- Branchez le programmeur à la carte blue pill et au PC.
- faites la commande: st-info --probePour être certain que le programmeur est fonctionnel et que la carte blue pill est bien détectée.
- Pour programmer le bootloader faite la commande: st-flash --reset write generic-boot20_pc13.bin 0x8000000Vérifier les messages pour vous assurez que tout c'est bien passé.
- Maintenant que le bootloader est installé sur la carte on n'a plus besoin du programmeur ST-LINK v2. La programmation va se faire via le connecteur USB à l'autre bout de la carte. Débranchez et mettez de côté le programmeur. Replacez et cavalier boot0à la position 0.
- Connectez la carte blue pill au PC en utilisant un câble USB. Au moment du branchement la LED verte clignote rapidement puis lentement 5 fois. Si ce n'est pas le cas le bootloader n'est pas installé correctement ou bien vous avez oublier de remettre le cavalier boot0à la position 0.
Installation de Arduino IDE sur Ubuntu Linux
- À partir de cette page téléchargez la version qui convient à votre PC.
- À partir du dossier où vous avez téléchargé le fichier lancez le programme d'installation ./install.sh. Une icône raccourci sera créée sur le bureau. Sur mon PC l'icône de fonctionnait pas il y avait une erreur au lancement du programme. Il a fallut que j'édite le fichier raccourci pour mettre le nom de l'exécutable entre guillemets car il y avait un espace dans le nom du fichier. gedit ~/Bureau/arduino-arduinoide.desktop
Progammation de la blue pill en utilisant Arduino IDE
L'IDE nécessite d'être configuré pour l'utilisation des µC STM32
- Lancez Arduino IDE.
- Allez dans le menu Fichiers - Préférences pour ajouter URL de gestionnaire de carte supplémentaire suivante
http://dan.drown.org/stm32duino/package_STM32duino_index.json - Maintenant il faut installer les librairies pour la carte blue pill dans Outils - Type de carte - Gestionnaire de cartes. Déroulez la liste jusqu'à la carte STM32F1xx/GD32F1xx. Cliquez dans le carré. Sélectionnez la version la plus récente dans la liste dérourante et cliquez sur le bouton installer. Fermer ce fenêtre lorsque l'installation est complétée.
- Retournez encore dans le menu Outils - Type de carte, cette fois-ci sélectionnez dans la liste la carte GenericSTM32F103C series
- Allez dans Outils - Variant: et sélectionnez STM32F103C8 (20K RAM, 64K flash).
~/.arduino15/packages/stm32duino/hardware/STM32F1/2018.7.2/libraries.
Premier programme, blink
Allez dans Fichier - Exemples - A_STM32_Examples - Digital et sélectionnez Blink
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PB1
Modified by PICATOUT for blue pill 2018/08/22, green LED on PC13
*/
// La LED verte est sur la broche PC13
#define GREEN_LED PC13
// the setup function runs once when you press reset or power the board
void setup() {
// initialise la broche GREEN_LED en sortie digitale.
pinMode(GREEN_LED, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// fait clignoter la LED 3 fois/secondes.
// puisque la LED est branchée avec la cathode à PC13 elle allume
// lorsque PC13 est LOW.
digitalWrite(GREEN_LED, HIGH); // éteint la LED verte
delay(167); // attend 1/6 de seconde
digitalWrite(GREEN_LED, LOW); // allume la LED verte
delay(167); // attend 1/6 de seconde
}
}
En cliquant sur la flèche qui pointe à droite sur barre d'outils le programme se compile et s'il n'y a pas d'erreur est téléversé sur la carte blue pill.
Et bien j'ai essayé plusieurs fois et ça ne fonctionne pas. Il y a un message d'erreur dans la fenêtre du bas qui dit:
Comment désintaller le bootloader
- Débrancher le cable USB et mettre le cavalier boot0à 1.
- Brancher la carte au ST-LINK V2 et brancher celui-ci au PC
- Faire la commande: st-flash erase
- Débrancher la carte et remettre le cavalier boot0à sa position initiale. Rebrancher la carte et le programmeur au PC.
- Il faut modifier la configuration du Arduino IDE pour utiliser le ST-LINK comme programmeur en allant dans Outils - Upload method: et sélectionner STLINK
- Réessayer le téléversement. Bingo ça fonctionne.
retour à l'introduction