Nate come alternativa/concorrente di Arduino, le schede Discovery della ST offrono in ridotte dimensioni (65x96mm), o meglio quasi alle stesse dimensioni di un Arduino Due, un hardware che non ha nulla da invidiare ai concorrenti, un prezzo in certi casi addirittura di gran lunga inferiore ed un paio di MEMS (accelerometro e microfono) come valore aggiunto. Tuttavia, osservando l’altra faccia della medaglia, l’utente medio rischia di trovarsi in mano una scheda potente ma di non riuscire a far lampeggiare un led, a causa della mancanza ad oggi per queste schede di un IDE di sviluppo, unico e gratuito, nonché di una community minimamente paragonabile a quella di Arduino.
Questo articolo è il primo di una serie di quattro articoli con i quali tenteremo di mettere un po’ di ordine sulla questione programmazione, esplorando le IDE di sviluppo, (uno grafico per il settaggio dei pin della scheda e uno per la scrittura del codice) per poi di volta in volta soffermaci sulle periferiche presenti sulla scheda descrivendole ed utilizzandole in piccoli progetti pratici.
In questo primo capitolo dopo una veloce descrizione di una Discovery andremo alla scoperta delle IDE di sviluppo per poi concludere con un paio di semplici esempi con dei led. Nello specifico useremo la STM32F4 Discovery Board (Fig. 1) che monta un ARM Cortex-M4 a 32 bit, ovvero un STM34F407VGT6 con una memoria flash da 1 Mb ed una ram da 192Kb, inoltre sulla scheda è presente un tool di debug ST-LINK/V2 utilizzabile tramite un apposito connettore SWD sia per il debug appunto che per la programmazione del microcontrollore a bordo.
Infine come accennato la scheda offre due valori aggiunti rappresentati da una accelerometro triassiale (LIS302DL) e un microfono digitale omnidirezionale (MP45DT02) della ST.
Le IDE di Sviluppo
Per la scrittura del codice useremo due differenti IDE, ovvero l’STM32CubeMX (scaricabile direttamente dal sito di ST Microelectronics) ed CoIDE (scaricabile dal sito di CooCox).
STM32CubeMX
L’STM32CubeMx offre la possibilità all’utente meno esperto di creare in modo facile e veloce tutti i file necessari al progetto.
In particolare tramite un interfaccia grafica molto intuitiva l’utente può scegliere quali periferiche utilizzare per il proprio progetto e i pin ad esse collegate, successivamente il programma provvederà in modo del tutto automatico alla creazione di tutti i file necessari nonché all’inizializzazione delle periferiche selezionate. L’utilizzo del programma come detto è semplice, all’avvio (fig. 2) ci apparirà una schermata per la creazione o l’apertura di un progetto.
Selezioniamo “New Project” e proseguiamo scegliendo il microcontrollore, nello specifico la scheda che useremo monta a bordo un microcontrollore della serie STM32F407VGTx con un package LQFP (Leads Quad Flat Package) a 100 pin (fig. 3).
A questo punto ci apparirà una schermata con il microcontrollore selezionato, nel nostro primo esempio utilizzeremo i led integrati nella scheda, che sono connessi ai piedini; PD12 (led verde), PD13 (led arancio), PD14 (led rosso) e PD15 (led blu), selezioniamo quindi i suddetti pin ed impostiamoli [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3853 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Interessante!!!!
Leggerò con interesse, ma se puoi fare qualche paragone tra questo Sistema di Sviluppo e Arduino (e se riesci di Raspberry) sarebbe davvero una gran cosa.
Con la STM32F4 e un ARM M4 cosa si può fare che in Arduino non si potrebbe?
Il Chip che periferiche integrate di comunicazione ha? Come si potrebbero usare?
Insomma, se siamo di fronte ad un salto rispetto Arduino merita davvero la pena impegnarsi nello studio.
Grazie, e a rileggervi presto
Salve, intanto grazie per l’interesse dimostrato. Siamo inoltre contenti di aver suscitato la sua curiosità.
Per quanto riguarda la domanda: bisogna partire dal fatto che per un confronto più o meno alla pari dovremmo prendere in considerazione un Arduino Due che monta un ARM CORTEX-M3 a 32 bit (mi sembra inopportuno il confronto con un Arduino Uno ATmega328P a 8 bit o con la Raspberry che rientra nella famiglia dei microprocessori). Tecnicamente con Arduino si possono implementare la maggior parte della applicazioni sviluppate con la ST; diventa solo una questione di prestazioni e comodità, avendo sulla ST molte più cose sulla board.
Detto questo : la Discovery raggiunge un clock maggiore, di 168MHz (Arduino Due 84 MHz), monta un CORTEX-M4 che rispetto al CORTEX-M3, dispone anche della FPU. Volendo evidenziare altri aspetti hardware, la ST dispone inoltre di 10 timers a 16 bits e 2 timer a 32 bits, 3 ADC a 12 bits multiplexati su 24 canali, un sensore di temperatura, 3 per SPI, 3 per I2C, camera interface, 6 per USART, Serial Audio Interface (uscita jack ), accelerometro, microfono. Si possono inoltre trovare espansioni ( o kit della ST) come la Base Board che facilitano l’utilizzo della comunicazione Wireless,Ethernet,Seriale,della Camera e di uno schermo touch LCD.
Rimando a questa immagine https://www.google.it/search?q=stm32f4+discovery+peripherals&es_sm=93&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMIoo7anqCfyAIVihIsCh2Pnw9o&biw=1920&bih=947#imgrc=nn_Go-VlUXztxM%3A
o a testi specializzati per avere informazioni più dettagliate.
Vorrei anche sottolineare la possibilità di poter utilizzare la Discovery con molti Sistemi Operativi Real Time( FreeRTOS, ChibiOS, Erika, …) che aumentano non di poco le sue possibili applicazioni.
Inoltre mi sembra che anche dal punto di vista del prezzo, la ST32F4 costando circa 20€ sia più facilmente accessibile rispetto ad Arduino Due.
Spero di averle tolto qualche dubbio e di aver fatto aumentare il suo interesse verso una scheda che non gode certo della popolarità di Arduino.
Ho letto con interesse la risposta. Quello che si evidenzia è che, data la presenza sul mercato di molti prodotti di questo genere con innumerevoli differenze tecniche, di prezzo e di “massa critica di comunità” (che credo sia un parametro non trascurabile), potrebbe essere interessante un qualche articolo (o una serie di articoli ?) che aiuti tutta la comunità di appassionati/operatori nel matchare la scelta del sistema di sviluppo in funzione del campo applicativo e meglio ancora dell’applicazione specifica. Che ne pensate ?
Credo che la tua osservazione sia esatta e calzi perfettamente con l’idea che sta alla base di questi articoli. Tuttavia non è facile trovare una compromesso non è facile, ovvero se in un microcontrollore sono in cerca delle prestazioni la risposta più ovvia è ST (quelli che ho visto all’ultima Maker Faire a Roma fanno paura) ma se sono un neofita e voglio far lampeggiare un led, le ST potrebbero essere un incubo mentre con un Arduino devo soltanto scaricare un file dal web. Quindi partendo dal presupposto che tutti vogliono spendere poco ed avere massimo, non è facile stabilire a priori quanto sarà difficile raggiungere l’obiettivo. Noi con questi articoli stiamo tentando di far un po di luce a riguardo, ad ogni modo gli articoli che fanno confronti in modo semplice e diretto sono sempre una buona base di partenza quando poi si tratta di scegliere, magari ne riparliamo con la direzione. Ad ogni modo ti ringrazio dell’osservazione
Ciao.
Grazie per la tua articolata risposta.
Il motivo della mia domanda è la necessità di concentrarsi su un sistema che sia il più efficiente possibile, a parità di prezzo.
I sistemi di sviluppo sono ormai così numerosi che è impossibile provarli tutti, e dedicarsi ad uno escludendo uno migliore è frustrante.
Non si abbastanza tempo (e voglia) per provare tutto.
A risentirti dunque
Ciao Francesco, grazie per l’interesse mostrato, riguardo alla domanda credo che Salvo sia stato esaustivo, ad ogni modo la differenza fondamentale tra le due schede sta nelle prestazioni che le STM riescono ad offrire. Spero che tu possa continuare a seguirci e per qualsiasi dubbi non fare complimenti. Grazie a presto
Certamente vi leggerò con piacere!!!!
Spero che nel prosieguo inseriate anche qualche idea su come usare la scheda in connessione WiFi /Bluetooth/GSM
Mi piacerebbe poterla usare per l’ IoT.
A Presto
Bell’articolo!
Magari averlo avuto disponibile un paio di mesi fa, mi avrebbe evitato diversi sbattimenti 🙂
Ho da poco iniziato a lavorare con la board STM32F429I-Discovery (la versione con display LCD integrato) per fare delle acquisizioni con l’ADC sotto freeRTOS usando come IDE quello della IAR (la versione free consente di lavorare fino a 32KB di codice se non erro).
Personalmente iniziando a lavorare con la board mi sono trovato a scegliere tra accoppiata STMCubeMX+HAL driver o usare i “Standard Peripheral Driver” senza CubeMX… ho optato per la seconda scelta perché sono riuscito a entrare meglio nella logica dei driver standard piuttosto che con gli HAL (Hardware Abstraction Layer) in quanto mi sono messo a studiare gli esempi forniti dalla ST che fanno uso dei driver standard.
Gli HAL che vantaggi hanno rispetto ai driver standard? Consentono il porting delle applicazioni su altri micro più facilmente? Ho visto che c’è il documento UM1725 dedicato a questi driver e cubeMX li usa, ma gli esempi che ho scaricato dal sito ST sono fatti con quelli standard… per questo ho trovato un po’ di confusione e non sono riuscito a orientarmi facilmente.
inoltre secondo Voi come è meglio approcciare allo studio di un nuovo micro? Partire dagli esempi forniti dal produttore o altro?
Grazie.
Ciao, intanto grazie 🙂
Io ho utilizzato la ST in entrambi i modi. Devo dire che all’inizio mi sono trovato spaesato quando ho iniziato a utilizzare le librerie HAL, ma utilizzandole insieme a STMCube con la generazione automatica del codice si semplifica e velocizza di molto la programmazione.
Per lo studio di un nuovo micro a mio parere servono entrambi: gli esempi sui vari forum possono aiutarti a capire nella pratica come procedere, ma bisogna sempre dare uno sguardo ai datasheet e alla documentazione del produttore.
Io ho trovato un appoggio fondamentale nei documenti forniti dalla ST riguardo l’utilizzo dei driver HAL. Dal sito della ST puoi scaricare anche “STM32Cube_FW_F4_V1.8.0” che fornisce esempi e progetti (EWARM,TrueSTUDIO,…) per diverse board usando anche le librerie HAL.
Grazie per la risposta.
Attendo gli altri tutorial sull’argomento così da capire meglio l’uso dei driver HAL.
Alla prossima e buon lavoro!