Wie wählt man einen ARM Cortex M3 Mikrocontroller aus?

Basierend auf meinen groben Anforderungen, im Bereich von 36 bis 72 MHz zu sein, über 16 kb+ SRAM, 128 kb+ Flash zu verfügen und in C programmierbar zu sein, habe ich mich entschieden, dass ich für meine Anwendung eine ARM Cortex M3 MCU verwenden möchte.

Die Frage ist, nach welchen Kriterien wird die M3-Version ausgewählt? Es gibt viele mögliche Anbieter wie TI, ST, NXP, Freescale usw. usw.

Ein Hauptunterscheidungsmerkmal aus meiner Sicht wäre die einfache Programmierung. Idealerweise teste ich es auf einem Breakout-/Entwicklungsboard, gefolgt von der Implementierung in meiner eigenen Leiterplatte.

Dies ist eine nützliche Frage, bitte schließen Sie sie nicht als primär meinungsbasiert .
Die Auswahl des Chipanbieters ist nur ein Teil des Problems. Haben Sie darüber nachgedacht, welche Entwicklungs-Toolchain Sie verwenden werden?
Ich würde sagen, dass die Bedeutung der Wahl des uC-Chips in einer solchen Situation stark überschätzt wird. Alle Chips, die die Grundvoraussetzungen erfüllen, sind geeignet. Wenn Sie bei C oder C++ bleiben und keine ausgefallene Peripherie benötigen, können Sie sogar später mit wenig Aufwand umsteigen. Ich würde meine Wahl auf die Menge an Unterstützung stützen, die Sie von www, Anbietern, (Benutzer-)Gruppen, Listen, Foren usw. erhalten können, auf die Sie einfachen Zugriff haben.
Ungeachtet des Wertes dieser Frage (den ich in keiner Weise bestreite, da es sich um eine sehr nützliche Frage handelt), handelt es sich immer noch um eine hauptsächlich auf Meinungen basierende Frage, da hier keine eindeutige Referenz angegeben werden kann, und wir sind es im Grunde Leute fragen: "Was denkst du?" - FAIR, diese Art von Frage ist nicht für SE-Sites geeignet ... außerdem basieren derzeit alle gegebenen Antworten auf Meinungen .
NB, ich markiere es nicht nur, weil es möglich ist , diese Frage auf eine nicht-POB-Weise zu beantworten - aber ich bezweifle sehr, ob das jemals passieren wird. Wie auch immer, diese Frage wurde von mir "mental markiert".
Sollte dies nicht off-topic sein, da es um Empfehlungen für bestimmte Produkte geht?
Im Allgemeinen denke ich, dass die Auswahl von Komponenten ein wichtiger Teil davon ist, ein EE zu sein. Diese Meinung basiert jedoch auf einer zugrunde liegenden Frage zur "Einfachheit der Programmierung".
„Es gibt ein Dutzend Hersteller desselben Kerns. Auf welche Art von Dingen achten die Leute, um ihnen bei der Auswahl zu helfen?“ scheint mir eine gute Frage zu sein.
Es ist die Frage mit der höchsten Punktzahl in der Liste unserer 250 neuesten, mit drei Lieblingslabels. Wenn dies OT ist, könnten wir uns angesichts dieser Statistiken fragen, warum. Ich denke, es ist ziemlich klar, dass der Poster "einfache Programmierung" als EINES der Kriterien betrachtet, die er derzeit anwendet, und er verlangt nach mehr. Von vier Antworten spricht nur eine eine klare Empfehlung für einen Controller aus, die anderen gehen alle darauf ein, nach welchen Kriterien sie eine Auswahl treffen. Ich habe eine kleine Bearbeitung vorgenommen, die die Frage themenbezogener machen sollte, aber es schien mir vor der Bearbeitung ziemlich klar zu sein.
Vorhin habe ich in einem anderen Thread meine Liste der Auswahlkriterien geschrieben . Es ist so breit und agnostisch, wie ich es machen könnte.
Komisch, wie diese Dinger anspringen! Ich habe erst diese Woche herausgefunden, dass es schwierig ist, eine VID-Unterlizenz von STM für kurze Produktionsläufe von USB-Geräten zu erhalten. Bei Microchip hatte ich das Problem noch nie.

Antworten (4)

Ich denke, @markt ist auf jeden Fall am richtigen Ort: Toolchain, Peripherie, Pakete, Devkits.

