Come scegliere un microcontrollore ARM Cortex M3?


26

Sulla base dei miei requisiti approssimativi di essere nella gamma da 36 a 72 MHz, con 16kb + SRAM, 128kb + flash, essendo programmabile in C, ho deciso che per la mia applicazione voglio usare un MCU ARM Cortex M3.

La domanda è: quali criteri utilizzano le persone per scegliere quale versione M3 utilizzare? Esistono molti possibili fornitori come TI, ST, NXP, Freescale, ecc. Ecc.

Un principale fattore di differenziazione dal mio punto di vista sarebbe la facilità di programmazione. Idealmente, lo collaudo su un breakout / scheda di sviluppo, seguito dall'implementazione nel mio PCB.


11
Questa è una domanda utile, chiunque, per favore non chiuderla come principalmente basata sull'opinione .
Dzarda,

2
Scegliere il fornitore di chip è solo una parte del problema. Hai pensato a quale toolchain di sviluppo utilizzerai?
kkrambo,

5
Direi che l'importanza di scegliere il chip uC in una situazione come questa è gravemente sopravvalutata. Tutti i chip che soddisfano i requisiti di base lo faranno. Se ti attieni a C o C ++ e non hai bisogno di periferiche fantasiose puoi anche passare in seguito con un piccolo sforzo. Baserei la mia scelta sulla quantità di supporto che puoi ottenere da www, fornitori, gruppi (utenti), elenchi, forum, ecc. A cui hai facile accesso.
Wouter van Ooijen,

5
"Ci sono una dozzina di produttori dello stesso core. Che tipo di cose guardano le persone per aiutarle a sceglierne una?" mi sembra una bella domanda.
Scott Seidman,

5
È la domanda con il punteggio più alto nell'elenco delle nostre 250 più recenti, con tre etichette preferite. Con queste statistiche, se questo è OT, potremmo considerare di chiedere il perché. Penso che sia abbastanza chiaro che il poster considera la "facilità di programmazione" come UNO dei criteri che sta attualmente usando, e sta chiedendo di più. Di quattro risposte, solo una formula una chiara raccomandazione per un responsabile del trattamento e le altre discutono tutti i criteri che utilizzano per effettuare una selezione. Ho fatto una piccola modifica che dovrebbe rendere la domanda più sull'argomento, ma mi è sembrato abbastanza chiaro prima della modifica.
Scott Seidman,

Risposte:


19

Penso che @markt sia sicuramente nel posto giusto: Toolchain, periferiche, pacchetti, devkit.

Ne aggiungerò alcuni e forse ne toglierò alcuni. La toolchain è certamente importante, ma FREE può o meno esserlo. A volte, lavorare senza un vero supporto può essere più costoso di quanto si pensi, e l'uso di un pacchetto commerciale ragionevole può valere la pena per una determinata situazione. A volte, anche essere in grado di superare un controllo approfondito della licenza è importante e l'utilizzo di uno strumento gratuito con una licenza restrittiva può mordere in seguito.

Una buona libreria CMSIS per supportare il microcontrollore è un must per me. CMSIS - Standard di interfaccia software per microcontroller Cortex - arm.com/products/processors/cortex-m/… - è uno strato di astrazione hardware per microcontrollori serie Cortex-M. In teoria, se una libreria è conforme a CMSIS, è indipendente dal fornitore ed è più facile scambiare famiglie diverse e non è necessario riapprendere un ambiente da zero per poter utilizzare la libreria. Uno degli aspetti interessanti dell'ambiente ARM Cortex è la possibilità di cambiare piattaforma senza un sacco di sudore. Se scegli una piattaforma che non acquista nella struttura CMSIS, potresti non essere in grado di spostarti nel modo più conveniente.

Per me, le schede di sviluppo economiche e convenienti sono un must, ma questo può essere o meno importante come alcune altre cose (penso che la serie STM32 abbia delle incredibili schede madri). Se la famiglia ha schede di sviluppo molto convenienti ed economiche, allora è più probabile che tu trovi aiuto da una base di utenti più grande se ne hai bisogno. Inoltre, questi chip tendono ad essere in pacchetti SMT. Quando inevitabilmente fai esplodere un chip, o una porta su un chip, o un po 'su una porta su un chip, la sostituzione del chip è una PITA che comporta una rilavorazione SMD. Se puoi acquistare due o tre schede a $ 10- $ 15 ciascuna e sostituirle quando le rompi, non PENSERAI nemmeno di fare quella rilavorazione SMD!

