STM32F1 Blue Pill: piedinatura, specifiche e configurazione IDE Arduino (STM32duino e STMicroelectronics) – 1

Spread the love

STM32F1 pinout specs and Arduino IDE configuration
STM32F1 pinout specs and Arduino IDE configuration

Dettagli

La famiglia STM32 di microcontrollori a 32 bit si basa sul processore Arm®  Cortex® -M.

Questi prodotti combinano prestazioni molto elevate, capacità in tempo reale elaborazione del segnale digitale, funzionamento a bassa potenza/bassa tensione e connettività, pur mantenendo la piena integrazione e la facilità di sviluppo.

I microcontrollori STM32, basati su un core standard del settore, include un’ampia scelta di strumenti e software per supportare lo sviluppo dei progetti, rendendo questa famiglia di prodotti ideale sia per piccoli progetti che per piattaforme end-to-end.

Qui gli STM32 più comuni STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official

Specifiche

C’è un’ampia varietà di stm32; ecco una schematizzazione della categoria principale.

STM32 family of 32bit microcontrollers categories
STM32 family of 32bit microcontrollers categories

Una classificazione più dettagliata si può fare con la decodifica del numero identificativo:

STM32F051R8
STM32xxwwyz

  • xx – Famiglia
  • ww – sottofipo: differisce nell’equipaggiamento delle periferiche e questo dipende da determinate famiglie
  • y – Numero pin
  • z – dimensione FLASH

Famiglia: [xx]

CodeCoreMax freq [MHz]Max FLASH [KB]Max SRAM [KB]Target
F0Cortex-M04825632Mainstream
F1Cortex-M372102496Mainstream
F2Cortex-M31201024128High performance
F3Cortex-M4F7251280Mainstream
F4Cortex-M4F1802048384High performance
G0Cortex-M0+6412836Mainstream
G4Cortex-M4F170512128Mainstream
F7Cortex-M7F2162048512High performance
H7Cortex-M7F48020481024High performance
WBCortex-M4F641024256Wireless
WLCortex-M44825664Wireless
L0Cortex-M0+3219220Ultra-low-power
L1Cortex-M33251280Ultra-low-power
L4Cortex-M4F801024320Ultra-low-power
L4+Cortex-M4F1202048640Ultra-low-power
L5Cortex-M33F110512256Ultra-low-power
U5Cortex-M33F1602048786Ultra-low-power

Numero di pin [y]

CodeNumber of pins
A169
B208
C48
F20
G28
H40
I176
J8/72
K32
M81
N216
Q132
R64
T36
U63
V100
Z144

Dimensione FLASH [z]

CodeFLASH size [KB]
416
632
864
B128
Z192
C256
D384
E512
F768
G1024
H1536
I2048

Dettagli STM32F1

La serie ST STM32F1 degli MCU mainstream soddisfa le esigenze di un’ampia varietà di applicazioni, i microcontrollori Arm® Cortex™-M offrono buone prestazioni con periferiche di prima classe e il funzionamento a bassa potenza e bassa tensione è abbinato a un alto livello di integrazione a prezzi accessibili con un’architettura semplice e strumenti facili da usare.

STM32F10x comparison table
STM32F10x comparison table

Piedinatura

STM32F103 pinout low resolution
STM32F103 pinout low resolution

STM32F103C8T6 Blue Pill: piedinatura ad alta risoluzione e specifiche

STM32F103C6T6 Blue Pill: piedinatura ad alta risoluzione e specifiche

Il vantaggio significativo di questi dispositivi è che i pin hanno una logica a 3,3V, ma alcuni sono tolleranti ai 5V; puoi vederli nel diagramma di piedinatura (quadrato verde tollerante a 5v, quadrato rosso solo 3,3v).

Cablaggio

Il dispositivo che dovevi acquistare probabilmente è arrivato senza bootloader e hai bisogno di un programmatore FTDI. Di solito uso un modello base, ma in questo caso è più semplice utilizzare un modulo con uscita di alimentazione integrata.

