Forum: Mikrocontroller und Digitale Elektronik Auswahl zwischen Cortex M3 von NXP, ST, TI


von Albert .. (albert-k)


Lesenswert?

Guten Abend zusammen
wie viele andere möchte ich nun den Schritt von 8 auf 32 Bit starten. 
Hierfür möchte ich Cortex M3 Chips verwenden, da ich mit diesen schon 
gearbeitet habe (LM3S6965 von TI). Mir stellt sich nun wie allen anderen 
auch die Frage: Welcher genau?
Zur Auswahl stehen mir dabei folgende 3 Firmen:
- ST Miccroelectronics mit dem STM32
- NXP mit dem LPC17xx
- TI mit der LM3xxxxxx Reihe

Wichtig für mich ist eine gute Verfügbarkeit der Controller (ich möchte 
die Controller auch privat bestellen können, da die Studentenlaufbahn ja 
irgendwann vorbei ist) sowie eine ordentliche Entwicklungsumgebung. 
(Habe bisher mit IAR und Eclipse Derivaten gearbeitet). Ein ordentlicher 
Programmer unter 100€ ist natürlich Pflicht! Wenn ich mich mit einem uC 
beschäftige, möchte ich bei Fehlern nicht darüber nachdenken müssen ob 
es nun ein Problem des Programmer ist oder ein von mir verursachtes.

Herausgesucht habe ich mir daher folgende Zusammenstellung

NXP:
Programmer/Eval-Board: 
http://de.farnell.com/nxp/om11048/kit-dev-lpcxpresso-lpc1343/dp/1777673

Dieses Board kann auch gleich als JTAG benutzt werden und unterstützt 
alle Cortex M3/Cortex M0 von NXP. Es können auch einige LPC200 8ARM 
7)Derivate programmiert werden. Als Software wird eine eigene IDE (die 
auf Eclipse basiert) verwendet.

ST:
Programmer: 
http://de.farnell.com/stmicroelectronics/st-link/programmierer-icd-f-stm8-stm32/dp/1779159

Ist ein reiner Debugger/Programmer für alle STM32 und STM8 Derivate. 
Also müsste mans ich noch ein eigenes Eval-Board machen, was aber nicht 
das Problem wäre. Ausserdem verwenden bereits viele Leute diese 
Controllerfamilie, also denke ich mal sollte man sie auch Privat 
irgendwo bestellen können

TI:
Programmer/Eval-board: 
http://de.farnell.com/luminary-micro/eki-lm3s811/kit-eval-lm3s811-iar/dp/1712248 
oder aber 
http://de.farnell.com/luminary-micro/eki-lm3s6965/kit-eval-lm3s6965-enet-iar/dp/1712247

Das erste Board ist natürlich eine sehr günstige Variante mit kelinem 
Display. Oder aber doch die "Luxusvariante" mit schon einigem an 
Peripherie drauf (Ethernet, SD Card). Beide Boards können als JTAG/SWD
verwendet werden und stellen somit die Programmierung eigener Boards zur 
Verfügung.

Nun kann ich micha ber nciht entscheiden, da ich eifnach nciht weiß wie 
es um der Verfügbarkeit der Controller steht. STM32 macht wahrscheinlich 
die geringsten probleme, von dem was amn so hört. Mit dem Boards von TI 
habe ich ebreits gearbeitet und war echt begeistert. Die von NXP sind 
aber sehr günstig.
Wer also Erfahrung mit einem von den 3 varianten hat könnte mir diese 
bitte mitteilen? Dann fällt die Entscheidung bestimmt einfacher.

von (prx) A. K. (prx)


Lesenswert?

Die STM32 kriegt man auch privat probemlos, beispielsweise bei TME und 
bei Sander - und natürlich bei HBE/Farnell. Development-Boards gibt es 
günstig bei futurlec und ebay.

Beim JTAG drauf achten, dass die Lösung mit der becorzugten 
Software-Umgebung zusammenpasst. Nicht jedes JTAG-Interface wird von 
jeder Software akzeptiert.

Komplettpakete mit USB-Controller-Stick und I/O-Board mitsamt JTAG und 
Development-Software findet man bei Hitex, für STM32 und diverse andere 
ARMe.