Pensa "Extra". Potresti aver bisogno di qualcosa al di sopra e al di là di ciò che è considerato un "periferico". Ad esempio, potresti avere pesanti esigenze di bluetooth e potresti scegliere di utilizzare Nordic Semiconductor per quel tipo di supporto. Potresti prendere in considerazione alcune altre cose, come quanto è facile il bootloading, ecc.

Pensa alla documentazione. Sono stato un po 'meno impressionato da quanto possa essere difficile sfogliare parte della documentazione STM.


+1 Totalmente d'accordo. L'anno scorso ho iniziato con ARM Cortex-M3 / M4 usando STM32. Avevo quasi completato un progetto STM32F207 quando abbiamo effettuato il passaggio a STM32F407 in base al prezzo / disponibilità. Era un drop-in per l'hardware e le modifiche al software erano banali. La documentazione e la complessità lo hanno reso un po 'doloroso da imparare, ma il design è solido e vale la pena. Uso il compilatore GCC (gratuito) per scrivere codice di prova e la versione di valutazione gratuita limitata di codice Keil per scrivere / testare i driver di esempio. Il nostro programmatore ha una licenza per il compilatore Keil completo. Entrambi sembrano solidi.
Tut

1
@NickHalden, "ARM" concede in licenza il core ARM ai chipmaker che li confezionano e aggiungono periferiche. CMSIS - Standard di interfaccia software per microcontroller Cortex - arm.com/products/processors/cortex-m/… - è uno strato di astrazione hardware per microcontrollori serie Cortex-M. In teoria, se una libreria è conforme a CMSIS, è indipendente dal fornitore ed è più facile scambiare famiglie diverse e non è necessario riapprendere un ambiente da zero per poter utilizzare la libreria.
Scott Seidman,

1
@YoungMoney Scegli il più economico che ti darà almeno il doppio delle risorse di cui pensi di aver bisogno.
markt

1
Sviluppa in grande, solo per evitare che le cose si blocchino. Una volta che hai una buona conoscenza di quali risorse hai bisogno, riduci.
Scott Seidman,

1
Le toolchain gratuite sono importanti in un contesto professionale, non a causa dei costi, ma a causa della sicurezza dell'accesso : scegli una toolchain bloccata e la tua capacità di mantenere il progetto è messa in pericolo da licenze che possono scadere o non essere disponibili per il tuo laptop da viaggio o collaboratore, chiavi hardware che possono andare perse, server di licenza che possono essere scollegati dopo alcuni anni, ecc. La maggior parte dei progetti incorporati ha una durata molto superiore alle versioni dell'hardware desktop e del sistema operativo utilizzati per svilupparli e la possibilità di ripristinare l'originale gli strumenti per il futuro sono importanti!
Chris Stratton,

14
  1. Cerca toolchain gratuiti , RTOS e supporto JTAG / SWD a basso costo.
  2. Considera quali pacchetti sei in grado / disposto a lavorare - se DIP è un must, escludi i fornitori di silicio che non offrono pacchetti DIP.
  3. Guarda quali periferiche sono in offerta e cosa è probabile che tu voglia / desideri.
  4. Cerca bang-for-buck - usa uno o più siti web dei grandi produttori di elettronica per confrontare le mele con le mele.

Dato il tuo desiderio di schede di sviluppo, considera ciò che è disponibile lì.

Se vieni da un'altra piattaforma (PIC, Atmel, ecc.) Accetta che ci sarà una buona curva di apprendimento in molte aree nel passaggio ad ARM, ma ne vale davvero la pena.


