Questo articolo spiegherà come programmare i microcontrollori STM32F4 Black Pill. Può essere considerato il fratello maggiore della serie STM32F1, più potente e con tutte le caratteristiche della versione F1.
Una delle caratteristiche più interessanti della variante Black Pill di STM32 ha un bootloader ROM integrato che non può essere disabilitato o cancellato, e questo lo rende un modo infallibile per essere sempre in grado di recuperare il codice del tuo microcontrollore.
Ma ora iniziamo a esaminare la famiglia di microcontrollori STM32, quindi approfondiremo la serie STM32F4 e impareremo come utilizzarli/programmarli.
Dettagli SMT32
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.
La gamma di 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 per piccoli progetti e piattaforme end-to-end.
Qui la mia selezione di STM32 STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official
Specifiche
C’è un’ampia varietà di stm32; ecco una schematizzazione delle categorie principali.
Una classificazione più dettagliata può essere fatta con la decodifica del numero identificativo:
STM32F051R8
STM32xxwwyz
- xx – Famiglia
- ww – sottotipo: differisce nell’equipaggiamento delle periferiche e questo dipende da determinate famiglie
- y – Numero pins
- z – Dimensione memoria 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 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 memoria 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 |
STM32F4 details
Serie STM32F4 di MCU ad alte prestazioni con istruzioni DSP e FPU
La serie di MCU STM32F4 basati su ARM® Cortex®-M4 sfrutta la tecnologia NVM di ST e ART Accelerator™ per raggiungere i punteggi di benchmark più alti del settore per i microcontrollori basati su Cortex-M con un massimo di 225 DMIPS/608 CoreMark in esecuzione da memoria Flash con frequenza operativa fino a 180 MHz.
Con la scalabilità dinamica della potenza, il consumo di corrente in esecuzione da Flash varia da 89 µA/MHz sull’STM32F410 fino a 260 µA/MHz sull’STM32F439.
La serie STM32F4 è composta da otto linee di prodotti compatibili di controller di segnale digitale (DSC), una perfetta simbiosi tra le capacità di controllo in tempo reale di un MCU e le prestazioni di elaborazione del segnale di un processore di segnale digitale (DSP):
- Advanced lines :
- CPU da 180 MHz/225 DMIPS, fino a 2 Mbyte di memoria flash dual-bank con SDRAM e Chrom-ART Accelerator™
- STM32F469/479 – Interfaccia Quad-SPI, controller LCD-TFT e interfaccia MPI-DSI
- STM32F429/439 – Controller LCD-TFT
- STM32F427/437 – interfaccia audio seriale, maggiori prestazioni e minor consumo di energia statica
- CPU da 180 MHz/225 DMIPS, fino a 2 Mbyte di memoria flash dual-bank con SDRAM e Chrom-ART Accelerator™
- Foundation lines:
- STM32F446 – 180 MHz/225 DMIPS, fino a 512 Kbyte di memoria Flash con doppia interfaccia Quad-SPI e SDRAM
- STM32F407/417 – CPU da 168 MHz/210 DMIPS, fino a 1 Mbyte di memoria Flash aggiungendo MAC Ethernet e interfaccia della fotocamera
- STM32F405/415 – CPU 168 MHz/210 DMIPS, fino a 1 Mbyte di memoria Flash con connettività e crittografia avanzate
- Access lines: I microcontrollori entry-level della serie STM32F4 !
- CPU a 84 MHz/105 DMIPS, la soluzione più piccola ed economica con un’eccezionale efficienza energetica (Dynamic Efficiency™)
- STM32F401 – Meno di 3 x 3 mm con interfacce USB 2.0FS OTG e SDIO
- CPU da 100 MHz/125 DMIPS, eccezionale efficienza energetica (Dynamic Efficiency™) e Batch Acquisition Mode (BAM), un nuovo consumo energetico intelligente per l’ottimizzazione DMA per il batching dei dati
- STM32F410 – Nuova pietra miliare nell’eccezionale efficienza energetica (89 µA/MHz e 6 µA in modalità Stop), generatore di numeri casuali reali, timer a bassa potenza e DAC.
- STM32F411 – Alta densità di RAM e set di periferiche avanzate come USB 2.0FS OTG e fino a 5 interfacce SPI.
- STM32F412 – Elevata densità di memoria RAM e Flash, interfaccia USB e set di periferiche avanzato che include un controller di memoria statica esterna flessibile con bus dati fino a 16 bit per LCD e controllo della memoria esterna, Quad-SPI dual-mode, CAN, DFSDM e TRNG.
- STM32F413/F423 – Estende le funzionalità dell’STM32F412 con una maggiore densità di memoria RAM e Flash e un set di periferiche migliorato che include 10 UART, 3 CAN, interfaccia SAI, un timer a bassa potenza, 2 DAC, 2 DFSDM con un massimo di 6 filtri. L’STM32F423 include la crittografia AES.
- CPU a 84 MHz/105 DMIPS, la soluzione più piccola ed economica con un’eccezionale efficienza energetica (Dynamic Efficiency™)
Piedinatura
Il modello F401 è uno tra I più diffusi, considerando anche il costo molto accessibile.
WeAct STM32F401CCU6 Black-Pill: piedinatura ad alta risoluzione e specifiche
Sicuramente più performante la versione 411, che dispone anche di un SPI, timer e I2S in più.
È importante notare i pin 10 e 41 che F411 non è tollerante a 5V (controlla il colore rosso del quadrato).
WeAct STM32F411CEU6 Black-Pill: piedinatura ad alta risoluzione e specifiche
La tolleranza a 5V è una delle caratteristiche più importanti di queste serie F4xx.
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 schede basate su MCU STM32.
Ora puoi scegliere il dispositivo specifico:
Ora selezioneremo la scheda specifica.
Come già detto, questi dispositivi hanno già caricato un bootloader DFU, quindi puoi usare l’USB per programmare e devi selezionare il bootloader DFU.
Per utilizzare Serial per eseguire il debug del codice, è necessario selezionare"USB support (if It's available): "CDC (generic 'Serial' supersede U(S)ART)"
Installare l’STM32CubeProgrammer
Per funzionare, è inoltre necessario installare l’STM32CubeProgrammer rilasciato da STMicroelectronics.
Puoi scaricarlo da qui .
Seleziona la modalità di avvio
Metti questo dispositivo in modalità di avvio:
- tenere premuto il pulsante BOOT0;
- premere il pulsante NRST;
- rilascio NRST;
- rilasciare BOOT0.
Ora hai solo il led rosso PWR.
Semplice sketch Blink per STM32F4
Il mio dispositivo ha un led LED su PA13.
/*
Blink for STM32F4
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.println(F("Serial OK!"));
pinMode(PC13, OUTPUT);
}
void loop() {
digitalWrite(PC13, HIGH);
Serial.println(F("HIGH!"));
delay(1000);
digitalWrite(PC13, LOW);
Serial.println(F("LOW!"));
delay(1000);
}
Ora avvia il caricamento.
-------------------------------------------------------------------
STM32CubeProgrammer v2.9.0
-------------------------------------------------------------------
USB speed : Full Speed (12MBit/s)
Manuf. ID : STMicroelectronics
Product ID : STM32 BOOTLOADER
SN : 31A035713237
FW version : 0x011a
Board : --
Device ID : 0x0433
Device name : STM32F401xD/E
Flash size : 8 MBytes (default)
Device type : MCU
Revision ID : --
Device CPU : Cortex-M4
Memory Programming ...
Opening and parsing file: sketch_feb22a.ino.bin
File : sketch_feb22a.ino.bin
Size : 24296 Bytes
Address : 0x08000000
Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 1]
erasing sector 0000 @: 0x08000000 done
erasing sector 0001 @: 0x08004000 done
Download in Progress:
File download complete
Time elapsed during download operation: 00:00:01.101
RUNNING Program ...
Address: : 0x8000000
Start operation achieved successfully
Se tutto è ok, il tuo LED C13 inizia a lampeggiare e come per magia è apparsa una nuova porta seriale, per me è COM12.
Al collegamento del monitor seriale alla porta COM, ottieni questo risultato:
Serial OK!
HIGH!
LOW!
HIGH!
LOW!
HIGH!
LOW!
HIGH!
LOW!
HIGH!
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