von Albert .. (albert-k)


Lesenswert?

Also ich habe nun etwas die verschiedenen Controller der hersteller 
durchgeschaut und muss sagen: TI fällt für mich raus. Die uC mit 
integriertem USB sind alle im 100-LQFP Gehäuse, was mir doch zu viel 
Aufwand fürs hobby sind. Die 64-LQFP Varianten sind noch nicht auf dem 
markt (comming soon laut ihrer Homepage). Bleiben also noch NXP und 
STM32

von (prx) A. K. (prx)


Lesenswert?

Bei den STM32 gibt es CAN/USB ab 48 Pins. Diese Controller können dann 
beides, aber nicht gleichzeitig.

von Plan (Gast)


Lesenswert?

Die FW-Lib von ST gefällt mir sehr gut. Eine LIB für alle STM32F103xx 
Prozessoren.
Einmal SW schreiben, für jede Variante nutzbar. Und zu jeder Pheriperie 
gibt es Beispiele, z.T. auch mehrere.
Im Internet gibt es auch schon viel Code und das STM32 Forum von ST ist 
auch sehr gut.

von Robert T. (robertteufel)


Lesenswert?

Versuche mich zu diesem, meinem Lieblingsthema, kurz zu fassen.
Stand heute: TI/Stellaris war zuerst am Markt und ist gut verfuegbar, 
kann nur noch besser werden als Teil von TI. STM32 war naechster, die 
meisten Teile auch gut verfuegbar, NXP relativ spaet gekommen aber stark 
aufgeholt und in vielen Faellen sogar die Mitbewerber ueberholt. 
Verfuegbarkeit sollte bei allen 3 Herstellern grundsaetzlich gut sein. 
Neuankuendigungen brauchen immer ne Weile bis man sie ohne Probleme 
bekommt.
Features: Im High-End ist vieles an Peripherals vergleichbar. Die 
Unterschiede liegen im Detail.

Nur mal eine kleine Liste;
NXP, kann am schnellsten laufen
TI hat integrierten Ethernet PHY und das schnellste Flash
STM32 hat wohl bessere Analog-Features als die beiden andern

Bei 50 MHz ist TI der schnellste, bei 100 MHz wird es knapp zwischen TI 
und NXP.
Persoenlich mag ich den Primer2 von Raisonance / ST sehr, viele 
Moeglichkeiten relativ guter Preis.

Mit M3 bist Du auf einer guten Schiene und es wird sich noch einiges bei 
ARM tun. Wuerde mich nicht wundern, wenn der naechste Mx auf der 
Embedded World angekuendigt wuerde.

Robert

von gerhard (Gast)


Lesenswert?

@albert:
ist atmel SAM3x kein thema?

gruss
gerhard

von (prx) A. K. (prx)


Lesenswert?

Schon irgendwo ausserhalb eines teuren Demo-Boards gesehen?

von Robert T. (robertteufel)


Lesenswert?

Albert Krenz schrieb:

> (Habe bisher mit IAR und Eclipse Derivaten gearbeitet). Ein ordentlicher
> Programmer unter 100€ ist natürlich Pflicht!

Das habe ich vorher irgenwie ueberlesen.
IAR fuer professionellen Einsatz faengt bei ca. 2500 Euro an falls das 
Programm in 256 KB reinpasst. Was spielt es da fuer eine Rolle ob der 
Programmer unter 100 Euro kostet. Ich koennte verstehen wenn der Satz so 
lautet. Ein guter Programmer ist natuerlich Pflicht. Und den gibts fuer 
alle o.g. Typen.

Zum Thema SAM3; Leider sehe ich den SAM3 derzeit auch nicht als echte 
Alternative fuer die meisten Anwender. Hauptgrund ist der Focus auf USB 
2.0 HS und sonst eigentlich nichts. Kein CAN, kein Ethernet, schade.. 
Ich hoffe Atmel bekommt das noch auf die Reihe und investiert nicht 
alles in den AVR32, denn dieser wird es gegenuer all den 
Cortex-Derivaten sehr schwer haben. Wer natuerlich einen HS USB moechte, 
der hat keinen anderen M3 zur Auswahl, nur den SAM3.

