Kinetis gegen STM32

8

Ich suche nach einer neuen Anwendung für industrielle Steuerungen und habe sie bei meinen Suchanfragen auf zwei Mikrocontroller eingegrenzt, die gut zur Anwendung passen. Der STM32 und der Kinetis. Beide scheinen sehr fähig zu sein, und ich habe den STM32 bereits in einer anderen, etwas unabhängigen Anwendung verwendet. Ich mag die STM32-Familie, da es eine so große Auswahl an Konfigurationen gibt, die größtenteils Pin-kompatibel sind. Der Kinetis scheint jedoch für den Buck-Prozessor / Speicher etwas knalliger zu sein.

Meine Fragen an alle, die etwas mehr Erfahrung damit haben, sind ... Was sind einige der Vor- und Nachteile für jede Familie?

Ich bin mir ziemlich sicher, dass es hier nicht genau eine falsche Wahl für meine Bewerbung gibt, aber ich hätte gerne mehr Details von jemand anderem als Freescale und ST. Mir ist klar, dass die Details meiner Anwendung hier ein Faktor sein können, aber es ist eine sehr breite Anwendung, was die Funktionalität betrifft. Unsere größte Grenze, die uns dazu veranlasst hat, auf einen anderen Controller umzusteigen, ist der Speicher (~ 16k RAM 256k Flash).

Alle Einsichten wäre sehr dankbar. Vielen Dank

radix07
quelle
Der STM32F4 verfügt über einen Cortex-M4 mit Gleitkomma und DSP sowie bis zu 1 MB Flash und 192 kB RAM. Ein billiges Board mit mehreren interessanten Peripheriegeräten ist erhältlich.
Leon Heller
Konfigurationen (gleiche Pinbelegung unterschiedlicher Speicher und Verarbeitungsleistung) und Reife .. STM32 ist der
richtige
Zwei treten ein ... einer geht.
Joeforker

Antworten:

6

Von der STM32 (ST Microelectronics) und der Kinetis-Familie (Freescale) habe ich nur an der STM32-Prozessorfamilie gearbeitet, und daher kann ich meine Erfahrungen mit der STM32 detailliert beschreiben und hoffe, dass jemand anderes das Gleiche für die STM32 tun kann Kinetis, so können Sie die beiden gegenüberstellen. Diese Liste ist möglicherweise nicht vollständig und basiert einfach auf meiner Erfahrung.

PROS:

  1. ST bietet eine große Anzahl von Bibliotheken für jeden ihrer Prozessoren, die Sie kostenlos erhalten. Diese Bibliotheken enthalten eine umfangreiche Liste von Funktionen, die für die meisten grundlegenden Low-Level-Schnittstellen mit der Hardware erforderlich sind, und können Ihr Leben erheblich vereinfachen.

    zB void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Dies initialisiert das GPIOx-Peripheriegerät gemäß den im GPIO_InitStruct angegebenen Parametern.

    Füllen Sie einfach die GPIO-Struktur aus (und es gibt Beispielprojekte, die Sie durch diesen Prozess führen), und rufen Sie die Funktion GPIO_init auf. Dies erspart Ihnen das Nachschlagen von mindestens 4-5 Registern und das Herausfinden, was jedes Bit sein sollte.

  2. Ihre Mikrocontroller verfügen über die Leseschutzfunktion, mit der Sie Ihre IP-Adresse bis zu einem gewissen Grad, wenn nicht sogar vollständig, schützen können. Es gibt Unmengen von Mikrocontrollern, die das nicht wirklich gut machen.

  3. Sie verfügen über eine Familie von Mikrocontrollern mit geringem Stromverbrauch, ihre L1-Serie, die über verschiedene Energiesparfunktionen verfügen, die bei Bedarf ein- und ausgeschaltet werden können.

  4. Obwohl es viele Hersteller gibt, die jetzt ihre Versionen der ARM CM3-Kerne herstellen, wurden die Chips der F-Serie von ST einige Male überarbeitet, und obwohl sie nicht vollständig fehlerfrei sind, sind sie jetzt ziemlich ausgereift.

  5. Fast alle Varianten, an denen ich gearbeitet habe, haben Tonnen von Timern und anderen Peripheriegeräten, von denen man nie genug haben kann. :) :)

  6. Um Ihnen den Einstieg zu erleichtern, haben sie einige Beispielprojekte, die in ihre Evaluierungskarten programmiert werden können. Sie werden Ihnen fast immer kostenlos zur Verfügung gestellt. Obwohl ich denke, dass die meisten anderen Hersteller das gleiche tun würden.