Esiste un modulo FT232RL o FT232 più costoso, ma un CH340G o CH340 funziona molto bene.

CH340G Module It is my forced choice

Ecco i due modelli descritti USB to TTL CH340G - USB to TTL FT232RL


FT232RL Module

Schema di connessione con FTDI (USBtoTTL)

Prima di tutto, caricheremo uno sketch in un stm32 Blue-Pill vuota, nel mio caso STM32F103C8T6. per farlo, dobbiamo usare l’FTDI in questo modo.

stm32 ft232 USBtoTTL converter wiring
stm32 ft232 USBtoTTL converter wiring

È possibile alimentare l’stm32 con 3,3V o 5V nel rispettivo pin e collegare FTDI TX a PA10 e RX a PA9.

STM32F103C8T6FTDI
5v or 3.3vVCC 5v or 3.3v
GNDGND
A9RX
A10TX

Schema di collegamento con ST-Link

STM32 and ST-Link wiring
STM32 and ST-Link wiring
STM32ST-Link v2
GNDGND
SCKSWCLK
DIOSWDIO
3V33V3

Modalità di avvio

È possibile selezionare tre tipi di modalità di avvio:

  • Boot from System Memory: che richiama il bootloader su chip, che è presente nel chip direttamente dalla fabbrica prima che tu l’abbia mai programmato nel chip della flash. Ciò consente di caricare il codice (programma) nel dispositivo da un’interfaccia esterna come UART o USB.
  • Memoria flash principale: è dove normalmente va il tuo codice. Durante il normale funzionamento, il codice risiederà in flash e, su Power-On Reset (POR), la CPU recupererà il vettore di ripristino e il puntatore dello stack iniziale (SP) dalla flash. Puoi caricare su flash tramite JTAG, il bootloader su chip, ecc.
  • Carica il codice nella RAM (JTAG, runtime) e quindi avvia/esegui da lì. Questo non è usato spesso, di solito stai facendo qualcosa di complicato come un bootloader temporaneo o simili.

Ecco la tabella con la configurazione dei jumper:

BOOT0BOOT1Modality
0XMain flash memory
10System Memory
11Embedded SRAM

Configura il tuo Arduino IDE

Probabilmente quando acquisti un STM32, arriva senza bootloader, quindi non succede nulla se colleghi il dispositivo alla USB. Quindi dobbiamo utilizzare un dispositivo esterno (FTDI descritto prima o ST-Link) per la prima programmazione o aggiungere un bootloader.

Esistono molti descrittori di schede e varianti di firmware per STM32 ed è piuttosto complicato trovare un modo “standard” da seguire. Quindi, in questo articolo, vorrei aggiungere alcune opzioni che puoi scegliere.

SMT32duino

Iniziamo con stm32duino, probabilmente il più famoso. Dobbiamo aggiungere il descrittore URL al nostro IDE Arduino.

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Vai su File -> Preferenze e aggiungi l’URL su “Additional Boards Manager URLs.”

Arduino IDE add STM32duino URL descriptor
Arduino IDE adds STM32duino URL descriptor.


Quindi devi aggiungere una nuova scheda in Boards Manager

Select board manager

La scheda da selezionare è STM32F1xx.

Arduino IDE select STM32duino STM32 boards
Arduino IDE selects STM32duino STM32 boards.

Ora puoi scegliere il dispositivo specificato:

Arduino IDE select stm32f103c8t6 board
Arduino IDE select stm32f103c8t6 board

Ora sceglieremo il metodo di caricamento con Serial FTDI, quindi Upload method: "Serial".

Arduino IDE select stm32 upload methods
Arduino IDE selects stm32 upload methods.

Per ST-Link è necessario selezionare STLink.

Seleziona la modalità di avvio

Per impostazione predefinita, hai i ponticelli in modalità “normale”.

STM32 blue pill in run normal mode
STM32 blue pill in run normal mode