Sì, le toolchain gratuite sono importanti per la sicurezza dell'accesso futuro / alternativo del computer / ingegnere alternativo alla toolchain più che per i costi. Per le parti Cortex le toolchain sono abbastanza universali, quindi è più consapevole che puoi programmarle con un dispositivo di interfaccia SWD facile da lavorare che sarà disponibile o ricreabile e può essere guidato dal tuo sistema operativo attuale (e futuro) di scelta.
Chris Stratton,

5

Se non hai una forte preferenza (ad es. Prezzo, dimensioni, potenza, oltre a ciò che gli altri hanno elencato), prenderei in considerazione chi ti supporta. Se il produttore non risponde alle tue domande, potrebbe essere un problema. Oppure hanno un distributore locale con un FAE (Field Applciation Engineer) che puoi chiedere? Ciò è particolarmente importante per le piccole aziende e gli hobbisti.

Alcune parti potrebbero non essere disponibili in piccole quantità. Ad esempio, quelli che hanno DRAM nello stesso pacchetto sono rivolti a grandi acquirenti (> 10 k unità).


2

Probabilmente STM32L151VBT6 soddisfa le tue esigenze. Anche se l'abbiamo usato nella nostra azienda ha costi moderati e buoni in termini di consumo energetico. inoltre otterrai la maggior parte delle risorse di progettazione su http://www.st.com .

Le caratteristiche principali dell'MCU STM32L151VB sono:

Piattaforma a bassissima potenza Alimentazione da 1,65 V a 3,6 V

Da -40 ° C a 85 ° C / 105 ° C intervallo di temperatura

0,3 μA Modalità standby (3 pin di sveglia)

0.9 μA Modalità standby + RTC

0,57 μA Modalità di arresto (16 linee di sveglia)

1.2 μA Modalità di arresto + RTC

9 μA Modalità Run a bassa potenza

214 μA / MHz Modalità di esecuzione

Perdita I / O bassissima di 10 nA

<8 μs tempo di sveglia

Core: CPU ARM®Cortex ™ -M3 a 32 bit

Da 32 kHz a 32 MHz max

33.3 DMIPS peak (Dhrystone 2.1)

Unità di protezione della memoria

Gestione del reset e della fornitura

BOR ultra-sicuro a bassa potenza (reset del brownout) con 5 soglie selezionabili

POR / PDR a bassissima potenza

Rivelatore di tensione programmabile (PVD)

Sorgenti dell'orologio

Oscillatore a cristallo da 1 a 24 MHz

Oscillatore 32 kHz per RTC con calibrazione

RC interno 16 MHz ad alta velocità con rifilatura di fabbrica (+/- 1%)

RC interno a bassa potenza 37 kHz

Bassa velocità interna a bassa velocità da 65 kHz a 4,2 MHz

PLL per CPU clock e USB (48 MHz)

Bootloader pre-programmato

USART supportato

Supporto allo sviluppo

Debug del filo seriale supportato

JTAG e traccia supportati

Fino a 83 I / O veloci (73 I / O tolleranti a 5 V), tutti mappabili su 16 vettori di interrupt esterni

Ricordi:

Flash fino a 128 KB con ECC

Fino a 16 KB di RAM

Fino a 4 KB di vera EEPROM con ECC

Registro di backup a 80 byte

Driver LCD per un massimo di 8x40 segmenti

Supporta la regolazione del contrasto

Supporta la modalità lampeggiante

Convertitore step-up a bordo

Ricche periferiche analogiche (fino a 1,8 V)

ADC a 12 bit 1 Msps fino a 24 canali

Canali DAC 2 a 12 bit con buffer di uscita

2x comparatori a bassissima potenza (modalità finestra e capacità di riattivazione)

Controller DMA 7x canali

8x interfaccia di comunicazione periferiche

1x USB 2.0 (PLL interno a 48 MHz)

3x USART (ISO 7816, IrDA)

2x SPI 16 Mbits / s

2x I2C (SMBus / PMBus)

10 timer: 6x 16 bit con un massimo di 4 canali IC / OC / PWM, 2x timer di base a 16 bit, 2x timer watchdog (indipendente e finestra)

Fino a 20 canali di rilevamento capacitivo che supportano touchkey, sensori di tocco lineari e rotativi unità di calcolo CRC, ID univoco a 96 bit

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.