Introduzione alla famiglia STM32

Introduzione

L'articolo è tratto da: https://www.carminenoviello.com/it/2014/12/20/la-guerra-delle-board-di-sviluppo-stm32-nucleo/

Arduino non è solo un gioco. È una piattaforma per la quale esistono migliaia di librerie, codici di esempio, shield più disparate. Il risultato è che la piattaforma AVR di Atmel ha avuto un successo commerciale senza precedenti, ed i dati di vendita lo dimostrano. Il risultato di tutto ciò è che molti produttori di MCU stanno provando a correre ai ripari, proponendo in giro piattaforme molto più aperte e spesso e volentieri espressamente compatibili con il pinout di Arduino UNO, sicuramente l'Arduino più diffuso e per il quale oggigiorno esiste tutto. Una di queste è la STM32 Nucleo di ST Microelectronics.

La piattaforma STM32 è una gamma di microcontrollori ARM Cortex molto interessanti, a sua volta suddivisa in sottofamiglie ognuna specializzata su alcune funzionalità principali.

stm32_sc1169

Si parte dalla famiglia STM32F0, composta da micro low-cost, che girano fino a 48Mhz e sono basati su un core Cortex-M0. Ho dato uno sguardo ai prezzi che si trovano sui distributori a catalogo, e devo dire che il vantaggio di costo di questa piattaforma è notevole. Si parte con prezzi inferiori ai €0.50 per piccole quantità. Se si fa il paragone (impietoso) con famiglie di micro a 8 bit di altri vendor (tra cui la famiglia AVR su cui è costruita Arduino) il paragone non regge proprio. Si sale poi progressivamente fino ad arrivare alla famiglia F7, dove le performance di questi oggetti cominciano a diventare notevoli (trattandosi di dispositivi true-embedded).

I vantaggi dell'utilizzo di un micro di questa classe sono notevoli. Innanzitutto avete un processore che opera a 32 bit. E questo, per alcune tipologie di applicazioni, è già una cosa non da poco. Per pochi cents in più è possibile acquistare micro della serie STM32F4 che hanno tantissima flash e RAM, ed hanno anche il supporto per un eventuale SDRAM esterna. Le frequenze di clock sono molto spinte, e i vari micro sono declinati in varie versioni che supportano le più disparate periferiche (UART, CAN, SPI, I2C, USB-OTG, ecc, ecc, ecc). Un altro vantaggio è costituita dall'essere dei micro su base ARM Cortex-Mx. Questo significa che, in teoria, a meno di cambiamenti specifici della parte di astrazione hardware (la cosiddetta parte HAL) il codice progettato e compilato per un dato microcrontrollore ARM Cortex può essere portato su un altro micro di un'altra azienda che ha un core compatibile ARM-Cortex. Tuttavia, chiunque nella sua vita ha mai scritto un pezzo di codice "portabile" o peggio ancora ha lavorato con l'hardware, sa che questi ragionamenti sono molto teorici. Vedo veramente difficile che una volta realizzato e testato un codice per un dato micro, si decida a cuor leggero di cambiare piattaforma, anche a fronte di un differente prezzo di mercato (che poi, diciamoci la verità, a meno di parlare di volumi di vendita stratosferici, i prezzi nell'elettronica sono tutti livellati).

Un altro vantaggio molto più concreto è il fatto che per la famiglia ARM Cortex esistono porting della GNU Collection Compiler (gcc) e dei suoi tool di debug. Questo significa che è possibile sviluppare per i micro STM32 con quello che probabilmente è il miglior compilatore oggigiorno esistente, ed adoperare altri ambienti open source per cui c'è supporto costante da parte di community molto vaste. Come vedremo, il porting di gcc per la famiglia ARM-Cortex permette di poter sviluppare immediatamente per questa piattaforma senza dover investire capitali in IDE commerciali.

La scheda di sviluppo STM32Nucelo

La scheda è sostanzialmente composta da due macroblocchi: una parte che non è null'altro che un programmatore ST-Link, usato per caricare il firmware sul micro target ed eseguire il debugging, e una parte che è la scheda di sviluppo vera e propria.

nucleo

Quest'ultima e formata da 4 connettori compatibili con il pinout di Arduino UNO R3, più i connettori di espansione della scheda Nucleo denominati Morpho. Su questi ultimi PIN, ci sono rigirati tutti i pin del micro target.

Le librerie

La scelta di adottare un pinout compatibile Arduino è sicuramente positiva. In teoria qualunque delle centinaia di shield esistenti in commercio può essere usata per sviluppare codice con questa piattaforma di ST. Tuttavia, va detto che il grande plus delle shield Arduino non è solo l'hardware, ma anche la presenza di librerie più che collaudate che permettono di usare quella shield. In questo caso, purtroppo, il software va o riscritto daccapo, oppure va pesantemente adattato per funzionare con questa architettura.

Inoltre, il fatto di essere Arduino compatibile non deve trarre in inganno. Questa non è una piattaforma "entry-level" come Arduino, e al momento è poco aperta ai neofiti. La curva di apprendimento di un micro come l'STM32 è molto ripida, soprattutto se si sta partendo da zero con questo mondo. Infine, non c'è un IDE come quello di Arduino che in pochi minuti ci permette di far lampeggiare il nostro led (l'Hello World del mondo elettronico).

Per sviluppare software su questa piattaforma, l'ST distribuisce un set di librerie denominato STM32Cube, disponibile in varie versioni a seconda della famiglia di microcontrolli STM32 (F0, F1, ecc).

stm32cube architecture



Ultime modifiche: martedì, 13 aprile 2021, 20:49