Devi metterlo in modalità “programmazione” (Memoria di sistema).

STM32 blue pill in programming mode
STM32 blue pill in programming mode

Il mio dispositivo ha il LED su PA13

/*
  Blink for STM32F1xx 

  Turns an LED on for one second, then off for one second, repeatedly.

  http://www.mischianti.org
*/

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);

  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.print(F("Serial OK!"));

  pinMode(PC13, OUTPUT);
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(1000);
}

Ora seleziona la porta di FDTI e avvia il caricamento.

C:\Users\renzo\AppData\Local\Arduino15\packages\stm32duino\tools\stm32tools\2021.5.31/win/serial_upload.bat COM25 {upload.altID} {upload.usbID} C:\Users\renzo\AppData\Local\Temp\arduino_build_965206/Blink.ino.bin 
stm32flash 0.4

http://stm32flash.googlecode.com/

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

Starting execution at address 0x08000000... done.

Riportare ora il ponticello nella posizione di default, premere il pulsante “Reset” e il led inizierà a lampeggiare.

È necessario collegare il monitor seriale per avviare lo sketch.

Ecco l’uscita seriale.

Serial OK!

Nei seguenti articoli, programmeremo l’STM32 direttamente tramite un connettore USB e il bootloader STM32duino.

Arduino STM32 di STMicroelectronics

Dobbiamo aggiungere il descrittore URL al nostro IDE Arduino.

https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

Vai su File -> Preferenze e aggiungi l’URL su “Additional Boards Manager URLs”.

Arduino IDE add Arduino STM32 URL descriptor
Arduino IDE adds Arduino STM32 URL descriptor.


Quindi devi aggiungere una nuova scheda al Boards Manager

Select board manager

Le schede da selezionare sono STM32 MCU-based boards.

Arduino IDE select STM32 MCU official based boards
Arduino IDE select STM32 MCU official based boards

Ora puoi scegliere il dispositivo specificato:

Arduino IDE Arduino SMT official select stm32f1 board series
Arduino IDE Arduino SMT official select stm32f1 board series

Ora sceglieremo la scheda specifica.

Arduino IDE Arduino SMT official select specified stm32f103C8 board
Arduino IDE Arduino SMT official select specified stm32f103C8 board

Ora selezioneremo il metodo di caricamento con Serial FTDI, quindi Upload method: "Serial".

Arduino IDE Arduino SMT official select SMTCubeProgrammer Serial
Arduino IDE Arduino SMT official select SMTCubeProgrammer Serial

Per ST-Link è necessario selezionare STM32CubeProgrammer (SWD) e per il debug è possibile utilizzare l’adattatore seriale (e selezionare il supporto USART: abilitato (seriale generico) oppure è possibile selezionare il supporto USB (se disponibile): CDC (generico ‘Serial’ sostituisce U (S)ART per utilizzare il cavo USB.

STM32 Arduino IDE select: CDC generic 'Serial' supersede U(S)ART
STM32 Arduino IDE select: CDC generic ‘Serial’ supersede U(S)ART

Installa STM32CubeProgrammer

Per funzionare, è inoltre necessario installare l’STM32CubeProgrammer rilasciato da STMicroelectronics.

Puoi scaricarlo da qui .

Seleziona la modalità di avvio

Per impostazione predefinita, hai i ponticelli in modalità “normale”.

STM32 blue pill in run normal mode
STM32 blue pill in run normal mode

Devi metterlo in modalità “programmazione” (Memoria di sistema).

STM32 blue pill in programming mode
STM32 blue pill in programming mode

Il mio dispositivo ha il LED su PA13

/*
  Blink for STM32F1xx 

  Turns an LED on for one second, then off for one second, repeatedly.

  http://www.mischianti.org
*/

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);

  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.print(F("Serial OK!"));

  pinMode(PC13, OUTPUT);
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(1000);
}

Ora seleziona la porta di FDTI e avvia il caricamento.

