STM32F103C8T6 alias Bluepill

Constat

Vous aimez l’électronique grand public et vous maitrisez les arduino mais vous finissez toujours l’un des constats suivants :
– relativement cher (env. 2,5€)
– pas assez de mémoire (même si ce n’est pas un concours de celui qui a le plus gros … code source)
– pas assez de puissance (et oui, des fois 16MHz ça ne suffit pas)
– pas assez de PIN à utiliser

LA solution 🙂

le STM32F103C8T6 (controlleur de chez ST Micro) monté sur une petite board chinoise portant le doux nom de bluepill que l’on peut trouver aux alentours de 1,75€ sur aliexpress.

Ce microcontrolleur est juste un monstre comme le montre sa doc technique dont voici les grandes lignes:

 

  • ARM® 32-bit Cortex® -M3 CPU Core
    • 72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
    • Single-cycle multiplication and hardware division
  • Memories
    • 64 Kbytes of Flash memory
    • 20 Kbytes of SRAM
  • 2 x 12-bit, 1 μs A/D converters (up to 16 channels)
    • Conversion range: 0 to 3.6 V
    • Dual-sample and hold capability
    • Temperature sensor
  • DMA
    • 7-channel DMA controller
    • Peripherals supported: timers, ADC, SPIs, I2 Cs and USARTs
  • fast I/O ports
    • 37 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
  • Debug mode
    • Serial wire debug (SWD) & JTAG interfaces
  • 7 timers
    • Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
    • 16-bit, motor control PWM timer with dead-time generation and emergency stop
    • 2 watchdog timers (Independent and Window)
    • SysTick timer 24-bit downcounter
  • Up to 9 communication interfaces
    • Up to 2 x I2 C interfaces (SMBus/PMBus)
    • Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
    • Up to 2 SPIs (18 Mbit/s)
    • CAN interface (2.0B Active)
    • USB 2.0 full-speed interface

stm32f103c8t6 - Bluepill

Comment on s’en sert ?

Arf, oui ce n’est pas un arduino. C’est vrai qu’il ne contient pas de bootloader par défaut. Il ne peut être programmé qu’en mode série malgré le fait qu’il dispose d’un port USB (cherchez l’erreur).

Heureusement, on peut lui charger un bootloader de maple mini et le tour est joué.

Flashage du bootloader

Voici les étapes à suivre:

  1. Installer l’utilitaire flashage de chez ST
  2. Récupérer le bootloader
  3. Mettre le jumper BOOT0 du bluepill sur 1
  4. Connecter le bluepill au PC via un adaptateur USB-Série
    RX -> A9
    TX -> A10
    GND -> GND
    VCC -> 5Vstm32toSerial
  5. Flasher le bluepill avec le bootloader (en sélectionnant le bon port COM)
    stmFlashLoader
  6. Remettre le jumper BOOT0 sur 0 et redémarrer le bluepill. La led ROUGE (PC13) doit clignoter rapidement car elle n’a pas de programme à exécuter.

C’est fini. Maintenant quand on branche le bluepill via USB il apparaît dans le device manager de Windows comme :

  • un maple mini en DFU si il ne contient pas de code
  • un port COM « maple Serial » si il a déjà du code arduino chargé

Utilisation avec le bootloader

Maintenant qu’il a un bootloader le bestiau, on s’en sert comment ?

  • On le branche en USB
  • On lance son arduino IDE
  • On ajoute le support des cartes ARM : « Arduino SAM Boards »
  • Dans le menu Outils, on choisi la carte « Generic ST32F103C series » ainsi que le port COM ad-hoc

Et on programme comme d’habitude. Génial, non ?

Ressources:

STM32duino Wiki

 

2 réflexions sur “STM32F103C8T6 alias Bluepill

  1. bonjour,
    je recherche désespérément un programme pour le STM32F103C8T6 avec un MPU6050 pour réaliser un drone équipé d’un gyroscope.
    merci
    pascal

    J’aime

    • Bonjour Pascal. Je ne suis pas un en développement. Venant du monde de l’arduino, j’utilise arduino ide avec le module pour stm32. Ça me permet de profiter d’une partie des librairies arduino. Du coup, je t’invite à regarder sur ce site. Ils explique ment comment faire communiquer le mpu avec un arduino en i2c: https://playground.arduino.cc/Main/MPU-6050
      Je pense que ce doit être facilement adaptable, voire utilisable tel quel.

      J’aime

Laisser un commentaire