Utilisation du circuit stm32 appelé bluepill

Introduction

Le circuit stm32 appelé bluepill est un circuit imprimé conportant un microprocesseur STM32F103C8T6, 32-bit ARM Cortex M3 pouvant fonctionner à 72 MHz, avec flash et ram intégré. Le format du circuit imprimé est celui d'un microprocesseur Intel 8031 ou Motorola 6800 avec 2 rangées de 20 pins espacées de 6 pas (0.6 in). On peut le trouver sur internet au prix de environ 2 euros chez Ebay ou Aliexpress.

Ce circuit est identique fonctionnellement au circuit maple-mini décrit dans la page maple-mini. Par contre les circuits ne sont pas interchangables à cause du pinout.

Caractéristiques principales

Voici les caractéristiques principales du processeur:

Photos du circuit

Photo du circuit coté processeur.

circuit du coté processeur circuit du coté autres composants

Utilisation du circuit

Avant de pouvoir utiliser un circuit comme le bluepill, il faut un schéma en tête ou même dans un fichier. Le schéma va se faire en fonction de la disposition des fonctionnalités, montrées dans le tableau suivant, et des fonctionnalités dont on a besoin. Par exemple, on sait que l'on va avoir besoin de l'uart1, on peut réserver PA9, PA10, TX1, RX1 et réserver un connecteur.

tableau des fonctions - cliquer pour agrandir
pinout diagram

Schéma minimal bluepill

Le schéma minimal est un symbole d'un dil 40 broches pour concrétiser le module avec une partie du circuit se trouvant sur le module. La pin 1 est l'ntrée VBAT.

schéma minimal - cliquer pour agrandir
bluepill schéma minimal

Bootloader sur liaison série

Voir page Boot du processeur stm32f103 par liaison série

Pour atteindre le mode Bootloader en ROM, on utilise les straps sur la carte:

  1. Connecter Boot0 à 1
  2. Connecter Boot1 à 0
  3. Appuyer sur le bouton Reset
  4. Lancer l'application stm32flash

Bootloader DFU (Device firmware update)

Voir page usbdu

Pour atteindre le mode Bootloader Usb, il faut, après avoir brancher le cable mini-usb:

  1. Connecter Boot0 à 0
  2. Connecter Boot1 à 0, pour forcer le mode bootloader ou à 1, pour lancer l'application si valide
  3. Appuyer sur le bouton Reset

Vérification de la taille de la mémoire flash

Le micro du bluepill est un STM32F103C8T6 pour lequel la taille de la mémoire flash est définie à 64 ko par la spécification. Par contre le boot loader en rom indique 128 ko. Pour lever le doute il suffit de faire un test

### créer un fichier aléatoire de 128 ko avec dd
$ dd if=/dev/urandom of=file.ori bs=1024 count=128

### envoyer le fichier dans la flash avec stm32flash
$ stm32flash -w file.ori -v /dev/ttyS0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (STM32F10xxx Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote and verified address 0x08020000 (100.00%) Done.


### lire la flash dans un fichier flash.bin avec stm32flash
$ stm32flash -r flash.bin  /dev/ttyS0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (STM32F10xxx Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Memory read
Read address 0x08020000 (100.00%) Done.

### comparer le fichier d'origine et l'image de la flash avec md5sum
$ md5sum flash.bin file.ori
89ba3d5ff31d59705ed46be6d7d1945f  flash.bin
89ba3d5ff31d59705ed46be6d7d1945f  file.ori

Dans notre cas, la taille de la flash est bien 128 ko. Dans le cas contraire, on aurait sans doute un problème d'écriture et un résultat différent avec md5sum.

Références

  1. Open source flash program for STM32 using the ST serial bootloader.
  2. dfu-util - Device Firmware Upgrade Utilities.
  3. Pre-built GNU toolchain from ARM Cortex-M & Cortex-R processors.
  4. libopencm3 - Open Source ARM cortex m microcontroller library.
  5. Stm32 Blue Pill wiki.