Nachteile:

  1. Obwohl die oben genannten Bibliotheken definitiv viel helfen, sind einige der Funktionsnamen nicht intuitiv und es dauert eine Weile, bis Sie sich mit ihren Namenskonventionen vertraut gemacht haben. Dies gilt nicht für die gesamte Bibliothek, aber es gibt ein gutes Stück Code, das nicht gut kommentiert ist, und Sie müssen es wirklich lesen, um herauszufinden, was es tut.

  2. Wenn Sie ihre Bibliotheken verwenden und die MISRA-Prüfung für Ihr Projekt aktivieren möchten, werden unzählige Fehler / Warnungen angezeigt, da der Code nicht MISRA-kompatibel zu sein scheint. Sie müssen einen Weg finden, um ihre Bibliotheken von Ihrer MISRA-Prüfung auszuschließen. Es gibt Möglichkeiten, dies zu umgehen, aber sie erfordern ein wenig Arbeit, um dies zu tun.

  3. Die Dokumentation von ST für die Prozessoren, an denen ich gearbeitet habe, ist etwas schlecht. Ihre Datenblätter sind nicht sehr gut geschrieben. Die Informationen befinden sich nicht in einem zentralen / Hauptdokument. Es gibt ein sogenanntes Referenzhandbuch, jede Menge Anwendungshinweise und mindestens ein Datenblatt. Sie müssen diese Dokumente manchmal wirklich durchforsten, um die Informationen zu finden, nach denen Sie suchen.

    Sie beschreiben häufig GPIO-Ports, und eine empfohlene Einstellung für eines der Bits wird
    möglicherweise 50 Seiten später beschrieben.

Das ist alles, woran ich im Moment denken kann. Hoffentlich gibt Ihnen dies eine Vorstellung von den STM32-Produkten. Ich werde mehr hinzufügen, wenn mir noch etwas einfällt.

Ein Vorschlag wäre, ein Evaluierungsboard für beide Arten von Mikrocontrollern (Kinetis one und STM32 one) zu erwerben, die über die Peripheriegeräte verfügen, nach denen Sie suchen, und mit ihnen zu spielen.

Das gibt Ihnen ein wirklich gutes Gefühl, für das Sie Ihre Bedürfnisse am besten erfüllen.

IntelliChick
quelle
1
Ich wünschte, die Hersteller würden es unterlassen, dass ihre Bibliotheken für alles ihre eigenen Kennungen definieren und verwenden. Um einen GPIO-Port zu konfigurieren, müssen Sie alle Funktionsregister im Handbuch nachschlagen, um zu wissen, was die verschiedenen Modi bedeuten. Es wäre hilfreicher, Code direkt mit diesen Informationen schreiben zu können, als die Bibliothek und ihre Dokumentation zu untersuchen, um festzustellen, wie sie die Dinge definiert.
Supercat
@supercat Schauen Sie sich Infineons DAVE IDE an. Sie fügen im Grunde genommen das hinzu, was sie "APPs" über eine GUI nennen, und das DAVE-Ding kümmert sich für Sie um die Codegenerierung.
Chi
3

K70 hat sehr fehlerhaftes Silizium. Oft haben die von Ihnen beschriebenen Peripheriegeräte nur Lite-Funktionen. Es ist beispielsweise gut, den Cache mit externem Speicher zu verwenden. Wenn Sie diesen Speicher jedoch mit DMA verwenden, müssen Sie den Cache manuell leeren. K70 verfügt über einen LCD-Controller, aber es ist fast unmöglich, eine bessere Auflösung als 480 x 272 zu erzielen, was nicht besser ist als mit Standard-MCUs. Der K70 verfügt über einen Monsteruhrgenerator, der jedoch nur von wenigen Peripheriegeräten anstelle der Busuhr verwendet werden kann.
Das Wichtigste ist, dass ich festgestellt habe, dass das komplizierte Low-Power-Management einfach nicht funktioniert!

Vittorio Iovannelli
quelle
2

Ich gehe davon aus, dass Sie den Kinetis mit den STM32F4 Cortex-M4-Prozessoren vergleichen. Ich habe sie auch nicht verwendet, habe sie aber nach einer möglichen Verwendung in einem kommenden Projekt durchsucht. Es gibt auch M4-Gerätefamilien von TI-Stellaris, die von Atmel und NXP angekündigt wurden. Viele davon umfassen den Gleitkomma-Prozessor, viele serielle Schnittstellen und Timer.

Die Softwareunterstützung für die Prozessoren (Freescale und ST) sieht gut aus, da Freescale eine Schnittstellenbibliothek und ein lizenzfreies RTOS für ihre Teile bereitstellt. ST bietet eine Reihe von Schnittstellenbibliotheken, mit denen die Prozessoren und Peripheriegeräte konfiguriert und verwendet werden können.