Ich werde ein paar hinzufügen und vielleicht ein paar entfernen. Toolchain ist sicherlich wichtig, aber KOSTENLOS kann es sein oder auch nicht. Manchmal kann das Arbeiten ohne echte Unterstützung teurer sein, als Sie denken, und die Verwendung eines vernünftigen kommerziellen Pakets kann sich in einer bestimmten Situation durchaus lohnen. Manchmal ist es auch wichtig, eine gründliche Lizenzprüfung bestehen zu können, und die Verwendung eines kostenlosen Tools mit einer restriktiven Lizenz kann Sie später beißen.

Eine gute CMSIS-Bibliothek zur Unterstützung des Mikrocontrollers ist für mich ein Muss. CMSIS – Cortex Microcontroller Software Interface Standard – arm.com/products/processors/cortex-m/… – ist eine Hardware-Abstraktionsschicht für Mikrocontroller der Cortex-M-Serie. Wenn eine Bibliothek CMSIS-kompatibel ist, ist sie theoretisch herstellerunabhängig, und es ist einfacher, verschiedene Familien auszutauschen, und Sie müssen eine Umgebung nicht von Grund auf neu erlernen, um die Bibliothek verwenden zu können. Einer der attraktiven Aspekte der ARM-Cortex-Umgebung ist die Möglichkeit, Plattformen ohne viel Schweiß zu wechseln. Wenn Sie sich für eine Plattform entscheiden, die sich nicht in die CMSIS-Struktur einkauft, können Sie sich möglicherweise nicht so bequem bewegen.

Für mich sind billige und praktische Entwicklungsboards ein Muss, aber dies kann oder muss nicht so wichtig sein wie einige andere Dinge (ich denke, die STM32-Serie hat erstaunliche Entwicklungsboards). Wenn die Familie über sehr praktische und billige Entwicklungsboards verfügt, ist es wahrscheinlicher, dass Sie Hilfe von einer größeren Benutzerbasis finden, wenn Sie sie benötigen. Außerdem befinden sich diese Chips in der Regel in SMT-Gehäusen. Wenn Sie unweigerlich einen Chip oder einen Port auf einem Chip oder ein Bit auf einem Port auf einem Chip sprengen, ist das Ersetzen des Chips eine PITA, die eine SMD-Nacharbeit erfordert. Wenn Sie zwei oder drei Platinen für jeweils 10 bis 15 US-Dollar kaufen und sie ersetzen können, wenn Sie sie kaputt machen, werden Sie nicht einmal daran denken, diese SMD-Nachbearbeitung durchzuführen!

Denken Sie an „Extras“. Möglicherweise benötigen Sie etwas, das über das hinausgeht, was als "Peripheriegerät" gilt. Vielleicht haben Sie zum Beispiel große Bluetooth-Anforderungen und entscheiden sich vielleicht für Nordic Semiconductor, um diese Art von Unterstützung zu erhalten. Sie könnten einige andere Dinge in Betracht ziehen, z. B. wie einfach das Booten ist usw.

Denken Sie an Dokumentation. Ich war etwas weniger als beeindruckt davon, wie schwer es sein kann, sich durch einige der STM-Dokumentationen zu wühlen.

