Logo STM32

Scheda di sviluppo sistema minimo STM32F103C8T6

Prodotto STM32F103C8T6-scheda-di-sviluppo-sistema-minimo

Informazioni sul prodotto

Il modulo della scheda di sviluppo minimo del sistema STM32F103C8T6 ARM STM32 è una scheda di sviluppo basata sul microcontroller STM32F103C8T6. È progettato per essere programmato utilizzando l'IDE Arduino ed è compatibile con vari cloni, varianti e schede di terze parti di Arduino come ESP32 ed ESP8266.

La scheda, nota anche come Blue Pill Board, funziona a una frequenza circa 4.5 volte superiore a quella di un Arduino UNO. Può essere utilizzato per vari progetti e può essere collegato a periferiche come display TFT.

I componenti necessari per realizzare progetti con questa scheda includono la scheda STM32, il programmatore FTDI, il display TFT a colori, il pulsante, una piccola breadboard, i cavi, il Power Bank (opzionale per la modalità standalone) e il convertitore da USB a seriale.

Schema

Per collegare la scheda STM32F1 al display TFT a colori basato su 1.8 ST7735 e a un pulsante, seguire le connessioni pin-to-pin descritte negli schemi forniti.

Configurazione dell'IDE Arduino per STM32

  1. Apri l'IDE di Arduino.
  2. Vai su Strumenti -> Scheda -> Gestione scheda.
  3. Nella finestra di dialogo con una barra di ricerca, cerca "STM32F1" e installa il pacchetto corrispondente.
  4. Attendi il completamento della procedura di installazione.
  5. Dopo l'installazione, la scheda STM32 dovrebbe ora essere disponibile per la selezione nell'elenco delle schede IDE Arduino.

Programmazione di schede STM32 con l'IDE Arduino

Fin dal suo inizio, l'IDE di Arduino ha dimostrato il desiderio di supportare tutti i tipi di piattaforme, dai cloni di Arduino e le varianti di diversi produttori alle schede di terze parti come ESP32 ed ESP8266. Man mano che sempre più persone acquisiscono familiarità con l'IDE, iniziano a supportare più schede non basate su chip ATMEL e per il tutorial di oggi esamineremo una di queste schede. Esamineremo come programmare la scheda di sviluppo STM32F32C103T8 basata su STM6 con l'IDE Arduino.

STM32F103C8T6-Minimum-System-Development-Board-fig-1

La scheda STM32 da utilizzare per questo tutorial non è altro che la scheda di sviluppo STM32F103 basata su chip STM8F6C32T1, comunemente chiamata "Blue Pill" in linea con il colore blu del suo PCB. Blue Pill è alimentato dal potente processore ARM STM32F32C103T8 a 6 bit, con clock a 72 MHz. La scheda funziona su livelli logici da 3.3 V, ma i suoi pin GPIO sono stati testati per resistere a 5 V. Sebbene non sia dotato di WiFi o Bluetooth come le varianti ESP32 e Arduino, offre 20KB di RAM e 64KB di memoria flash che lo rendono adeguato per progetti di grandi dimensioni. Possiede inoltre 37 pin GPIO, 10 dei quali possono essere utilizzati per sensori analogici poiché hanno ADC abilitato, insieme ad altri abilitati per SPI, I2C, CAN, UART e DMA. Per una scheda che costa circa $ 3, sarai d'accordo con me sul fatto che si tratta di specifiche impressionanti. Una versione riassuntiva di queste specifiche confrontate con quelle di un Arduino Uno è mostrata nell'immagine sottostante.

STM32F103C8T6-Minimum-System-Development-Board-fig-2

In base alle specifiche sopra, la frequenza con cui opera Blue Pill è circa 4.5 volte superiore a quella di un Arduino UNO, per il tutorial di oggi, come exampPer sapere come utilizzare la scheda STM32F1, la collegheremo ad un display TFT da 1.44″ e la programmeremo per calcolare la costante “Pi”. Noteremo quanto tempo ha impiegato la scheda per ottenere il valore e lo confronteremo con il tempo impiegato da un Arduino Uno per eseguire lo stesso compito.

Componenti richiesti

Per creare questo progetto sono necessari i seguenti componenti;

  • Scheda STM32
  • Programmatore FTDI
  • TFT a colori
  • Premere il pulsante
  • Piccola breadboard
  • Fili
  • Banca di potere
  • Convertitore da USB a seriale

Come al solito, tutti i componenti utilizzati per questo tutorial possono essere acquistati dai link allegati. Il power bank è tuttavia necessario solo se si desidera implementare il progetto in modalità autonoma.

Schema

  • Come accennato in precedenza, collegheremo la scheda STM32F1 al display TFT a colori basato su ST1.8 da 7735″ insieme a un pulsante.
  • Il pulsante verrà utilizzato per istruire la scheda ad avviare il calcolo.
  • Collegare i componenti come mostrato nello schema seguente.

STM32F103C8T6-Minimum-System-Development-Board-fig-3