ST-Geräte scheinen den Verarbeitungsgeschwindigkeitskrieg mit einer angegebenen Geschwindigkeit von 168 MHz zu gewinnen, wenn (IIRC) ein breiter Speicherbus zum Programm-Flash verwendet wird. Dies kann für Sie wichtig sein oder auch nicht.

Die Kinetis-Teile sind ausgereifter und seit fast einem Jahr erhältlich. Infolgedessen befindet sich mittlerweile eine ziemlich große Familie von Geräten in der Produktion mit einer Vielzahl von Schnittstellen und Peripheriegeräten. Die ST-Teile sind erst seit ungefähr einem Monat erhältlich, obwohl sie gleichzeitig mit der Bekanntgabe der Familie eine Reihe von Teilen veröffentlicht haben. Ihr Teilespektrum wird sich ähnlich wie das ihrer Cortex-M3-Familie erweitern.

uɐɪ
quelle
STM32 ist seit mehr als 2 Jahren verfügbar. Nur F4 ist seit einigen Monaten nicht mehr verfügbar, aber F1 / F2 ist seit mehr als 2 Jahren
verfügbar
Mir ist klar, dass es die STM32 M3-basierten Prozessoren schon lange gibt. Die Frage basiert auf den Kinetis-Teilen (M4-basiert), daher habe ich die verfügbaren M4-Prozessorfamilien verglichen.
uɐɪ
In der Tat. Aber wenn Sie M4 mit M3 vergleichen, gibt es kaum Unterschiede in Bezug auf den Rest der Blöcke, was mir Vertrauen gibt. Der ARM ist sowieso arm, es spielt keine Rolle, welche Version, da er von ARM selbst überprüft wird
Ktc
2

Meine Erfahrung mit STM32 und Kinetis K70 läuft darauf hinaus, uClinux auf diesen Prozessoren auszuführen (detaillierte Informationen zu diesen uClinux-Ports finden Sie hier ).

Wenn Sie beabsichtigen, externen RAM in Ihrer Anwendung zu verwenden, ist K70 meiner Meinung nach die bessere Wahl.

vladimir khusainov
quelle
Um meinen obigen Beitrag weiter zu erläutern, verfügt K70 über zwei 8-KB-Caches, einen für den I / D-Bus (der im Wesentlichen auf Speicherbereiche abzielt, aus denen Code ausgeführt werden kann), einen weiteren für den Systembus (der auf "Nicht-Code" -Speicher abzielt ). Nach dem, was wir in uClinux-Kontexten sehen, tragen die Caches dazu bei, die Gesamtsystemleistung auf eine ernsthafte Weise zu verbessern.
Vladimir Khusainov
1

Ich habe kürzlich eine Kundenanfrage beantwortet, die eng mit diesem Thread zusammenhängt. Hoffentlich sind diese Kommentare hilfreich.

+++++++++++

So heben Sie die Unterschiede zwischen K70 und STM32F2 hervor:

  • K70 ist Cortex-M4, während STM32F2 Cortex-M3 ist. Mit anderen Worten, K70 bietet On-Chip-Hardware-FPU- und DSP-Einheiten.

  • K70 kann den Cortex-M-Kern mit 150 MHz betreiben (obwohl die derzeit verfügbaren Geräte auf 120 MHz beschränkt sind). STM32F2 ist auf 120 MHz begrenzt.

  • K70 bietet On-Chip-DDR- und NAND-Flash-Schnittstellen, die sehr hohe Dichten für externe Speichergeräte ermöglichen.

  • K70 verfügt über einen On-Chip-Cache (2 separate 8-KB-Caches für E / A und Systembus). Dies ist eine sehr ernsthafte Leistung von externen Speichern.

  • K70 bietet verschiedene Sicherheitsmechanismen, um sicherzustellen, dass Software nicht mit externen Tools (JTAG-Debugger usw.) kopiert werden kann.

  • Der K70 verfügt über einen integrierten LCD-Controller sowie eine integrierte Touch-Oberfläche.

  • Ähnliche E / A-Schnittstellen, dies muss jedoch an den Anforderungen der jeweiligen Anwendung gemessen werden.

Wenn Sie in Ihren Anwendungen externen Speicher verwenden und / oder eine GUI-Oberfläche benötigen, ist K70 insgesamt ein klarer Gewinner. Außerdem ist K70 im Allgemeinen leistungsfähiger.

+++++++++++

vladimir khusainov
quelle
K7x hat 16-Bit-ADC mit PGA, während STM32 dies nicht hat.
Mehmet Fide