+1 Voll und ganz einverstanden. Letztes Jahr habe ich mit ARM Cortex-M3/M4 mit STM32 begonnen. Ich hatte ein STM32F207-Design fast fertiggestellt, als wir basierend auf Preis/Verfügbarkeit auf STM32F407 umgestiegen sind. Es war ein Drop-in für Hardware, und Softwareänderungen waren trivial. Die Dokumentation und Komplexität machten das Erlernen etwas mühsam, aber das Design ist solide und die Mühe wert. Ich verwende den GCC-Compiler (kostenlos) zum Schreiben von Testcode und die kostenlose Eval-Version mit begrenzter Codegröße von Keil zum Schreiben/Testen von Beispieltreibern. Unser Programmierer hat eine Lizenz für den vollständigen Keil-Compiler. Beide wirken solide.
Könnten Sie etwas näher darauf eingehen, was CMSIS genau ist und was es ist/macht, wodurch Sie einfacher zwischen CPUs wechseln können? So wie ich es jetzt verstehe, scheint es wie eine Firmware-Bibliothek auf sehr niedriger Ebene zu sein, die eine Art Hardware-Abstraktion bietet?
@NickHalden, "ARM" lizenziert den ARM-Kern an Chiphersteller, die sie verpacken und Peripheriegeräte hinzufügen. CMSIS – Cortex Microcontroller Software Interface Standard – arm.com/products/processors/cortex-m/… – ist eine Hardware-Abstraktionsschicht für Mikrocontroller der Cortex-M-Serie. Wenn eine Bibliothek CMSIS-kompatibel ist, ist sie theoretisch herstellerunabhängig, und es ist einfacher, verschiedene Familien auszutauschen, und Sie müssen eine Umgebung nicht von Grund auf neu erlernen, um die Bibliothek verwenden zu können.
Danke. Wir haben uns die STM32-Serie tatsächlich ziemlich genau angesehen. Selbst innerhalb dessen kann ich mich nicht zwischen der F1-F4-Serie entscheiden, lol. Nun, ich kann das F4 irgendwie ausschließen, nur weil es relativ teuer ist. Aber sagen wir F1 vs. F3 - vorausgesetzt, beide sind leistungsfähig genug, sollte ich mich einfach für das billigere entscheiden?
@ScottSeidman Ich sage "kostenlose Toolchain", weil ich den Preis, den zB Keil verlangt, komisch finde. Ich habe eine Keil-Lizenz bei der Arbeit und verwende Coocox zu Hause/im Studium; Keil hat eine (meistens) schönere IDE, aber Coocox ist kostenlos und hat 95 % dessen, wofür Keil 11.000 AU$ verlangt. Oh, und ich stimme den STM32 vollkommen zu - großartige Geräte, großartige Entwicklungsboards, nerviges Doco.
@YoungMoney Wählen Sie das billigste, das Ihnen mindestens das Doppelte der Ressourcen bietet, die Sie Ihrer Meinung nach benötigen werden.
Entwickeln Sie sich groß, nur um zu verhindern, dass die Dinge stecken bleiben. Sobald Sie einen guten Überblick darüber haben, welche Ressourcen Sie benötigen, reduzieren Sie.
@YoungMoney, der F4 ist ein Cortex M4, komplett mit einigen DSP-Angeboten wie einer Akkumulation und Addition mit einem Taktzyklus, einem Gleitkommaprozessor mit einfacher Genauigkeit (für das, was das wert ist) und einigen raffinierten Adressierungswerkzeugen. Gutes Zeug, aber Sie zahlen dafür.
Kostenlose Toolchains sind in einem professionellen Kontext wichtig, nicht wegen der Kosten, sondern wegen der Zugriffssicherheit – gehen Sie mit einer gesperrten Toolchain, und Ihre Fähigkeit, das Projekt aufrechtzuerhalten, wird durch Lizenzen gefährdet, die ablaufen oder für Ihren Reiselaptop nicht verfügbar sind oder Mitarbeiter, Dongles, die verloren gehen können, Lizenzserver, die nach einigen Jahren vom Netz getrennt werden können usw. Die meisten Embedded-Designs haben eine Lebensdauer, die weit über die Desktop-Hardware- und Betriebssystemversionen hinausgeht, mit denen sie entwickelt wurden, und können das Original wiederbeleben Werkzeuge in der Zukunft ist wichtig!
  1. Suchen Sie nach kostenloser Toolchain, RTOS und kostengünstiger JTAG/SWD-Unterstützung.
  2. Überlegen Sie, mit welchen Paketen Sie arbeiten können/wollen – wenn DIP ein Muss ist, schließen Sie Siliziumanbieter aus, die keine DIP-Pakete anbieten.
  3. Sehen Sie sich an, welche Peripheriegeräte angeboten werden und was Sie wahrscheinlich wollen/brauchen.
  4. Suchen Sie nach bang-for-buck - verwenden Sie eine oder mehrere der großen Websites von Elektronikanbietern, um Äpfel mit Äpfeln zu vergleichen.

Angesichts Ihres Wunsches nach Entwicklungsboards sollten Sie überlegen, was dort verfügbar ist.

Wenn Sie von einer anderen Plattform (PIC, Atmel usw.) herüberkommen, akzeptieren Sie, dass es beim Wechsel zu ARM in vielen Bereichen eine faire Lernkurve geben wird , aber es lohnt sich wirklich.

