Kinetis vs STM32


8

Sto cercando una nuova applicazione di controlli industriali e dalle mie ricerche l'ho ridotta a 2 microcontrollori che sembrano adattarsi bene all'applicazione. STM32 e Kinetis. Entrambi sembrano molto capaci di fare il lavoro e ho già usato l'STM32 in un'applicazione diversa in qualche modo non correlata. Mi piace la famiglia STM32 dato che esiste una così vasta gamma di configurazioni che sono per la maggior parte compatibili con i pin. Il Kinetis tuttavia sembra essere un po 'più botto per il processore buck / memoria saggia.

Quindi le mie domande a chiunque abbia un po 'più di esperienza con questi sono ... Quali sono alcuni dei vantaggi e degli svantaggi per ogni famiglia?

Sono abbastanza sicuro che non ci sia esattamente una scelta sbagliata qui per la mia applicazione, ma vorrei ulteriori dettagli da qualcuno diverso da Freescale e ST. Mi rendo conto che i dettagli della mia applicazione possono essere un fattore qui, ma è un'applicazione molto ampia per quanto riguarda la funzionalità. Il nostro limite più grande che ci ha spinto a passare a un controller diverso è la memoria (~ 16k RAM 256k flash).

Qualsiasi opinione sarà molto apprezzata. Grazie


L'STM32F4 ha un Cortex-M4 con virgola mobile e DSP e fino a 1 MB di flash e 192 kB di RAM. È disponibile una scheda economica con diverse periferiche interessanti.
Leon Heller,

Configurazioni (stesso pin out diversa memoria e potenza di elaborazione) e maturità .. STM32 è la strada da percorrere ..
Ktc

Due entrano ... uno se ne va.
joeforker,

Risposte:


6

Della STM32 (ST Microelectronics) e della famiglia Kinetis (Freescale), ho lavorato solo sulla famiglia di processori STM32 e quindi, sarò in grado di dettagliare la mia esperienza con la STM32 e sperando che qualcun altro possa fare lo stesso per il Kinetis, quindi puoi contrastare i due. Questo elenco potrebbe non essere completo ed è semplicemente basato sulla mia esperienza.

PROFESSIONISTI:

  1. ST fornisce una vasta gamma di librerie per ciascuno dei loro processori che ottieni gratuitamente. Queste librerie contengono un ampio elenco di funzioni necessarie per eseguire la maggior parte dell'interfaccia di base a basso livello con l'hardware e possono semplificarti la vita.

    es. void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Inizializza la periferica GPIOx in base ai parametri specificati in GPIO_InitStruct.

    Basta compilare la struttura GPIO (e ci sono progetti di esempio che guidano l'utente attraverso questo processo) e chiamare la funzione GPIO_init. Questo ti evita di cercare almeno 4-5 registri e capire quale dovrebbe essere ogni bit.

  2. I loro microcontrollori hanno la funzionalità di protezione dalla lettura, che può aiutarti a proteggere il tuo IP in una certa misura, se non completamente. Ci sono tonnellate di microcontrollori là fuori, che non lo fanno davvero molto bene.

  3. Hanno una famiglia di microcontroller a bassa potenza, la loro serie L1, che hanno vari livelli di funzionalità di risparmio energetico che possono essere attivati ​​/ disattivati ​​quando necessario.

  4. Sebbene ci siano molti produttori che stanno attualmente realizzando le loro versioni dei core ARM CM3, i chip della serie F della ST hanno subito alcune revisioni e, sebbene non siano completamente privi di bug, ora sono abbastanza maturi.

  5. Quasi tutte le varianti su cui ho lavorato hanno tonnellate di timer e altre periferiche e non puoi mai averne abbastanza. :)

  6. Per iniziare, hanno alcuni progetti di esempio che possono essere programmati nelle loro schede di valutazione, che quasi sempre ti danno gratuitamente. Anche se penso che la maggior parte degli altri produttori farebbe lo stesso.

CONS:

  1. Sebbene le librerie sopra menzionate siano sicuramente di grande aiuto, tuttavia alcuni dei nomi delle funzioni non sono intuitivi e ci vuole un po 'di tempo per capire le convenzioni di denominazione. Questo non è vero per l'intera libreria, ma c'è un bel po 'di codice, che non è ben commentato, e dovrai davvero leggerlo per capire cosa sta facendo.

  2. Se stai usando le loro librerie e vuoi attivare la verifica MISRA per il tuo progetto, riceverai tonnellate di errori / avvisi poiché il loro codice non sembra essere conforme MISRA. Dovrai trovare un modo per escludere le loro librerie dal tuo controllo MISRA. Ci sono modi per aggirare questo, ma richiedono un po 'di lavoro per farlo.

  3. La documentazione di ST per i processori su cui ho lavorato è un po 'scarsa. I loro fogli dati non sono scritti molto bene. Le informazioni non sono contenute in un documento centrale / principale. C'è quello che chiamano un manuale di riferimento, tonnellate di note applicative e almeno un foglio dati. A volte devi davvero esplorare questi documenti per trovare le informazioni che cerchi.

    Descrivono spesso le porte GPIO e un'impostazione consigliata per uno dei bit
    potrebbe essere descritta più avanti 50 pagine.

Questo è tutto ciò a cui riesco a pensare in questo momento, spero che questo ti dia un po 'di idea sui prodotti STM32. Aggiungerò altro, se riesco a pensare ad altro.

Un suggerimento sarebbe quello di ottenere una scheda di valutazione per entrambi i tipi di microcontrollori (uno Kinetis e uno STM32), che hanno le periferiche che stai cercando e divertirti con loro.

Questo ti darà davvero una buona sensazione per quello che si adatta meglio alle tue esigenze.