Per rendere le connessioni facili da replicare, le connessioni pin-to-pin tra STM32 e il display sono descritte di seguito.

STM32 – ST7735

STM32F103C8T6-Minimum-System-Development-Board-fig-4

Controlla ancora una volta le connessioni per essere sicuro che tutto sia come dovrebbe essere poiché tende a diventare un po' complicato. Fatto ciò, abbiamo proceduto a predisporre la scheda STM32 da programmare con l'IDE Arduino.

Configurazione dell'IDE Arduino per STM32

  • Come con la maggior parte delle schede non realizzate da Arduino, è necessario eseguire un po' di configurazione prima di poter utilizzare la scheda con l'IDE di Arduino.
  • Ciò comporta l'installazione della scheda file tramite Arduino Board Manager o scaricando da Internet e copiando il file files nella cartella hardware.
  • Il percorso Board Manager è quello meno noioso e poiché la STM32F1 è tra le schede elencate, seguiremo quella strada. Inizia aggiungendo il collegamento per la scheda STM32 agli elenchi delle preferenze di Arduino.
  • Vai a File -> Preferenze, quindi inseriscilo URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) nella casella come indicato di seguito e fare clic su OK.

STM32F103C8T6-Minimum-System-Development-Board-fig-5

  • Now go to Tools -> Board -> Board Manager, it will open a dialogue box with a search bar. Cercare STM32F1 and install the corresponding package.

STM32F103C8T6-Minimum-System-Development-Board-fig-6

  • La procedura di installazione richiederà alcuni secondi. Successivamente, la scheda dovrebbe ora essere disponibile per la selezione nell'elenco delle schede IDE Arduino.

Codice

  • Il codice verrà scritto nello stesso modo in cui scriveremmo qualsiasi altro schizzo per un progetto Arduino, con l'unica differenza nel modo in cui vengono referenziati i pin.
  • Per poter sviluppare facilmente il codice per questo progetto, utilizzeremo due librerie che sono entrambe modifiche delle librerie Arduino standard per renderle compatibili con STM32.
  • Utilizzeremo la versione modificata delle librerie Adafruit GFX e Adafruit ST7735.
  • Entrambe le librerie possono essere scaricate tramite i link ad esse allegati. Come al solito, farò una breve analisi del codice.
  • Iniziamo il codice importando le due librerie che utilizzeremo.

STM32F103C8T6-Minimum-System-Development-Board-fig-7

  • Successivamente, definiamo i pin dell'STM32 a cui sono collegati i pin CS, RST e DC del display LCD.

STM32F103C8T6-Minimum-System-Development-Board-fig-8

  • Successivamente, creeremo alcune definizioni di colore per semplificare l'utilizzo dei colori in base ai nomi nel codice in un secondo momento anziché in base ai valori esadecimali.

STM32F103C8T6-Minimum-System-Development-Board-fig-9

  • Successivamente, impostiamo il numero di iterazioni che vogliamo che la scheda esegua insieme alla durata dell'aggiornamento da utilizzare per la barra di avanzamento.

STM32F103C8T6-Minimum-System-Development-Board-fig-10

  • Fatto ciò creiamo un oggetto della libreria ST7735 che verrà utilizzato come riferimento al display durante l'intero progetto.
  • Indichiamo anche il pin dell'STM32 a cui è collegato il pulsante e creiamo una variabile per mantenerne lo stato.

STM32F103C8T6-Minimum-System-Development-Board-fig-11

  • Fatto ciò passiamo alla funzione void setup().
  • Iniziamo impostando pinMode() del pin a cui è collegato il pulsante, attivando una resistenza pull-up interna sul pin poiché il pulsante si collega a terra quando viene premuto.

STM32F103C8T6-Minimum-System-Development-Board-fig-12

  • Successivamente, inizializziamo la comunicazione seriale e lo schermo, impostando lo sfondo del display su nero e chiamando la funzione print() per visualizzare l'interfaccia.

STM32F103C8T6-Minimum-System-Development-Board-fig-13

  • La prossima è la funzione void loop(). La funzione void loop è abbastanza semplice e breve, grazie all'uso di librerie/funzioni.
  • Iniziamo leggendo lo stato del pulsante. Se il pulsante è stato premuto, rimuoviamo il messaggio corrente sullo schermo utilizzando la rimozionePressKeyText() e disegniamo la barra di avanzamento che cambia utilizzando la funzione drawBar().
  • Chiamiamo quindi la funzione di avvio del calcolo per ottenere e visualizzare il valore di Pi insieme al tempo impiegato per calcolarlo.

STM32F103C8T6-Minimum-System-Development-Board-fig-14

  • Se il pulsante non viene premuto, il dispositivo rimane in modalità Idle con lo schermo che richiede la pressione di un tasto per interagire con esso.

STM32F103C8T6-Minimum-System-Development-Board-fig-15

  • Infine, viene inserito un ritardo alla fine del loop per dare un po' di tempo prima di disegnare i “loop”.