Robert
http://mcu-related.com/architectures/35-cortex-m3/76-sam3u-cortex-m3

von gerhard (Gast)


Lesenswert?

hallo,
wenn ich albert richtig verstanden habe dann sucht er einen chip mit 
max. tqfp64 gehäuse. da kommt bei nxp wohl nur die lpc13xx familie in 
frage und die hat auch weder can noch ethernet und ist speichermäßig 
auch etwas "unterausgestattet".




gruss
gerhard

von Georg (Gast)


Lesenswert?

Nachdem ich mich für ST entschieden haben, würde ich das nächste mal 
eher NXP nehmen. Die FWLib von ST ist teilweise verbuggt oder seltsam. 
Insbesondere die Umsetzung des I²C ist die Hölle.

von Plan (Gast)


Lesenswert?

In jeder CPU ist die Umsetzung des I2C die Hölle.
Nur bei STM verleitet die FW-Lib den Eindruck dass es leichter geht.
STM hat nur den Vorteil, dass der IIC Bus einfacher initialisierbar ist.
Die Schrittkette der gesicherten IIC Übertragung muss in JEDER CPU 
eingebaut werden und jede CPU hat das gleiche Problem (Hölle).

Ich habe IIC bei Microchip, NXP und STM eingebunden, nirgends war es 
leicht.

von Albert .. (albert-k)


Lesenswert?

Robert Teufel schrieb:
> Das habe ich vorher irgenwie ueberlesen.
> IAR fuer professionellen Einsatz faengt bei ca. 2500 Euro an falls das
> Programm in 256 KB reinpasst. Was spielt es da fuer eine Rolle ob der
> Programmer unter 100 Euro kostet. Ich koennte verstehen wenn der Satz so
> lautet. Ein guter Programmer ist natuerlich Pflicht. Und den gibts fuer
> alle o.g. Typen.

Nunja, ich würde schon rein die Kickstart Version nehmen. Und diese ist 
auf 32kByte beschränkt. Was aber für die meisten hobbybereiche 
ausreichend ist.
Bei NXP liegt die Codebeschränkung bei 128kByte, wenn man die NXP eigene 
Software verwendet (basiert auf Eclipse und wäre für mich daher voll in 
Ordnung).

gerhard schrieb:
> wenn ich albert richtig verstanden habe dann sucht er einen chip mit
> max. tqfp64 gehäuse
Fast richtig. Bisher habe ich eben maximal IC's im LQFP48 Gehäuse 
verbaut (also Layout selber gemacht und Platine selber hergestellt). 
LQFP64 würde ich mich noch trauen, aber LQFP80 wird schon verdammt eng. 
Drüber würde ich nicht gehen wollen.
Eng ist in dem Sinne zu verstehen, das es dann vom Verlöten herr einfach 
sehr aufwendig wird. Und der IC ggf. einfach zu groß wird.

gerhard schrieb:
> @albert:
> ist atmel SAM3x kein thema?
>
> gruss
> gerhard
Ich möchte keine ATMEL Cortex M3 verwenden, da diese in ihrer 
Ausstattung/Peripherie nicht so umfangreich sind wie einige IC's der 
anderen Hersteller.

Robert Teufel schrieb:
> Features: Im High-End ist vieles an Peripherals vergleichbar. Die
> Unterschiede liegen im Detail.
>
> Nur mal eine kleine Liste;
> NXP, kann am schnellsten laufen
> TI hat integrierten Ethernet PHY und das schnellste Flash
> STM32 hat wohl bessere Analog-Features als die beiden andern
Was heißt besserer Analog teil? beziehst du dich darauf das die STM32 
bsw. zwei AD-Wandlungen gleichzeitig durchführen können? (meine dies in 
den Datenblättern gelesen zu haben, bin sie aber nur überflogen).


hat vl. mal jmd. einen TI M3 gesehen der USB auch in Gehäusen mit 
weniger Pins als 100 gesehen hat? Oder muss man da auf die 
angekündigten, wie den LM3S5956, warten?

von Plan (Gast)


Lesenswert?

Mache doch so die Auswahl des Prozessors:

Nimm Google und suche mal Demo Code für die unterschiedlichen Typen. 
Denn wenn es da nichts/wenig gibt, dann ist es schwierig.

Oder einfacher:
In diesem µC Forum auf den ARM Filter klicken, dann siehst Du auch 
welchen Prozessor gerne häufig verwendet wird.

Denn wenn Du einen "Exoten" verwendest wirst Du kaum Hilfe in diesem 
Forum bekommen.

Ja, der STM32 hat 2 eigenständige AD-Wandler. Die Typen ab 256KB Flash 
sogar 3. (Nennt sich High Density Device und ist viel mehr pheriperie 
drin.)
Also auch ein Grund mehr einen STM32 zu verwenden. Bracuht man z.B. 
einen 5. oder 6. Timer, dann einfach das Pinkompatible größere HD-Device 
nehmen.

von Robert T. (robertteufel)


Lesenswert?

@Albert,
Hab mit besseren A/D auch gemeint, dass sich bei ST die 12-bit 5x 
schneller konvertieren lassen als z.B. bei NXP oder auch, dass 12-bit 
vielleicht gar nicht da ist bei LM.
Zu analogen features gehoeren aber auch andere Dinge wie ein genauer und 
zum Wake-Up brauchbarer OSC auf dem Chip ist, falls Batterie-Betrieb ein 
Thema ist, ein guter brownout, eine RTC die im Bereich 1 uA ist und so 
weiter. Da scheint jeder so seine Schwaechen und Staerken zu haben und 
die sind je nach Anwendung wichtig oder vernachlaessigbar.

Zum Thema Beispielsoftware, da wo viel ist, ist auch viel Mist. Da wo 
keine ist, faengst Du aber von vorne an, oder auf gut schwaebisch
"s'isch nix wie's isch".
Frei ins deutsche uebertragen, man kann's nur falsch machen :-)

Robert

von gerhard (Gast)


Lesenswert?

@albert
>Ich möchte keine ATMEL Cortex M3 verwenden, da diese in ihrer
>Ausstattung/Peripherie nicht so umfangreich sind wie einige IC's der
>anderen Hersteller.
was fehlt dir den an peripherie am sam3?
bzw. welcher chip im 64 pin gehäuse hat mehr an peripherie?

gruss
gerhard

von Plan (Gast)


Lesenswert?

STM32F103RE hat mehr.

von (prx) A. K. (prx)


Lesenswert?

Wie Robert schon schrieb: Atmel kann USB 2.0 Highspeed, was in dieser 
Klasse nicht unbedingt üblich ist. Üblich ist Fullspeed, also 12Mbps.

Allerdings sollte man bedenken, dass man mit einem 50-100MHz ARM7 oder 
Cortex-M3 schon ins schwitzen kommen kann, wenn man nur Fullspeed USB 
gesättigt kriegen will, wenn das USB kein Selbstzweck sein soll, sondern 
noch was anderes auf dem Controller läuft, das diese Daten nutzt.

von (prx) A. K. (prx)


Lesenswert?

Albert Krenz schrieb:

> Nunja, ich würde schon rein die Kickstart Version nehmen. Und diese ist
> auf 32kByte beschränkt. Was aber für die meisten hobbybereiche
> ausreichend ist.

Wenn du meinst...

Du erwähnst oben Ethernet, also wohl TCP/IP. Sich dabei von vorneherein 
in 32KB einzuigeln wird etwas stachelig.

Anders gesagt: Was machst du, wenn die Kickstart-Version nicht 
ausreicht? Sehr tief ins Sparschwein greifen - oder komplett umsteigen?

von let (Gast)


Lesenswert?

Habe mir die Tage mal die M3 Reihe von NXP angesehen. Ich verwende
selbst den ARM7, v. a. den LPC2365 und 2478 für 'größere' Sachen.
Für alles andere AVR, manchmal auch PIC. Noch, denn für
Neuentwicklungen sehe ich keinen Grund mehr auf der 8-Bit Schiene
zu bleiben. Mit M0 und M3 gibt es keine Ausreden mehr ;).