Sketch uses 12692 bytes (19%) of program storage space. Maximum is 65536 bytes.
Global variables use 820 bytes (4%) of dynamic memory, leaving 19660 bytes for local variables. Maximum is 20480 bytes.
C:\Users\renzo\AppData\Local\Arduino15\packages\STMicroelectronics\tools\STM32Tools\2.1.1/win/busybox.exe sh C:\Users\renzo\AppData\Local\Arduino15\packages\STMicroelectronics\tools\STM32Tools\2.1.1/stm32CubeProg.sh 1 C:\Users\renzo\AppData\Local\Temp\arduino_build_965206/Blink.ino.bin COM25 -s 
      -------------------------------------------------------------------
                       STM32CubeProgrammer v2.9.0                  
      -------------------------------------------------------------------

Serial Port COM25 is successfully opened.
Port configuration: parity = even, baudrate = 115200, data-bit = 8,
                     stop-bit = 1.0, flow-control = off
Activating device: OK
Board       : --
Chip ID: 0x410 
BootLoader protocol version: 2.2
Device name : STM32F101/F102/F103 Medium-density
Flash size  : 128 KBytes (default)
Device type : MCU
Revision ID : --  
Device CPU  : Cortex-M3



Memory Programming ...
Opening and parsing file: Blink.ino.bin
  File          : Blink.ino.bin
  Size          : 12984 Bytes
  Address       : 0x08000000 


Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 12]
Download in Progress:


File download complete
Time elapsed during download operation: 00:00:03.293

RUNNING Program ... 
  Address:      : 0x8000000
Start operation achieved successfully

Ora ripristina il jumper nella posizione di default, premi il pulsante “Reset” e devi collegare il monitor Serial. Dopodiché , il led inizia a lampeggiare.

Ecco l’uscita seriale.

Serial OK!

Nei seguenti articoli, programmeremo l’STM32 direttamente tramite un connettore USB e un bootloader HID

Grazie

  1. STM32F1 Blue Pill: piedinatura, specifiche e configurazione IDE Arduino (STM32duino e STMicroelectronics)
  2. STM32: programmazione (STM32F1) via USB con bootloader STM32duino
  3. STM32: programmazione (STM32F1 STM32F4) tramite USB con bootloader HID
  4. STM32F4 Black Pill: pinout, specifiche e configurazione IDE Arduino
  5. STM32: ethernet w5500 standard (HTTP) e SSL (HTTPS)
  6. STM32: ethernet enc28j60 standard (HTTP) e SSL (HTTPS)
  7. STM32: WiFiNINA con un ESP32 come WiFi Co-Processor
    1. STM32F1 Blue-pill: shield WiFi (WiFiNINA)
    2. STM32F4 Black-pill: shield WiFi (WiFiNINA)
  8. Come utilizzare la scheda SD con l’stm32 e la libreria SdFat
  9. STM32: memoria flash SPI FAT FS
  10. STM32: RTC interno, sistema orario e backup batteria (VBAT)
  11. STM32 LoRa
  1. STM32 Risparmio energetico
    1. STM32F1 Blue-Pill gestione clock e frequenza
    2. STM32F4 Black-Pill gestione clock e frequenza
    3. Introduzione e framework Arduino vs STM
    4. Libreria LowPower, cablaggio e Idle (STM Sleep).
    5. Sleep, deep sleep, shutdown e consumo energetico
    6. Sveglia da allarme RTC e Seriale
    7. Sveglia da sorgente esterna
    8. Introduzione al dominio di backup e conservazione delle variabili durante il RESET
    9. Registro di backup RTC e conservazione della SRAM
  1. STM32 invia email con allegati e SSL (come Gmail): w5500, enc28j60, SD e SPI Flash
  2. Server FTP su STM32 con W5500, ENC28J60, scheda SD e memoria flash SPI
  3. Collegamento dell’EByte E70 ai dispositivi STM32 (black/blue pill) e un semplice sketch di esempio

Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *