Come scegliere una piattaforma MCU? [chiuso]


43

Esistono numerose piattaforme MCU e una volta che qualcuno si è abituato a una, sono generalmente riluttanti a passare a un'altra piattaforma.

La mia domanda è: se oggi si iniziasse a utilizzare un MCU per attività di carattere generale, come si farebbe per sceglierne uno? Quali sono i punti vendita unici delle diverse piattaforme?


2
Facci sapere quali tipi di progetti e volumi hai in mente e ci aiuterà a rispondere alla domanda.
Rocketmagnet

3
General-purpose è molto troppo ampia. Non ha molto senso usare lo stesso uC per far lampeggiare un LED da bici e per un RTOS con un display LCD a colori touch ad alta risoluzione.
Wouter van Ooijen,

1
Sì, idealmente avresti diversi chip con cui hai familiarità per problemi di dimensioni diverse - ed essere pronto a prenderne uno nuovo se è adatto in modo univoco a un'attività.
Chris Stratton,

2
@WoutervanOoijen L'idea con questa domanda era la seguente: ci sono molte attività che una qualsiasi delle piattaforme può gestire facilmente (ad esempio attività per scopi generali). Uno è quindi completamente libero di scegliere tra piattaforme. In questo caso, i "fattori morbidi", ad es. Facilità d'uso, conteggio dei componenti esterni, ecc. Diventano dominanti. - Volevo scoprire cosa fanno bene / male le diverse piattaforme rispetto alle altre.
ARF

7
RELIGIONE
vicatcu,

Risposte:


30

A distanza di un anno, ho tenuto un discorso sul tema della raccolta dei microcontrollori (ci sono voluti circa 1,5 ore). Il pubblico era programmatori e produttori di software di alto livello. La maggior parte del pubblico non aveva precedenti esperienze in μC, il resto ha giocato solo con Arduino. Il numero di presenze tra il pubblico era di circa 30. Quindi, questo era un multicast, al contrario di una clinica individuale.

La diapositiva chiave nel discorso era questa:

Dimensioni

per confrontare i microcontrollori. L'elenco è in ordine decrescente.

  • Ambiente di sviluppo (catena di strumenti)
    • Sviluppo dell'ambiente
    • Ho menzionato l'ambiente di sviluppo?
  • Supporto
    • Note applicative
    • Supporto alla pari: conoscenza tribale, amici, forum, codici [sic]
  • Caratteristiche
    • Memoria
    • periferiche
    • Abilità di calcolo
  • Consumo di energia
  • Costo

ps

Dovrei definire l'ambito a cui questa mia risposta è limitata. Vedo questa domanda di selezione della piattaforma attraverso due tipi di obiettivi. Il primo è un prototipo. Il secondo è uno sviluppatore di attrezzature professionali con prezzi di strada dell'ordine di $ 3k e quantità in centinaia all'anno. Anche l'obiettivo per hobbisti non è lontano. In questi casi, il costo incrementale del microcontrollore è piccolo, rispetto al costo di sviluppo o al costo dell'attrezzatura professionale in cui si trova il microcontrollore.

Esiste ovviamente una prospettiva molto diversa della produzione di massa. Quando qualcuno sceglie un microcontrollore per un dispositivo economico che verrà prodotto in grandi quantità (i giocattoli tradizionali sono un buon esempio), saranno guidati dal costo dell'hardware. Un modesto risparmio nel costo dell'hardware moltiplicato per un grande volume di produzione (in centinaia di migliaia o più) può giustificare la sofferenza derivante dall'uso di un ambiente di sviluppo ingombrante e un microcontrollore a prezzi convenienti con un supporto mediocre.


Ti concentri sull'ambiente di sviluppo. Ha senso per me. Quali sono state le tue conclusioni?
ARF

@ArikRaffaelFunke Bene, quei proiettili nel mio post sopra sono le conclusioni. Non abbastanza conclusivo? Il mio obiettivo per il discorso era: (1) Fornire un elenco minimo delle domande, che devono essere poste durante il processo di selezione. (2) Mostra dove e come cercare risposte. Ho specificamente evitato di trarre delle conclusioni difficili in tal senso: la famiglia X è buona se ..., la famiglia Y è buona se ...
Nick Alexeev

1
Per piccoli volumi e requisiti tipici, sì. Ma a volte devi scegliere la migliore tecnologia. Oppure, se il volume è enorme, può essere giustificato un notevole mal di testa in fase di sviluppo se si risparmia qualche centesimo per widget, incluso avere soluzioni basate su parti concorrenti testate e pronte a saltare.
Chris Stratton,

1
@ChrisStratton Il consumo di energia è un'altra cosa [oltre agli effetti ad alto volume di produzione], che a volte può giustificare qualche mal di testa. Poco si può fare, se vuole un funzionamento a bassissima potenza, e l'UC (che ha scelto) non può supportarlo.
Nick Alexeev

9
L'attenzione per l'ambiente di sviluppo è assolutamente giusta. Potresti avere il miglior chip al mondo ma se non riesci a programmare ed eseguire il debug di quel dannato oggetto potrebbe anche essere un mattone. Ho sentito cose positive su NXP, ma nessuna esperienza diretta. Pensavo che Freescale fosse povero, ma poi ho provato TI (MSP e poi DM36x) e ora Freescale è un faro luminoso di brillantezza nei miei occhi. I migliori consigli con QUALSIASI ambiente di sviluppo: costruiscilo / installalo in una macchina virtuale e mantienilo in uno stato perfettamente funzionante in modo che non si rompa durante lo spostamento dei computer / l'aggiornamento del sistema operativo ecc ...
John U

25

Poiché questa domanda non ha prodotto del tutto il confronto della piattaforma che speravo, ho tentato di crearne uno anch'io studiando la letteratura e le altre risposte. Forse questo può aiutare qualcun altro in futuro.

Per favore fatemi sapere se ci sono errori o se ci sono informazioni che posso aggiungere.


Confronto della piattaforma

Note sul confronto:

  • IDE: i commenti si riferiscono alla versione gratuita

PIC:

  • di gran lunga i chip entry-level più economici
  • molti hanno regolatori di tensione interni
  • a un determinato prezzo, in genere hanno periferiche più e migliori
  • quasi standard di settore: ottime librerie e supporto per gli sviluppatori
  • IDE: simulazione e debugging offline completi, eccezionali e basati su NetBeans
  • debugger di terze parti: circa $ 25
  • vastissima gamma di pacchetti
  • punti di vendita unici: 1. XLP = dispositivi a bassissima potenza disponibili; 2. molti chip moderni hanno il modulo di rilevamento capacitivo per pulsanti a sfioramento, ecc.

AVR:

  • L'AVR è generalmente in ritardo rispetto alla registrazione delle periferiche ed è leggermente più costoso. Nel complesso, tuttavia, AVR è molto simile ai PIC in termini di funzionalità e prezzo.
  • I chip AVR a 8 bit sono più veloci dei chip PIC a 8 bit
  • emulatori di terze parti: circa $ 20
  • vastissima gamma di pacchetti

Braccio Cortex-M:

  • architettura moderna del processore: nessuna memoria bancaria, buon multi-tasking
  • di gran lunga i dispositivi a 32 bit più economici
  • abbastanza facile da spostare tra chip diversi e produttori diversi
  • i dispositivi richiedono generalmente più componenti esterni rispetto ai PIC
  • dispositivi USB molto economici con bootloader ROM: NXP LPC1342 / LPC1343
  • ragionevole supporto della biblioteca
  • IDE: ragionevole, nessuna simulazione offline
  • L'interfaccia SWD consente la programmazione, il debug e la traccia all'interno del sistema con hardware facile da costruire (
  • i chip NXP economici sono disponibili solo in pacchetti a passo ridotto o senza pin
  • punti di vendita: 1. piattaforma a 32 bit più economica; 2. piattaforma più economica con bootloader ROM USB

PSoc: (dalla risposta di Rocketmagnet)

  • re quando si tratta di periferiche analogiche: un determinato chip può essere riconfigurato internamente per fornire diverse periferiche analogiche e digitali
  • significativamente più costoso dei PIC
  • IDE: eccellente
  • Programmatore $ 88 (consente il debug?)
  • solo pacchetti SMD

Elica: (dalla risposta di Rocketmagnet)

  • MCU multi-core: diversi core possono lavorare similmente su compiti diversi
  • elimina / riduce (?) la necessità di interrupt tradizionali
  • poche periferiche hardware, devono essere esplicitamente codificate per funzionare su uno dei core, offre un'incredibile flessibilità
  • debole quando si tratta di periferiche analogiche
  • IDE: eccellente
  • Pacchetto DIP disponibile

Confronto per applicazione

USB:

"Legenda" per l'elenco seguente:

  • bootloader = bootloader USB preprogrammato
  • regolatore di tensione = può essere alimentato dal bus senza regolatore esterno
  • pullup = nessuna necessità di pullup esterno
  • impedenza di adattamento = nessuna necessità di resistori di adattamento esterni
  • oscillatore di precisione = non necessita di cristallo esterno

Proprietà del dispositivo meno costoso: (in circa ordine di prezzo)

  • PIC: 8 bit, bassa e piena velocità, regolatore di tensione, pullup, adattamento di impedenza, protezione ESD
  • NXP: 32 bit, bootloader, solo a piena velocità, protezione ESD
  • Freescale: 8 bit, solo bassa velocità, regolatore di tensione, adattamento impedenza, protezione ESD
  • Atmel: 8 bit, bootloader, solo a piena velocità, regolatore di tensione, pullup, protezione ESD
  • STM: 32 bit, bootloader, solo velocità massima, pullup, adattamento impedenza, protezione ESD
  • Silicon Laboratories: 8 bit, bassa e piena velocità, regolatore di tensione, pullup, adattamento dell'impedenza, oscillatore di precisione
  • TI: 32 bit, bootloader, bassa e piena velocità, altre proprietà sconosciute
  • PSoc: configurabile come modulo, altre proprietà sconosciute
  • Elica: 32 bit, solo bitbanging

Ethernet:

  • PIC: dispositivo più economico con PHY integrato

1
Poche note qui: l'elica non ha affatto interruzioni e non c'è supporto per il debug nell'IDE ufficiale. Invece, il meccanismo di debug preferito sembra essere quello di collegare l'oggetto a una TV e utilizzare una libreria fornita che visualizza le variabili sullo schermo. Inoltre non c'è completamento del codice, nessun simulatore, nessuna integrazione con i sistemi di gestione del codice, implementazione insolita di include ... Inoltre non ci sono periferiche hardware tranne i due contatori per core, per quanto ne so.
AndrejaKo,

2
Nota sull'elica - NON ha interruzioni. A tutti . Se hai bisogno di qualcosa che assomigli a un interrupt tradizionale, fai girare un core di CPU aggiuntivo e lo fai aspettare.
Connor Wolf,

4
Tale elenco è quasi inevitabilmente inutile e obsoleto. Tutti i produttori sono in competizione tra loro tutto il tempo e la maggior parte cerca di offrire qualcosa in ogni categoria: fai un sondaggio quando ne hai bisogno, scegli una soluzione e e se funziona corri con esso fino a quando non ne hai bisogno per cui esiste una soluzione migliore.
Chris Stratton,

2
Per quello che vale, puoi includere anche la linea MSP430 qui per il suo consumo ultra-basso consumo
boardbite

2
"Sistemi integrati / microprocessori particolari" contiene informazioni simili su come scegliere un processore, che allo stesso modo può essere modificato per mantenerlo (si spera) aggiornato e relativamente neutro.
David

7

La tua scelta di MCU dipende molto dal tipo di progetti su cui stai lavorando. Stai realizzando dispositivi ad alto volume, super economici e semplici come luci lampeggianti per bici? Stai sviluppando robot prototipo complessi che hanno a che fare con numerosi IO Device e sensori bizzarri?

Lavoro principalmente su quest'ultimo. Il problema principale per me è cercare di trovare microcontrollori con il set di periferiche che desidero. Questo è molto difficile poiché i nostri requisiti non sembrano essere mainstream. Vogliamo cose come 5 canali PWM, 5 decodificatori in quadratura, 2 porte SPI non standard e un UART con IO negato.

Le uniche MCU che ho visto in grado di gestire facilmente quel tipo di requisiti sono il PSoC e l'elica.

Chip dell'elica

L'elica è fondamentalmente otto MCU a 32 bit in un singolo chip. Se si desidera un tipo di periferica, è sufficiente programmare una delle MCU per eseguire quel lavoro. Quindi puoi avere quello che vuoi.

PSoC

I PSoC sono disponibili in due versioni, 3 e 5. Il 3 è un nucleo 8051 e il 5 è una corteccia ARM M3. Nel chip sono inoltre inclusi blocchi riconfigurabili digitali e analogici che possono essere trasformati in una vasta gamma di periferiche: ADC, filtri, op-amp, DAC, SPI, UART, decodificatore in quadratura, generatore CRC, ecc.

L'ambiente di sviluppo è fantastico. Hai la solita modifica del codice sorgente di un IDE tipico, ma hai anche un editor schematico. Puoi letteralmente collegare qualsiasi circuito digitale che ti piace, collegando le periferiche con porte, infradito, ecc. Hai bisogno di 5 PWM? Facile, inseriscili nello schema, collegali e via. Puoi persino scrivere le tue periferiche in Verilog se vuoi qualcosa che non viene fornito. Gran parte della tua applicazione può essere semplicemente implementata in questo tipo di hardware.

Il vero vantaggio è che puoi rimanere con un solo chip, sapendo che può affrontare molti dei progetti che vorresti realizzare in futuro. Quello che ho trovato fastidioso dei PIC è stato costantemente trascinato attraverso dozzine di dispositivi alla ricerca di quello che aveva il particolare set di periferiche di cui avevo bisogno. Ora non ho questo problema.


L'elica è un concetto curioso. Devo pensarci un po 'su quello. Per quanto riguarda il PSoC: ho considerato quelli in passato per l'incredibile flessibilità, ma la necessità di un programmatore da $ 250 lo ha reso praticamente un antipasto per me.
ARF

@ArikRaffaelFunke - Il programmatore costa solo $ 88 , meno della metà del prezzo dell'ICD3 .
Rocketmagnet,

@ArikRaffaelFunke - un'altra considerazione è l'imballaggio. Se hai intenzione di costruire i tuoi prototipi, è molto più facile lavorare con i pacchetti DIP. La maggior parte dei PIC e ATmel AVR sono disponibili in DIP, così come l'elica. I PSoC 3 e 5 no.
Tcrosley,

3
schmartboard ha una soluzione
smt

1
@ quantum231: L'ho considerato, ma: 1) Gli FPGA sembravano generalmente più grandi e più costosi dei microcontrollori (e i robot sono spesso disperatamente a corto di spazio). E 2) Non ho molta esperienza con gli FPGA, ed è sempre una seccatura dover imparare un set di strumenti e un modo di pensare completamente diversi solo per qualche applicazione minore.
Rocketmagnet,


3

L'uso di più di una piattaforma va bene. Selezionando il migliore per ciascun lavoro e anche la disponibilità di codice ed esempi relativi al lavoro.

Molti di loro hanno buoni strumenti di sviluppo, Arduino ha Visual Studio, Pic ha un ottimo strumento e così anche gli altri. Quindi, per me, è quanto velocemente e facilmente riesco a fare bene il lavoro, + quante persone open source lavorano sulla stessa cosa?


Ma come si possono trovare tali informazioni senza essere fuorvianti dal disordine del marketing. Voglio dire, dobbiamo trovare persone che hanno usato l'hardware e la toolchain per ottenere tutte queste informazioni. Come trovi tali comunità nel tuo lavoro? Oppure ti affidi a ciò che ti dice l'ingegnere delle applicazioni?
quantum231,

Puoi porre domande su vari forum come questo. Spiega la tua richiesta e chiedi aiuto
Visual Micro,

2

I microcontrollori sono un mondo in rapido cambiamento, ci sono molti vantaggi nell'apprendimento degli attuali chip "in" e l'IDE più famoso è il fatto di ricevere aiuto dalla comunità. Come persona PIC direi che Aduino probabilmente ha le migliori IDE e schede di sviluppo per i principianti al momento e puoi aggiungere molto a una scheda aduino di base senza toccare un saldatore.

Chiunque utilizzi un aduino per cose della vita reale potrebbe presto voler andare avanti, ma a quel punto avrai imparato un sacco di elettronica digitale di base e un buon sottoinsieme di C per usare facilmente qualcosa di più adatto.

Come qualcuno ha detto che hai scelto il chip per il tuo progetto, ho visto alcuni progetti che usano chip ARM come semplici sensori di temperatura o convertitori AD, allo stesso modo in cui ho visto aduinos e PIC 16 spinti al limite per generare un gioco di invasori spaziali, FPGA sono galso reat ed è bello capire HDL se stai seriamente andando nel design dell'elettronica .. ma sfortunatamente non ci sono molti progetti là fuori nel mondo reale in cui dovrai usare uno dei lavori più a basso volume, progettazione rapida e prezzo limitato e questo è dove l'uC a 8 bit regna sovrano


Vedo, quali sono le limitazioni di Arduino secondo cui una persona potrebbe indurre una persona a superarla? ARM ha una potenza di elaborazione maggiore rispetto a PIC e Arduino, ha periferiche non presenti in PIC e Arduino o la sua toolchain è superiore a quella esistente per PIC e Arduino? Perché così tanto rumore sui chip basati su ARM. So che hanno un consumo energetico molto basso, ma perché altrimenti ARM dovrebbe essere scelto per progetti "seri"?
quantum231,

1

Poiché molte delle risposte pubblicate si concentrano sull'uso degli hobbisti, ecco che arrivano varie raccomandazioni dirette solo agli sviluppatori professionisti.

Requisiti minimi nudi
Se l'MCU non soddisfa tutti questi requisiti , non dovrebbe essere utilizzato.

  • Stato in produzione da almeno 1 anno.
  • Il silicon errata è disponibile ed è stato rivisto almeno una volta.
  • Cane da guardia interno.
  • Rilevamento interno di bassa tensione / scarica.
  • Memoria flash su chip.
  • Protezione ESD.
  • JTAG / SWD o qualche interfaccia di debug a filo singolo.
  • Il core utilizza byte a 8 bit e la firma del complemento di 2.
  • Campioni e schede di valutazione prontamente disponibili.
  • Ha supporto tecnico reattivo direttamente dal produttore.

Segnali di pericolo - hardware MCU
Queste sono cose che non dovresti perdere tempo nell'anno 2019.

  • Oscure modalità di indirizzamento che devono essere gestite dal programmatore. Compreso l'uso di parole chiave oscure e non standard per accedere ai dati ROM.
  • Gravi limiti della memoria dello stack o della profondità dello stack.
  • 16 bit int, che a sua volta presenta tutti i pericoli nascosti delle promozioni di numeri interi in linguaggio C.
  • Impossibile eseguire l'aritmetica a 16 o 32 bit senza iniziare a bollire.
  • Non intercetta se si esegue il codice nelle sezioni di dati.
  • Nessun buffer di traccia delle istruzioni.
  • Viene fornito con periferiche hardware esotiche per le quali non serve a nulla.

Segnali di avvertimento - catena degli attrezzi

  • Si affida a simulatori software su PC o in qualche modo a bootloader, anziché eseguire il flashing dell'intera MCU e utilizzare l'esecuzione / debug su chip.
  • Non viene fornito con driver / esempi / librerie predefiniti scritti da professionisti. Si affida agli sviluppatori che reinventano la ruota o ai forum Internet / open source.
  • Il CRT per il compilatore C non soddisfa i requisiti elencati qui .
  • Il compilatore C viene fornito con un lungo elenco di funzionalità C standard che non sono supportate.
  • Il compilatore C non supporta ancora C11 (indipendentemente dal fatto che si intenda utilizzarlo o meno).
  • L'IDE genera più strani strani errori del linker su di te la prima volta che provi un programma "ciao mondo".
  • Incontrare molti bug IDE o compilatore durante le prime settimane di utilizzo.

Questo è eccessivamente dogmatico. Hai completamente omesso i costi, le opzioni di packaging, (open source! = Non professionale), la qualità delle periferiche, ecc. Ecc. Non sono in generale in disaccordo con la maggior parte di questo, ma cose come "limiti [...] dello stack" solo significa che devi conoscere il trade off che ha portato a queste limitazioni in primo luogo.
Awjlogan

@awjlogan I costi e le opzioni di imballaggio sono molto specifici del progetto, quindi non ha senso rivolgersi qui. Non ho detto che l'open source non è professionale, ma un'azienda che esternalizza la propria catena di strumenti all'open source e il loro supporto a siti come SO non è professionale. Anche se i progetti open source con troppo pochi collaboratori non sono nemmeno professionali, come possiamo vedere con le porte del compilatore open source per varie MCU esotiche. Non ci dovrebbero essere motivi per scegliere un MCU con stack limitato nell'anno 2019.
Lundin,

Certo, sono specifici del progetto ma hai aumentato immediatamente il costo di base specificando 16/32 bit solo nel tuo elenco (scansione rapida di Digikey) e non ho visto un M0 a 6 pin di recente. Se non hai bisogno di qualcosa (incluso il tempo), non spendere soldi extra, sono le decisioni che dovresti prendere come professionista. Ma sì, una buona attrezzatura è così essenziale, non potrei essere più d'accordo.
Awjlogan

@awjlogan LPC81X è in circolazione da oltre 5 anni. Di recente ho scoperto Cypress PSoC4 che sembra interessante. E così via. Il numero di pin non è spesso un argomento, ma solo dimensione e tipo del pacchetto. Se riesci a tollerare QFN o BGA, puoi ottenere chip molto piccoli.
Lundin,

d'accordo su questo, le tue scelte si restringono a dimensioni ridotte (lo stesso per qualsiasi architettura). Il mio punto generale è che mentre tutte le cose sulla tua lista sono desiderabili, dovresti anche essere abbastanza informato da sapere quando romperle.
Awjlogan

0

Se stai andando per compiti di uso generale che possono avere un'elaborazione analogica e digitale, avrei preferito PSoC per il suo IDE, debugger e il numero assoluto di cose che puoi fare con quelle.

Ho usato PSoC3 al college per i miei progetti ed è abbastanza semplice da padroneggiare. L'unica cosa è che se hai bisogno di alcuni chip prestazionali, dovrai comunque ottenerli separatamente. Ha porte abbastanza buone. Quindi, se stai cercando alcuni chip prestazionali insieme al kit di sviluppo, è meglio scegliere componenti separati.


1
Potrebbe valere la pena aggiungere un po 'più di informazioni sul PSoC per renderlo più utile, un paio di altre risposte già lo coprono.
PeterJ,

@PeterJ: Volevo dare questo come commento per la risposta di Rocketmagnet ma non ho alcuna reputazione per dare un commento.
ganesh737,

C'è un motivo per cui non hai optato per il design basato su softcore come usare Nios II su Altera FPGA o microblaze / picoblaze su un FPGA Xilinx? Possono essere usati per ottenere lo stesso effetto del PSoC e direi che sono per molti versi una scelta superiore.
quantum231,

1
@ quantum231: lo accetterei, ma il limite principale per me in quel momento era il budget e questo era disponibile gratuitamente nel nostro reparto di elettronica.
ganesh737,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.