1
Vorrei che i produttori si trattenessero dal definire e utilizzare le proprie librerie per tutto. La configurazione di una porta GPIO richiede la ricerca di tutti i registri delle funzioni nel manuale per sapere cosa significano tutte le diverse modalità; essere in grado di scrivere codice usando direttamente tali informazioni sarebbe più utile che dover quindi esaminare la libreria e la sua documentazione per vedere come ha definito le cose.
supercat

@supercat Dai un'occhiata a DAVE IDE di Infineon. In pratica aggiungi ciò che chiamano "APP" tramite una GUI e DAVE si occupa della generazione del codice per te.
Chi

3

K70 ha silicio molto difettoso. Spesso le periferiche che hai descritto hanno solo funzionalità lite; ad esempio, è utile utilizzare la cache con memoria esterna, ma se si utilizza questa memoria con DMA sarà necessario svuotare manualmente la cache. K70 ha un controller LCD, ma è quasi impossibile ottenere una risoluzione migliore di 480x272, che non è migliore di quanto si possa ottenere con MCU standard. Il K70 ha un generatore di clock mostro, ma solo poche periferiche sono in grado di usarlo al posto dell'orologio del bus.
La cosa più importante è che ho scoperto che la complicata gestione a bassa potenza semplicemente non funziona!


2

Suppongo che stai confrontando il Kinetis con i processori Cortex-M4 STM32F4. Nemmeno io l'ho usato, ma li ho esaminati per un possibile utilizzo in un progetto emergente. Ci sono anche famiglie di dispositivi M4 disponibili da TI-Stellaris e annunciate da Atmel e NXP molte delle quali includono il processore a virgola mobile, un sacco di porte seriali e timer.

Il supporto in termini di software per i processori (Freescale e ST) sembra buono con Freescale che fornisce una libreria di interfaccia e un RTOS gratuito per le loro parti. ST fornisce una serie di librerie di interfaccia che consentono la configurazione e l'uso dei loro processori e periferiche.

I dispositivi ST sembrano vincere la guerra della velocità di elaborazione con una velocità quotata di 168 MHz utilizzando (IIRC) un ampio bus di memoria per il flash del programma. Questo può o meno essere importante per te.

Le parti Kinetis sono le più mature, essendo disponibili da quasi un anno. Di conseguenza ora esiste una famiglia piuttosto vasta di dispositivi in ​​produzione con una vasta gamma di interfacce e set di periferiche. Le parti ST sono in circolazione da circa un mese, sebbene abbiano rilasciato alcune parti contemporaneamente all'annuncio della famiglia. La loro gamma di parti aumenterà in modo molto simile alla loro famiglia Cortex-M3.


STM32 è disponibile da 2+ anni .. Solo F4 è uscito da alcuni mesi ma F1 / F2 è stato là fuori più di 2 anni .. Lo stiamo usando ..
Ktc

Sono ben consapevole che i processori basati su STM32 M3 sono in circolazione da molto tempo. La domanda si basa sulle parti Kinetis (basate su M4), quindi stavo confrontando le famiglie di processori M4 disponibili.
uɐɪ

In effetti .. Ma se si confronta M4 con M3, c'è una differenza molto piccola in termini di resto dei blocchi che mi dà fiducia. l'ARM è comunque arm, non importa quale versione sarà controllata dallo stesso ARM
Ktc

2

La mia esperienza con STM32 e Kinetis K70 si riduce all'esecuzione di uClinux su questi processori (informazioni dettagliate su queste porte uClinux disponibili qui ).

Se intendi utilizzare RAM esterna nella tua applicazione, K70 sarebbe una scelta migliore, secondo me.


Per approfondire ulteriormente il mio post sopra, K70 ha due cache da 8 KB, una per il bus I / D (che si rivolge essenzialmente a regioni di memoria che potrebbero essere utilizzate per eseguire codice da), un'altra per il bus di sistema (target memorie "non di codice" ). Da quello che stiamo vedendo in contesti di uClinux, le cache aiutano a migliorare le prestazioni complessive del sistema in un modo un po 'serio.
Vladimir Khusainov,

1

Recentemente ho risposto a una domanda del cliente strettamente correlata a questa discussione. Speriamo che questi commenti siano utili.

+++++++++++

Per evidenziare le differenze tra K70 con STM32F2:

  • K70 è Cortex-M4 mentre STM32F2 è Cortex-M3. In altre parole, K70 fornisce unità FPU e DSP hardware su chip.

  • K70 può eseguire il core Cortex-M a 150 MHz (sebbene i dispositivi attualmente disponibili siano limitati a 120 MHz). STM32F2 è limitato a 120 MHz.

  • K70 offre interfacce DDR e NAND Flash su chip, consentendo densità molto elevate per i dispositivi di memoria esterni.

  • K70 ha una cache su chip (2 cache separate da 8 KB per I / D e bus di sistema). Questa performance di avvio di memorie esterne è davvero molto seria.

  • K70 offre vari meccanismi di sicurezza per garantire che il software non possa essere copiato utilizzando strumenti esterni (debugger JTAG, ecc.).

  • K70 ha un controller LCD integrato e un'interfaccia touch integrata.

  • insieme simile di interfacce I / O ma questo deve essere misurato rispetto ai requisiti di un'applicazione specifica.

Nel complesso, se stai usando memoria esterna nelle tue applicazioni e / o hai bisogno di un'interfaccia GUI, K70 sarebbe un chiaro vincitore. Inoltre, K70 è più performante, in generale.

+++++++++++


K7x ha un ADC a 16 bit con PGA mentre non quello di STM32.
Mehmet Fide,
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.