STM32F103C8T6-Minimum-System-Development-Board-fig-16

  • La parte restante del codice sono le funzioni chiamate per svolgere i compiti dal disegno della barra al calcolo del Pi.
  • La maggior parte di queste funzioni sono state trattate in numerosi altri tutorial che coinvolgono l'uso del display ST7735.

STM32F103C8T6-Minimum-System-Development-Board-fig-17STM32F103C8T6-Minimum-System-Development-Board-fig-18STM32F103C8T6-Minimum-System-Development-Board-fig-19STM32F103C8T6-Minimum-System-Development-Board-fig-20STM32F103C8T6-Minimum-System-Development-Board-fig-21STM32F103C8T6-Minimum-System-Development-Board-fig-22

  • Il codice completo del progetto è disponibile di seguito ed è allegato nella sezione download.

STM32F103C8T6-Minimum-System-Development-Board-fig-23STM32F103C8T6-Minimum-System-Development-Board-fig-24 STM32F103C8T6-Minimum-System-Development-Board-fig-25 STM32F103C8T6-Minimum-System-Development-Board-fig-26 STM32F103C8T6-Minimum-System-Development-Board-fig-27 STM32F103C8T6-Minimum-System-Development-Board-fig-28 STM32F103C8T6-Minimum-System-Development-Board-fig-29 STM32F103C8T6-Minimum-System-Development-Board-fig-30 STM32F103C8T6-Minimum-System-Development-Board-fig-31 STM32F103C8T6-Minimum-System-Development-Board-fig-32 STM32F103C8T6-Minimum-System-Development-Board-fig-33 STM32F103C8T6-Minimum-System-Development-Board-fig-34

Caricamento del codice su STM32

  • Il caricamento di schizzi su STM32f1 è un po' complesso rispetto alle schede standard compatibili con Arduino. Per caricare il codice sulla scheda, abbiamo bisogno di un convertitore da USB a seriale basato su FTDI.
  • Collegare il convertitore da USB a seriale all'STM32 come mostrato negli schemi seguenti.

STM32F103C8T6-Minimum-System-Development-Board-fig-35

Ecco una mappa pin-to-pin della connessione

FTDI-STM32

  • Fatto ciò, cambiamo quindi la posizione del ponticello di stato della scheda in posizione uno (come mostrato nella gif sotto), per mettere la scheda in modalità di programmazione.
  • Successivamente premiamo una volta il pulsante di ripristino sulla scheda e saremo pronti per caricare il codice.

STM32F103C8T6-Minimum-System-Development-Board-fig-37

  • Sul computer, assicurati di selezionare "Scheda STM32F103C generica" ​​e seleziona seriale come metodo di caricamento, dopodiché puoi premere il pulsante di caricamento.

STM32F103C8T6-Minimum-System-Development-Board-fig-38

  • Una volta completato il caricamento, modificare il ponticello di stato in posizione “O” Ciò metterà la scheda in modalità "esegui" e ora dovrebbe iniziare a funzionare in base al codice caricato.
  • A questo punto è possibile disconnettere l'FTDI e alimentare la scheda tramite la sua USB. Nel caso in cui il codice non venga eseguito dopo l'alimentazione, assicurarsi di aver ripristinato correttamente il ponticello e riaccendere la scheda.

Dimostrazione

  • Una volta completato il codice, segui la procedura di caricamento descritta sopra per caricare il codice nella tua configurazione.
  • Dovresti vedere il display apparire come mostrato nell'immagine qui sotto.

STM32F103C8T6-Minimum-System-Development-Board-fig-39

  • Premere il pulsante per avviare il calcolo. Dovresti vedere la barra di avanzamento scorrere gradualmente fino alla fine.
  • Alla fine del processo, viene visualizzato il valore di Pi insieme al tempo impiegato dal calcolo.

STM32F103C8T6-Minimum-System-Development-Board-fig-40

  • Lo stesso codice è implementato su un Arduino Uno. Il risultato è mostrato nell'immagine qui sotto.

STM32F103C8T6-Minimum-System-Development-Board-fig-41

  • Confrontando questi due valori, vediamo che “Blue Pill” è oltre 7 volte più veloce dell'Arduino Uno.
  • Ciò lo rende ideale per progetti che comportano elaborazioni pesanti e vincoli di tempo.
  • Le dimensioni ridotte della Blue Pill fungono anche da vantaggiotage qui perché è solo leggermente più grande dell'Arduino Nano e può essere utilizzato in luoghi dove il Nano non sarà abbastanza veloce.

Documenti / Risorse

Scheda di sviluppo sistema minimo STM32 STM32F103C8T6 [pdf] Manuale d'uso
STM32F103C8T6 Scheda di sviluppo sistema minimo, STM32F103C8T6, Scheda di sviluppo sistema minimo, Scheda di sviluppo sistema, Scheda di sviluppo, Scheda

Riferimenti

Lascia un commento

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