Ja – kostenlose Toolchains sind wichtiger für die Sicherheit des zukünftigen/alternativen Computers/alternativen Technikerzugriffs auf die Toolchain als für die Kosten. Für Cortex-Teile sind die Toolchains ziemlich universell, daher ist es besser zu wissen, dass Sie sie mit einem einfach zu handhabenden SWD-Schnittstellengerät programmieren können, das verfügbar oder neu erstellbar ist und von Ihrem aktuellen (und zukünftigen) Betriebssystem aus gesteuert werden kann Auswahl.

Wenn Sie keine starke Präferenz haben (z. B. Preis, Größe, Leistung und was andere aufgeführt haben), würde ich überlegen, wer Sie unterstützt. Wenn der Hersteller Ihre Fragen nicht beantwortet, könnte dies ein Problem sein. Oder haben sie einen lokalen Händler mit einem FAE (Field Application Engineer), den Sie fragen können? Das ist besonders wichtig für kleine Betriebe und Bastler.

Einige Teile sind möglicherweise nicht in kleinen Mengen verfügbar. Beispielsweise richten sich diejenigen, die DRAM im selben Paket haben, an große Käufer (> 10.000 Einheiten).

Wahrscheinlich entspricht STM32L151VBT6 Ihren Anforderungen. Selbst wir haben es in unserem Unternehmen verwendet, es hat moderate Kosten und ist gut in Bezug auf den Stromverbrauch. Außerdem erhalten Sie die meisten Designressourcen auf http://www.st.com .

Hauptmerkmale der STM32L151VB MCU sind:

Ultra-Low-Power-Plattform 1,65 V bis 3,6 V Netzteil

Temperaturbereich -40 °C bis 85 °C/105 °C

0,3 μA Standby-Modus (3 Wakeup-Pins)

0,9 μA Standby-Modus + RTC

0,57 μA Stoppmodus (16 Wecklinien)

1,2 μA Stoppmodus + RTC

9 μA Low-Power-Run-Modus

214 μA/MHz Run-Modus

10 nA extrem niedriger E/A-Leckstrom

< 8 μs Aufwachzeit

Kern: ARM®Cortex™-M3 32-Bit-CPU

Von 32 kHz bis 32 MHz max

33,3 DMIPS-Spitze (Dhrystone 2.1)

Speicherschutzeinheit

Reset- und Versorgungsmanagement

Ultrasicheres, stromsparendes BOR (Brownout-Reset) mit 5 wählbaren Schwellenwerten

Ultra-Low-Power-POR/PDR

Programmierbarer Spannungsdetektor (PVD)

Taktquellen

1 bis 24 MHz Quarzoszillator

32-kHz-Oszillator für RTC mit Kalibrierung

High Speed ​​Interner 16 MHz werkseitig getrimmter RC (+/- 1 %)

Interner Low-Power-37-kHz-RC

Internes Multispeed Low Power 65 kHz bis 4,2 MHz

PLL für CPU-Takt und USB (48 MHz)

Vorprogrammierter Bootloader

USART unterstützt

Entwicklungsunterstützung

Debug für serielle Kabel unterstützt

JTAG und Trace werden unterstützt

Bis zu 83 schnelle I/Os (73 I/Os 5V tolerant), alle abbildbar auf 16 externe Interrupt-Vektoren

Erinnerungen:

Bis zu 128 KB Flash mit ECC

Bis zu 16 KB RAM

Bis zu 4 KB echtes EEPROM mit ECC

80-Byte-Sicherungsregister

LCD-Treiber für bis zu 8x40 Segmente

Unterstützung der Kontrasteinstellung

Blinkmodus unterstützen

Aufwärtswandler an Bord

Umfangreiche analoge Peripherie (bis zu 1,8 V)

12-Bit-ADC 1 Msps bis zu 24 Kanäle

12-Bit-DAC 2 Kanäle mit Ausgangspuffern

2x Ultra-Low-Power-Komparatoren (Fenstermodus und Weckfunktion)

DMA-Controller 7x Kanäle

8x Kommunikationsschnittstelle für Peripheriegeräte

1x USB 2.0 (interne 48 MHz PLL)

3x USART (ISO 7816, IrDA)

2x SPI 16 Mbit/s

2x I2C (SMBus/PMBus)

10x Timer: 6x 16-Bit mit bis zu 4 IC/OC/PWM-Kanälen, 2x 16-Bit Basis-Timer, 2x Watchdog-Timer (unabhängig und Fenster)

Bis zu 20 kapazitive Erfassungskanäle, die Berührungstasten, lineare und rotierende Berührungssensoren unterstützen CRC-Berechnungseinheit, eindeutige 96-Bit-ID