STM32F1 Blue Pill: piedinatura, specifiche e configurazione IDE Arduino (STM32duino e STMicroelectronics) – 1
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.
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]
Code | Core | Max freq [MHz] | Max FLASH [KB] | Max SRAM [KB] | Target |
---|---|---|---|---|---|
F0 | Cortex-M0 | 48 | 256 | 32 | Mainstream |
F1 | Cortex-M3 | 72 | 1024 | 96 | Mainstream |
F2 | Cortex-M3 | 120 | 1024 | 128 | High performance |
F3 | Cortex-M4F | 72 | 512 | 80 | Mainstream |
F4 | Cortex-M4F | 180 | 2048 | 384 | High performance |
G0 | Cortex-M0+ | 64 | 128 | 36 | Mainstream |
G4 | Cortex-M4F | 170 | 512 | 128 | Mainstream |
F7 | Cortex-M7F | 216 | 2048 | 512 | High performance |
H7 | Cortex-M7F | 480 | 2048 | 1024 | High performance |
WB | Cortex-M4F | 64 | 1024 | 256 | Wireless |
WL | Cortex-M4 | 48 | 256 | 64 | Wireless |
L0 | Cortex-M0+ | 32 | 192 | 20 | Ultra-low-power |
L1 | Cortex-M3 | 32 | 512 | 80 | Ultra-low-power |
L4 | Cortex-M4F | 80 | 1024 | 320 | Ultra-low-power |
L4+ | Cortex-M4F | 120 | 2048 | 640 | Ultra-low-power |
L5 | Cortex-M33F | 110 | 512 | 256 | Ultra-low-power |
U5 | Cortex-M33F | 160 | 2048 | 786 | Ultra-low-power |
Numero di pin [y]
Code | Number of pins |
---|---|
A | 169 |
B | 208 |
C | 48 |
F | 20 |
G | 28 |
H | 40 |
I | 176 |
J | 8/72 |
K | 32 |
M | 81 |
N | 216 |
Q | 132 |
R | 64 |
T | 36 |
U | 63 |
V | 100 |
Z | 144 |
Dimensione FLASH [z]
Code | FLASH size [KB] |
---|---|
4 | 16 |
6 | 32 |
8 | 64 |
B | 128 |
Z | 192 |
C | 256 |
D | 384 |
E | 512 |
F | 768 |
G | 1024 |
H | 1536 |
I | 2048 |
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.
Piedinatura
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.
Ecco i due modelli descritti USB to TTL CH340G - USB to TTL FT232RL
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.
È possibile alimentare l’stm32 con 3,3V o 5V nel rispettivo pin e collegare FTDI TX a PA10 e RX a PA9.
STM32F103C8T6 | FTDI |
---|---|
5v or 3.3v | VCC 5v or 3.3v |
GND | GND |
A9 | RX |
A10 | TX |
Schema di collegamento con ST-Link
STM32 | ST-Link v2 |
---|---|
GND | GND |
SCK | SWCLK |
DIO | SWDIO |
3V3 | 3V3 |
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:
BOOT0 | BOOT1 | Modality |
---|---|---|
0 | X | Main flash memory |
1 | 0 | System Memory |
1 | 1 | Embedded 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.”
Quindi devi aggiungere una nuova scheda in Boards Manager
La scheda da selezionare è STM32F1xx.
Ora puoi scegliere il dispositivo specificato:
Ora sceglieremo il metodo di caricamento con Serial FTDI, quindi Upload method: "Serial"
.
Per ST-Link è necessario selezionare STLink.
Seleziona la modalità di avvio
Per impostazione predefinita, hai i ponticelli in modalità “normale”.
Devi metterlo in modalità “programmazione” (Memoria di sistema).
Semplice sketch Blink per STM32F1xx
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”.
Quindi devi aggiungere una nuova scheda al Boards Manager
Le schede da selezionare sono STM32 MCU-based boards
.
Ora puoi scegliere il dispositivo specificato:
Ora sceglieremo la scheda specifica.
Ora selezioneremo il metodo di caricamento con Serial FTDI, quindi Upload method: "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.
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”.
Devi metterlo in modalità “programmazione” (Memoria di sistema).
Semplice sketch Blink per STM32F1xx
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
- STM32F1 Blue Pill: piedinatura, specifiche e configurazione IDE Arduino (STM32duino e STMicroelectronics)
- STM32: programmazione (STM32F1) via USB con bootloader STM32duino
- STM32: programmazione (STM32F1 STM32F4) tramite USB con bootloader HID
- STM32F4 Black Pill: pinout, specifiche e configurazione IDE Arduino
- STM32: ethernet w5500 standard (HTTP) e SSL (HTTPS)
- STM32: ethernet enc28j60 standard (HTTP) e SSL (HTTPS)
- STM32: WiFiNINA con un ESP32 come WiFi Co-Processor
- Come utilizzare la scheda SD con l’stm32 e la libreria SdFat
- STM32: memoria flash SPI FAT FS
- STM32: RTC interno, sistema orario e backup batteria (VBAT)
- STM32 LoRa
- STM32 Risparmio energetico
- STM32F1 Blue-Pill gestione clock e frequenza
- STM32F4 Black-Pill gestione clock e frequenza
- Introduzione e framework Arduino vs STM
- Libreria LowPower, cablaggio e Idle (STM Sleep).
- Sleep, deep sleep, shutdown e consumo energetico
- Sveglia da allarme RTC e Seriale
- Sveglia da sorgente esterna
- Introduzione al dominio di backup e conservazione delle variabili durante il RESET
- Registro di backup RTC e conservazione della SRAM
- STM32 invia email con allegati e SSL (come Gmail): w5500, enc28j60, SD e SPI Flash
- Server FTP su STM32 con W5500, ENC28J60, scheda SD e memoria flash SPI
- Collegamento dell’EByte E70 ai dispositivi STM32 (black/blue pill) e un semplice sketch di esempio