Come selezionare il microcontrollore per il tuo nuovo prodotto
Come si seleziona il microcontrollore giusto per il tuo prodotto hardware specifico? Questo articolo ti mostrerà tutti i diversi fattori che devi manipolare quando selezioni il miglior microcontrollore.
Quando si seleziona il microcontrollore giusto per un progetto è necessario considerare il costo, le prestazioni, il consumo energetico e le dimensioni complessive. La disponibilità degli strumenti software e hardware adeguati è anche una considerazione primaria.
Anche il supporto per la piattaforma scelta è molto importante, non solo dal fornitore, ma dalla comunità in generale. Aiuta anche se il microcontrollore scelto ha una scheda di sviluppo prontamente disponibile.
Infine, il tempo di sviluppo può essere significativamente ridotto se il microcontrollore selezionato dispone di librerie software estese, completamente debuggate, con interfacce di programmazione applicativa ben documentate o API.
In questo articolo verranno presentati solo i microcontrollori che generalmente soddisfano i criteri di cui sopra.
Tutti i microcontrollori moderni condividono alcune caratteristiche di base. In cima a un’unità di elaborazione, hanno una certa quantità di flash che viene utilizzato per memorizzare il codice dell’applicazione, alcuni SRAM, e, nella maggior parte dei casi, alcuni EEPROM.
Hanno bisogno di una sorgente di clock, e questo è normalmente fornito da un oscillatore resistore-condensatore interno (RC), o utilizzando un cristallo esterno per più applicazioni critiche di temporizzazione. Hanno alcune porte IO digitali e almeno un timer / contatore.
Inoltre, a parte i microcontrollori di fascia molto bassa, la maggior parte ha almeno un UART per le comunicazioni seriali. Oltre a ciò, i microcontrollori si distinguono per la quantità di memoria che hanno, il numero e il tipo di altre periferiche integrate sul chip e la velocità con cui eseguono le applicazioni utente.
Questo non dipende solo dalla velocità di clock raw; dipende anche dalla larghezza dei dati del processore e da qualsiasi funzionalità di accelerazione hardware inclusa.
I microcontrollori per sistemi embedded rientrano principalmente in tre categorie in base alla larghezza dei loro bus dati: 8-bit, 16-bit e 32-bit. Ce ne sono altri, ma questi sono i più popolari.
In generale, i microcontrollori a 8 bit sono orientati verso applicazioni di fascia bassa e quelli a 32 bit sono per le estremità più alte, con 16 bit per le applicazioni di fascia media.
Di gran lunga, la maggior parte dei prodotti su cui lavoro tendono ad incorporare microcontrollori a 32 bit, ma i microcontrollori a 8 o 16 bit possono essere una buona scelta per prodotti di fascia bassa e a basso costo.
Microcontrollori a 8 bit
Se un’applicazione non ha richieste molto elevate sulla potenza di elaborazione ed è di dimensioni relativamente ridotte, allora può avere senso considerare un microcontrollore a 8 bit.
Per riferimento, la maggior parte degli Arduino sono basati su microcontrollori a 8 bit. Quindi, se hai costruito il tuo primo prototipo usando un Arduino, potresti essere in grado di utilizzare un microcontrollore a 8 bit nel tuo prodotto finale.
Non lasciare che il prezzo da solo guidi la tua decisione e in molti casi i microcontrollori a 32 bit possono essere più economici dei chip a 8 bit.
Ad esempio, Atmega328p è il microcontrollore a 8 bit utilizzato da Arduino Uno. Costa poco più di $1 in volumi di circa 10k pezzi. Funziona a 20 MHz e include 32 KB di Flash e 2KB di RAM.
D’altra parte, è possibile acquistare un microcontrollore a 32 bit in esecuzione a 48 MHz con memoria simile per soli 60 centesimi. Ciò è probabilmente dovuto al popolarmente di microcontrollori a 32 bit che riducono il loro costo.
Detto questo, ci sono ancora più economici microcontrollori a 8 bit disponibili che costano meno di 25 centesimi a volumi simili.
I microcontrollori a 8 bit dovrebbero in genere essere considerati per le applicazioni dedicate a un solo lavoro, con un’interfaccia utente limitata e poca elaborazione dei dati.
i microcontrollori a 8 bit sono disponibili in tutte le dimensioni, dai piccoli dispositivi a 6 pin ai chip con 64 pin. Hanno dimensioni flash che vanno da 512 byte a 256KB, SRAM dimensioni da 32 a 8KB, o più, e EEPROM da 0 a 4K, o più. Un sistema minimo può essere semplice come un singolo chip, con un condensatore di bypass sulla guida di alimentazione.
Le tre linee più popolari di microcontrollori a 8 bit sono la serie 8051, la serie PIC di Microchip e la serie AVR di Atmel, ora parte di Microchip.
La serie 8051
Originariamente da Intel, e ora fatto da altri, questo microcontrollore è ancora in uso comune oggi, incorporato in un sacco di apparecchi.
Mentre sono disponibili come dispositivi standalone, l ‘ 8051 è ora utilizzato principalmente come core IP (proprietà intellettuale) incorporati nel silicio di chip specifici per applicazioni dedicate come alcuni ricetrasmettitori radio wireless.
Molto raramente l ‘ 8051 sarebbe la scelta corretta per fungere da microcontrollore principale per il tuo prodotto.
La serie PIC
microcontrollori PIC sono molto popolari, e hanno un ampio supporto sia da Microchip, e di terze parti.
Microchip fornisce il suo ambiente di sviluppo integrato MPLAB® X (IDE), che include gratuitamente un compilatore C. Disponibile gratuitamente come plug-in IDE anche il configuratore di codice MPLAB che genera codice C per le periferiche di bordo.
Questo può quindi essere integrato nel codice dell’applicazione. Ci sono modelli PIC con combinazioni di USART, SPI, I2C, ADC, USB, LIN, CAN e altre interfacce. Microchip offre anche diversi strumenti di sviluppo, tra cui MPLAB PICkit 4, ICD 4 e Real ICE.
Sono disponibili anche compliers commerciali di qualità superiore che hanno una migliore ottimizzazione del codice. Ecco una rapida guida di riferimento PDF per microcontrollori PIC.
La serie AVR
L’AVR è un’altra serie di microcontrollori a 8 bit molto popolari. Mentre sono nello stesso spazio del PIC descritto sopra, e hanno prestazioni comparabili, hanno una grande pretesa di fama: Arduino.
Figura 1 – La maggior parte delle schede Arduino sono basati su 8-bit AVR microcontrollori
Originale Arduino, come ad esempio il Uno, Leonardo e Mega, tutti utilizzano AVR microcontrollori. A causa della vasta gamma di librerie disponibili per Arduino, gli AVR meritano una seria considerazione per le applicazioni a 8 bit, anche se solo per i prototipi proof of concept.
Poiché le librerie Arduino sono scritte in C++, possono essere facilmente incorporate in qualsiasi applicazione scritta in C/C++.
Strumenti di sviluppo software includono AVR studio, o, se si utilizza Arduino, l’IDE Arduino e piattaforma IO sono entrambi comunemente utilizzati. Il compilatore utilizzato in questi IDE è AVR GCC un compilatore C/C++ gratuito, molto ben supportato e mantenuto.
Gli strumenti di sviluppo hardware includono Atmel ICE e PICkit 4. Inoltre, strumenti maturi come STK600 e AVR Dragon sono ancora ampiamente disponibili. Ecco un link a una guida rapida di riferimento PDF per i microcontrollori AVR.
microcontrollori a 16 bit
i microcontrollori a 16 bit sono il passo successivo rispetto agli 8 bit, pur condividendo molti degli stessi attributi. Sono più veloci, supportano ancora più periferiche e generalmente offrono più memoria, sia flash che SRAM.
Oltre a più pin IO, la maggior parte di essi ha anche moltiplicatori hardware che sono significativamente più veloci e utilizzano meno memoria di programma, rispetto alle implementazioni software pure.
È facile trovare dispositivi con ADC e DAC o dispositivi con sensori tattili capacitivi, driver LCD segmentati ed Ethernet.
Internamente, questi dispositivi hanno anche blocchi hardware in genere non si trovano nei dispositivi di fascia inferiore. Questi includono motori di crittografia, amplificatori di guadagno operativi o programmabili e controller DMA.
Sebbene i microcontrollori a 16 bit possano essere trovati da vari produttori come Microchip (il loro dsPIC33 è una scelta popolare), NXP, Infineon o Cypress, la serie TI MSP430 sarà presentata qui come un tipico esempio di questo segmento di microcontrollori.
Serie TI MSP430
L’MSP430 è una serie di microcontrollori a 16 bit a bassissima potenza disponibili in molte versioni. Vanno da modelli generici a modelli molto specializzati.
Una cosa interessante delle varianti specializzate di questi microcontrollori è che in realtà si dirama in due estremi: modelli molto dedicati e molto economici e modelli di fascia alta con interfacce di sensori analogici e Digital Signal Processing (DSP).
Un esempio di applicazione di fascia alta è questo sensore di flusso ad ultrasuoni. Nella fascia bassa, TI rende anche chip basati su MSP430 che risolvono molte funzioni hardware molto specifiche. Per maggiori dettagli vedere questo e-paper.
Ad esempio, vuoi un’interfaccia SPI-UART, un expander I/O o un bridge UART-to-UART? È tutto lì dentro, e tutto per meno di $0.30 per questo chip.
Infine, ovviamente, il MSP430 è supportato da una serie di strumenti a basso costo e kit di sviluppo.
La tabella 1 seguente mostra le funzionalità aggiuntive disponibili su alcune delle versioni mainstream.
MSP430FR2x | MSP430FR4x | MSP430FR5x | MSP430FR6x | |
Memoria di Programma | Fino a 32 KB | Fino a 16KB | Fino a 256 kb | Fino a 128KB |
Numero di pin | 16 a 64 in una varietà di pacchetti | 48 a 64 in una varietà di pacchetti | 24 a 100 in una varietà di pacchetti | 56 a 100 in una varietà di pacchetti |
le Periferiche non è in genere disponibile in 8-bit controller | DAC, PGA s, Transimpedance & operativo amp | IR modulazione logica | DMA, AES | DMA, AES |
LCD segmento driver | — | Fino 256 | — | Fino a 320 |
Tabella 1 – Principali MSP430 riepilogo delle caratteristiche
Microcontrollori a 32 Bit
microcontrollori a 32 bit sono potenti dispositivi a microprocessore con caratteristiche simili. Alcune delle funzionalità avanzate includono pipelining di istruzioni, previsione di branch, interrupt vectored annidati (NVI), unità in virgola mobile (FPU), protezione della memoria e debugger integrati.
Instruction pipelining significa che il core del processore preleva le istruzioni successive in anticipo e branch prediction preleva le istruzioni successive di entrambi i risultati di una condizione if-else, accelerando così l’esecuzione del codice.
NVI prevede priorità di interrupt, dove un interrupt può anticipare una priorità inferiore.
Le FPU possono eseguire calcoli in virgola mobile molto più velocemente dei metodi implementati da SW.
La protezione della memoria garantisce che il codice dell’applicazione non possa inavvertitamente sovrascrivere sezioni critiche dedicate al sistema operativo, ad esempio.
Infine, il debug on-board consente di sbirciare nei registri e in altre aree del sistema per facilitare il debug del codice dell’applicazione. Tutti questi insieme consentono a questi microcontrollori di eseguire applicazioni grandi, veloci e robuste.
Inoltre, la loro potenza di elaborazione raw significa che possono facilmente supportare i sistemi operativi in tempo reale (RTO) che, a loro volta, forniscono funzionalità multitasking.
Anche se sul mercato ci sono molti microcontrollori a 32 bit, il focus in questa nota sarà sui dispositivi basati su ARM Cortex M, con una menzione speciale dell’ESP32 di Espressif.
ARM Holdings in realtà progetta solo IP core del processore, che poi concede in licenza a vari fornitori di semiconduttori che li incorporano, insieme ad alcune periferiche, nei propri chip di silicio. Numerosi produttori di chip offrono microcontrollori basati sull’architettura Cortex-M.
Due importanti fornitori di chip basati su ARM sono Atmel con la loro linea di dispositivi SAM e STMicroelectronics con la loro linea di prodotti STM32.
I dispositivi SAM meritano menzione qui a causa del loro uso in alcune schede compatibili con Arduino. Tuttavia, in generale, i dispositivi STM32 offrono più scelte e dovrebbero essere presi in considerazione quando si progetta in un microcontrollore a 32 bit incorporato.
STM32 microcontrollori
ARM Cortex M core sono disponibili in molte versioni. I più popolari sono M0 / M0+, M1, M3, M4 e M7, ognuno dei quali offre prestazioni progressivamente più elevate. I microcontrollori STM32 incorporano core M0 / M0+, M3, M4 o M7.
La figura 1 mostra la famiglia STM32 di microcontrollori basati su ARM Cortex M e i relativi segmenti di applicazione previsti.
Figura 2-Famiglia di microcontrollori STM32
All’interno di ciascuna delle categorie mostrate in figura 1, ci sono molte famiglie che possono essere selezionate per corrispondere più strettamente a una determinata applicazione.
Ad esempio, la figura 2 mostra le principali varianti disponibili nella categoria “mainstream” e la relativa curva delle prestazioni. Si noti che all’interno di ogni famiglia stessa, ci sono molte varianti con diverse combinazioni di periferiche e quantità di memoria.
In realtà, in questo momento, ci sono oltre trecento microcontrollori STM32 disponibili in questa categoria.
Figura 3-Famiglia di microcontrollori nella categoria Mainstream STM32
Supporto hardware STM32: La famiglia STM32 è supportata da un’ampia varietà di strumenti hardware forniti sia da ST Microelectronics, sia da terze parti.
Un debugger/programmatore in-circuit economico è STLink V2. È realizzato da ST ed è disponibile in luoghi come Digi-Key; tuttavia, sono disponibili anche cloni molto economici.
ST Microelectronics ha anche una vasta selezione di schede di sviluppo sotto le loro famiglie Nucleo e Discovery.
Entrambi contengono un’interfaccia di debug STLink. Tutto ciò che serve è un computer con USB, che esegue lo strumento software appropriato per valutare il microcontrollore scelto.
Le schede Discovery includono periferiche esterne aggiuntive come sensori MEMs e piastre touch capacitive. Tuttavia, i Nucleos hanno intestazioni compatibili con gli scudi Arduino.
Figura 4 – ST Discovery scheda di sviluppo per un STM32F407 microcontrollore
Prima di lasciare questa sezione, vale la pena menzionare ancora un altro molto economico scheda di sviluppo. Comunemente noto come pillola blu, questa scheda sfoggia un chip basato su Cortex M3 STM32F103 e costa meno di some 2,00 da alcune fonti.
Una caratteristica interessante di questa scheda è che può essere reso compatibile con Arduino in modo che l’IDE Arduino, o piattaforma IO, può essere utilizzato per scrivere e scaricare il codice per una rapida prova di concept design.
Mentre il processo di renderlo compatibile con Arduino è un po ‘ coinvolto, ci sono diversi posti che vendono schede Arduino-ready. Basta fare una ricerca per ‘STM32duino’.
Per imparare a progettare una scheda di microcontrollore basata su STM32 personalizzata, assicurati di guardare questo tutorial e controlla questo corso approfondito a pagamento.
Supporto software STM32: STMicroelectronics fornisce una versione della suite di sviluppo Mbed di ARM per tutta la sua linea di prodotti STM32. Questo include un IDE, compilatore e un ampio set di librerie.
Per gli sviluppatori che preferiscono utilizzare altri compilatori, ST fornisce il suo STMCube. Questo è il software generatore di codice che produce codici di inizializzazione per le periferiche STM32.
Con questo, non c’è bisogno di passare completamente attraverso le impostazioni di bit di più registri per impostare le periferiche come porte IO o timer, per esempio.
ESP32
L’ESP32 è un microcontrollore della Espressif Systems. Come mostrato in figura 3, ha tutte le caratteristiche su un tipico microcontrollore a 32 bit.
Figura 5 – Modulo Espressif ESP32
Tuttavia, ciò che distingue questo particolare microcontrollore dagli altri è l’inclusione di hardware WiFi e Bluetooth sul chip.
Ciò include non solo gli stack di protocollo, ma anche i ricetrasmettitori radio effettivi. L’ESP32 è disponibile anche come piccolo modulo pre-certificato con antenna integrata.
Per le applicazioni che richiedono connettività WiFi o Bluetooth, l’ESP32 merita una seria considerazione. Il prezzo dell’ESP32 (sia chip discreto che modulo) è molto conveniente, soprattutto considerando il numero di caratteristiche e prestazioni racchiuse in questo chip.
Figura 6 – Schema a blocchi funzionale ESP32
Conclusione
Il microcontrollore è probabilmente il componente più importante che devi selezionare per il tuo prodotto. Passare a un nuovo microcontrollore mid-project può essere un incubo, quindi assicurati di avere questa scelta in anticipo.
Altri componenti di un progetto possono essere comunemente modificati senza richiedere modifiche massicce a livello di sistema. Questo non è il caso del microcontrollore che funge da nucleo del tuo prodotto.
Quando scegli un microcontrollore, vuoi generalmente sceglierne uno che dia al tuo prodotto un po ‘ di spazio per crescere. Ad esempio, se si determina che si richiedono 16 pin GPIO, non si desidera scegliere un microcontrollore con solo 16 pin GPIO.
Cosa succede se si decide di aggiungere un nuovo pulsante in futuro, quindi è necessario un altro pin GPIO? Se il tuo microcontrollore non ti dà spazio per crescere, potresti scoprire che gli aggiornamenti di design apparentemente semplici in futuro richiederanno una massiccia riprogettazione perché è necessario un nuovo microcontrollore.
D’altra parte, non si desidera selezionare più prestazioni o funzionalità di quanto si preveda.
Ad esempio, se il tuo prodotto monitora semplicemente la temperatura e l’umidità, non avrai mai bisogno di un microcontrollore avanzato a 32 bit che funziona a centinaia di MHz. Ciò sarebbe eccessivo che aggiungerà costi inutili e complessità di progettazione al tuo prodotto.
Invece, è necessario trovare il punto debole tra avere spazio per crescere, se necessario, ma ancora non pagare per le prestazioni o le caratteristiche non si sarà mai veramente bisogno.
Infine, non dimenticare di scaricare il tuo PDF gratuito: Ultimate Guide per sviluppare e vendere il tuo nuovo prodotto hardware elettronico. Riceverai anche la mia newsletter settimanale in cui condivido contenuti premium non disponibili sul mio blog.
Altri contenuti che potrebbero piacerti:
- Introduzione al Ultra High-Performance STM32H7 32-bit Microcontroller
- Introduzione al STM32CubeIDE per STM32 Microcontrollori
- ATmega versus STM32-Quale microcontrollore è meglio per la vostra applicazione
- Microcontrollore o microprocessore: Che è giusto per il vostro nuovo prodotto?
- Utilizzando Arduino come piattaforma di sviluppo Embedded
Scrivi una risposta o commento.