Microcontroleur STM32
Blue Pill
De nombreux clones existent sur le marché, fonctionnant plus ou moins bien. La première chose à vérifier est que le programme chargé par défaut fait bien clignoter la led intégrée au PCB, ce qui est bien le cas. La suite consiste à le flasher, et là, les choses se gâtent .
Ce microcontroleur est doté de 37 GPIOs, 64 Ko de flash, 20 Ko de RAM et un processeur 32 bit à base d'ARM à 72 MHz.
Brochage
Flashage
Mon objectif est d'utiliser ce µC pour faire un clavier avec qmk. Le bootloader supporté est STM32duino : il permet de le flasher en mode DFU, c'est à dire directement par l'USB sans passer par un programmateur externe.
Pour installer ce bootloader, j'ai testé plusieurs méthodes avant d'arriver à quelque choses qui marche : le flashage via un port série, le flashage via l'IDE Arduino en ayant installé la carte… J'étais un peu perdu car mon expérience se limite aux Arduinos qui fonctionnent du premier coup. Et je ne concevais pas qu'il faille utiliser un programmateur externe et manipuler des cavaliers (pièces jaunes sur la photo) à chaque programmation.
Bref, après pas mal de recherches (autant sur le net que dans mon matériel), l'unique méthode qui fonctionne pour moi est d'utiliser un programmateur via un st-link v2 :
Le branchement s'effectue avec 4 fils Dupont femelle↔femelle via le port SWD situé à l'opposé du connecteur USB en respectant le nommage décrit sur le verso du PCB du STM32 vers le programmateur st-link v2.
Il faut installer stlink, brancher le programmateur sur un port USB de l'ordinateur, basculer en mode flashage le µC en changant la position du jumper `BOOT0` à 1, puis lancer la commande suivante afin de verifier que tout est bien reconnu :
st-info --probe Found 1 stlink programmers version: V2J37S7 serial: 49FF6C064883545336561087 flash: 131072 (pagesize: 1024) sram: 20480 chipid: 0x0410 descr: F1xx Medium-density
Récupérer le firmware dans le dossier binaries/generic_boot20_pc13.bin et flasher :
st-flash write generic_boot20_pc13.bin 0x8000000 st-flash 1.7.0 2021-05-13T16:39:02 INFO common.c: F1xx Medium-density: 20 KiB SRAM, 128 KiB flash in at least 1 KiB pages. file generic_boot20_pc13.bin md5 checksum: f6d7639c776ddc06d62a1b612ef7876, stlink checksum: 0x00192077 2021-05-13T16:39:02 INFO common.c: Attempting to write 22268 (0x56fc) bytes to stm32 address: 134217728 (0x8000000) 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08000000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08000400 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08000800 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08000c00 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08001000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08001400 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08001800 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08001c00 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08002000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08002400 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08002800 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08002c00 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08003000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08003400 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08003800 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08003c00 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08004000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08004400 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08004800 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08004c00 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08005000 erased 2021-05-13T16:39:02 INFO common.c: Flash page at addr: 0x08005400 erased 2021-05-13T16:39:02 INFO common.c: Finished erasing 22 pages of 1024 (0x400) bytes 2021-05-13T16:39:02 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL 2021-05-13T16:39:02 INFO flash_loader.c: Successfully loaded flash loader in sram 2021-05-13T16:39:02 INFO flash_loader.c: Clear DFSR 22/ 22 pages written 2021-05-13T16:39:03 INFO common.c: Starting verification of write complete 2021-05-13T16:39:03 INFO common.c: Flash written and verified! jolly good!
Repasser le jumper `BOOT0` à 0, débrancher le stlink, connecter le cable USB au STM32 puis lancer une console série :
screen /dev/cu.usbmodem14401 Congratulations, you have installed the STM32duino bootloader See https://github.com/rogerclarkmelbourne/STM32duino-bootloader For more information about Arduino on STM32 See https://www.stm32duino.com
La trace ci dessus indique que le bootloader a bien été remplacé .
Arduino IDE installation
L'IDE Arduino est utilisable pour programmer le STM32. Il faut ajouter l'adresse http://dan.drown.org/stm32duino/package_STM32duino_index.json dans le champ “Additional Boards Manager URLs” de “Preferences” :
Puis aller dans “Tools” > “Board manager” et saisir “STM32” puis sélectionner “STM32F1xx/GD32F1xx board” :
Dans le menu “Tools” > “Board”, sélectionner la carte “Generic STM32F103C6/fake STM32F103C8” et le bootloader “STM32duino bootloader” :