Interessant finde ich die LPCexpresso Umgebung und auch die
entsprechenden Boards für die es auch (für NXP Verhältnisse)
erfreulich viele Beispiele gibt (auch für USB HID + Mass Storage
und Ethernet). Benutzt wird da nämlich der GCC und die 128kB
Beschränkung gilt nur für den Software Download über diesen LPC-Link.
Ich nehme an das Debuggen über 128kb auch nicht geht, auch wenn man
das Programm auf einem anderen Weg in den Controller schiebt. Der
Compiler/Linker ist aber nicht eingeschränkt.

Debuggen geht über den LPC-Link aber angeblich nicht unter
Vista-64 bzw. Win7-64. Ich schätze das das auch so bleiben wird
da sich der Fall (schneller + günstiger Einstieg) für NXP
erledigt hat und die Firma Code-Red, von der die Software stammt,
ein eigenes JTAG Interface anbietet das unter 64-Bit funktioniert.
Programm-Download soll aber gehen.

Die STM32 Familie macht auf mich auch einen sehr guten Eindruck.
Da ich aber auf einen 8-Bit Ersatz und USB-Hid aus bin
(die LPC13xx haben HID fertig im ROM) und nicht weiß was man mit
einem zweiten AD-Wandler macht, ziehe ich die LPCs vor.

Luminary und Atmel interessieren mich nicht da die SAM3 und die
interessanten LM3S nicht lieferbar sind. Gut, der LM3S6965 mit
seiner PHY reizt mich schon etwas - doch der alleine ist etwas mau.
Im unteren Segment (32-Pin) kann ich nichts gescheites entdecken.

von Plan (Gast)


Angehängte Dateien:

Lesenswert?

Wenn man schon den LPC23xx / LPC24xx hat und SW für deren Pheriperie, 
dann ist es natürlich Sinnvoll dden LPC17xx zu nehmen, denn die haben 
exakt die gleiche Pheriperie drin. Das hat NXP gut hin bekommen.

Für einen neueunsteiger würde ich eher zum STM32 raten.

Ich habe selbst schon LPC2368 programmiert. Irgendwie gefallen mir die 
STM32 dennoch besser. Liegt wohl an der mitgelieferten FW Lib, mit der 
ich nur kurz Demos anschaue und dann selbst in mein Programm einbinden 
kann ohne mich großartig mit den Datenblättern herumschlagen zu müssen.
Mit dem STM32 komme ich einfach schneller zum Ziel.
Der NXP LPC ist auch sehr gut.

Schlussendlich entscheidet zwischen den beiden die Pheriperie.

Mit Eclipse / Codesourcery kann man Cortex kompillieren.
Mit Eclipse / Yagarto den ARM7.
Also man muss in der Makefilel nur den Name des Kompillers umbenennen 
und schon kann man mit der gleichen Umgebung beide Typen erschlagen.

Wenn man Eclipse, Yagarto usw. allesamt in das gleiche Verzeichnis 
installiert, dann kann man die Entwicklungsumgebaung mit einfachem 
Kopieren (nicht erneut installieren) auf einen weiteren PC übertragen. 
Einziges, die PATH-Einträge in der Systemsteuerung mit übernehmen. Ist 
auch ein Vorteil, wenn man mehrere PCs nutzt.
Ich habe mit eine kleine Patch gesschrieben, die in der Registry einen 
Eintrag "ECLIPSE" erzeugt und ich muss nur noch in die Path Variable 
%ECLIPSE% hinzufügen. (Siehe Dateianhang)

von 900ss (900ss)


Lesenswert?

Plan schrieb:
> Mit Eclipse / Codesourcery kann man Cortex kompillieren.
> Mit Eclipse / Yagarto den ARM7.

Und wieso kompilierst du den ARM-Code nicht auch mit Codesourcery?
Dann brauchst du nichst umbenennen.

von Plan (Gast)


Lesenswert?

Ich hab das noch nicht probiert. Aber den Cortex-M3 Code mit Yagarto 
kompillieren klappt nicht recht, der braucht dann unmengen RAM.
(hab schon länger keinen ARM7 zu programmieren gehabt und never touch a 
running system)

von Albert .. (albert-k)


Lesenswert?

A. K. schrieb:
> Albert Krenz schrieb:
>
>> Nunja, ich würde schon rein die Kickstart Version nehmen. Und diese ist
>> auf 32kByte beschränkt. Was aber für die meisten hobbybereiche
>> ausreichend ist.
>
> Wenn du meinst...
>
> Du erwähnst oben Ethernet, also wohl TCP/IP. Sich dabei von vorneherein
> in 32KB einzuigeln wird etwas stachelig.
>
> Anders gesagt: Was machst du, wenn die Kickstart-Version nicht
> ausreicht? Sehr tief ins Sparschwein greifen - oder komplett umsteigen?

Da hast du allerdings recht. Da könntes es nun wirklich eng werden, 
hatte ich nicht bedacht.

Ich werde wohl das Set von NXP nehmen 
(http://de.farnell.com/nxp/om11048/kit-dev-lpcxpresso-lpc1343/dp/1777673). 
Entscheidungsgründe sind da bei mir:

- 128kByte Code möglich
- USB im 48LQFP Gehäuse (LPC1343)
- Ethernet in den größeren Controllern vorhanden
- Möglichkeit auch einige ARM7 und einen ARM9 zu programmieren
- Günstige Erweiterungsmöglichkeit der IDE auf 256kByte und 512kByte 
(für 256$ und 512$). Wenn es mal nötig sein sollte. Anbieter ist Code 
Red
- Es ist direkt ein LPC1343 dabei mit dem ich dann anfangen würde.

von let (Gast)


Lesenswert?

Nachtrag zu LPCexpresso und 64Bit:

Der Treiber stammt von NXP und angeblich wird an einer 64Bit
Unterstützung gearbeitet. Genau genommen sind es zwei Treiber
die gebraucht werden. Der eine ist für den Normalbetrieb zuständig
und läuft unter 64-Bit. Der ARM9 auf dem JTAG Interface hat aber
kein Flash, nur RAM. Die Firmware wird also bei der Initialisierung
per USB zum Board geschickt. Und der Treiber der dafür zuständig ist,
unterstützt nur ein 32-Bit Windows. Angeblich ist es möglich das Board
von einer virtuellen Maschine mit Win32 aus zu booten um dann
mit 64-Bit weiter zu machen.

PS: Diese aufgebrezelte Eclipse IDE macht Laune. Ich habe damit mal
eben eine LPC1766 Platine die hier schon seit Monaten unbenutzt
rumliegt in Betrieb genommen (wird eigentlich mit LPC2365 bestückt).
Habe zuvor noch nichts mit dem M3 gemacht. Jetzt habe ich einen
100MHz LED Blinker ;).

von Plan (Gast)


Lesenswert?

32K sind ein wenig knapp. Ansonsten ist das ein nettes Angebot. 
Zumindest hat man damit Eclipse und bereits als fertige Umgebung :)

Zum Entwickeln sollte man immer die Optimierung deaktiviern, dann kann 
man ordentlich debuggen. Allerdings wird dann doppelt so viel Code 
benötigt. Und deshalb sind 32Kb etwas dünn.

Ich hab hier eine Heizungssteuerung gemacht, die braucht 100KB Code 
(Cortex M3 mit STM32).
Beitrag "Re: Heizungssteurung im Eigenbau"
Bevor ich die Platinen hatte konnte ich mit einer anderen CPU das 
Programm größtenteils schon schreiben. 32KB hätten mir da nicht 
gereicht.

Bei dem Farnell-Angebot, ich bin mir nicht sicher, ist der JTAG ist im 
Board mit eingebaut. Also wenn man da eine andere CPU bespielen/debuggen 
möchte, dann braucht es einen extra JTAG Adapter.
Aber die LPCxxxx kann man auch mit Flash-Magic seriell bespielen.

Dennoch für des erste Einsteigen und Schnuppern an 32 Bit ist das 
Angebot sehr gut.
Wenn man konkret schon was größeres vor hat, z.B. TCP/IP dann sollte man 
sich gleich ein größeres Board hohlen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.