Forum: Mikrocontroller und Digitale Elektronik STM32, Cortex-M3 Power


von Erwin R. (er-tronik)


Lesenswert?

Hallo,
ich beschäftige mich seit ein paar Wochen mit den Cortex-M3 Controllern 
STM32F10x. Sind eine echte Alternative zu Atmel-ARM und NXP-ARM meiner 
Meinung nach. Max. 72 MHz Takt, 128k Flash, 20 k RAM, viel Peripherie (2 
x SPI, 3 x UART, 2 x I2C, USB, CAN) alles DMA-fähig.

Vor allem die aufwändigen Timer des STM32 sind zu erwähnen. Ohne 
Software zu schreiben, kann zum Beispiel ein Drehimpulsgeber 
angeschlossen werden. Nur ein paar Register initialisieren und der 
Counter wird automatisch beim Drehen aktualisiert und braucht nur noch 
ausgelesen zu werden.

Wer programmiert die Teile auch, zwecks Erfahrungsaustausch?

Erwin

von DiScha (Gast)


Lesenswert?

Hallo,
schön daß sich noch jemand mit der Familie beschäftigt.
Bin gerade dabei ein Board mit einem STM32F103VBT6 zu machen. 
Meßdatenerfassung und Motorsteuerung. Sotwareentwicklung mit IAR.

Gruß
Dieter

von Dirk (Gast)


Lesenswert?

Ich nutze Luminary-Cortex-M3.
Ist letztlich das Gleiche. Meiner hat 256KBit Flash und 64KBit RAM.
Die Teile sind echt gut.
Dank ordentlicher Software von Luminary ist der Einstieg auch echt 
simpel.
Machen echt Spaß, die Kerlchen.

Meiner Meinung nach ist der Cortex-M3 der logische Schritt 
leistungsmäßig vom AVR nach oben.

von Chris T. (bonito)


Lesenswert?

Hallo,

ich überlege mir auch gerade mir ein Cortex-M3 Entwicklungsboard zu zu 
legen. Und zwar find ich das Board hier ganz gelungen: STM32-P103, das 
ist mit 50€ auch recht Preiswert. Dazu dann noch ein kleines Farbdisplay 
und fertig ist das Luxusboard.

Was mir nur noch nicht ganz klar wird (ich bin bisher nur mit 8051er 
vertraut und will mich in was neuem einarbeiten), kann ich den direkt 
vom PC über USB programmieren oder brauch ich noch ein extra 
Programmiergerät?
Laut Beschreibung würde ich sagen das er sich direkt programmierne 
lässt, was ich aber noch nicht so recht glauben möchte.

Fänd ich gut wenn sich da schnell ein paar leute finden würden die sich 
auch für den Prozessor interessieren.

Danke.

MFG
Bonito

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

STM32 verfügen über einen vorinstallierten Bootloader für serielle 
Schnittstelle, damit kann man ohne extra Hardware Programme in den 
Conroller übertragen (o.k. eine serielle Schnittstelle ist ja inzwischen 
schon "extra", anonsten USB-seriell-Wandler). Vgl. Manual Abschnitt 
"Boot configuration". Entsprechende PC-Software gibt es bei st.com. 
Soweit selbst ausprobiert, allerdings mit einem Board von Manley. Beim 
Olimex-Board scheint der RS232-Pegelwandler mit UART2 verbunden zu sein, 
eingebauter Bootloader "hört" aber an UART1 (lt. Datenblatt und eigenen 
Tests). So ich das richtig sehe, müsste man wohl ein wenig basteln, um 
den eingebauten Bootloader nutzen zu können.

"Programmieren" über USB wird meines Wissens (=ich habe es bisher nicht 
selbst ausprobiert) nicht von "farbikneuen" Controller unterstützt. 
Notwendige Vorarbeit ist aber gut vorgekaut: die USB-Library von STmirco 
enthält Code für DFU (device firmware upgrade) via USB. Das damit 
erzeugt Binary (w.r.e liegen sogar welche bei) muss auf den STM32 
übertragen werden, was man ja über den seriellen Bootloader machen kann, 
so man Zugriff darauf hat. Ansonsten kostet ein FT2232-basiertes oder 
Wiggler(-clone) Interface für JTAG nicht die Welt. Kann man evtl. 
ausleihen, um die DFU firmware aufzuspielen. OpenOCD ("gratis") 
unterstützt STM32 flash-programming über diese Art Adapter. Danach kann 
der Controller dann auch "Update per USB". Vgl Dokumentation/Quellcode 
von stm.com (UM0424 und UM0412).

> Fänd ich gut wenn sich da schnell ein paar leute finden würden die sich
> auch für den Prozessor interessieren.
Nur an der richtigen Stelle suchen: z.B. im STM32 Forum von st.com.

von Erwin R. (er-tronik)


Lesenswert?

Ich programmiere den STM32 ohnehin nur per JTAG mit OpenOCD, das klappt 
einwandfrei. Es ist mir einfach zu umständlich, jedes mal den Bootloader 
zu starten und dann noch die lahme serielle Datenübertregung.

Zum Thema USB-Library oder generell ST-Library möchte ich anmerken, daß 
die zwar ganz nett ist, aber einen riesen Overhead produziert, was 
natürlich auch auf Kosten der Geschwindigkeit geht. Was nutzt uns ein 
Controller mit 72MHz Taktfrequenz und Prefetch Buffer wenn zum setzen 
oder lesen eines Registers ständig irgendwelche Subroutinen angesprungen 
werden müssen.

Erwin

von Chris T. (bonito)


Lesenswert?

Hat denn jemand nen Schaltplan für ein JTAG für den Controller zum 
selber basteln?
Für die 8051er hab ich das schon öfters gemacht, nur hab ich von dem 
STM32 halt noch nicht so viel Ahnung.

Danke.

MFG
Christof

PS: Was haltet ihr von den 11" und 12" LpptopDisplays von Pollin? Kann 
man damit was anfangen oder sollte man besser die Finger davon lassen?

von zeuz (Gast)


Lesenswert?

@Erwin Reuss:
Hast du schon einmal den generierten Assembler Code studiert? Der 
Optimizer im GCC ist wirklich nicht schlecht. Sinnlose Sprünge in 
Subroutinen werden elegant wegoptimiert.
Aber schön geschrieben ist die FwLib überhaupt nicht. Viel Copy&Paste, 
falsche Kommentare,...
Die Migration von v1.0 auf v2.0 bloss mit Migrationsmanual machbar (aka 
broken).
Naja, für Initialisierungen und solange der Code nicht eingefroren ist, 
verwende ich die FwLib.

von Erwin R. (er-tronik)


Lesenswert?

Hallo, schön zu sehen, daß sich inzwischen mehr und mehr mit den STM32 
beschäftigen.
Ich programmiere die Teile mit dem freien Compiler von Codesourcery und 
benutze die Library fast gar nicht. Ich binde nur die MAP-Datei zur 
Definition der Adressen ein und benutze die Library für 
NVIC-Konfiguration, da ich hier noch nicht ganz den Durchblick habe. Für 
alles andere programmiere ich die Register direkt. Dies spart jede Menge 
Code und geht natürlich auf die Geschwindigkeit. Der erzeugte ASM-Code 
ist super kompakt und es wundert mich manchmal, wie aus einer ziemlich 
komplizierten C-Routine ein recht kurzer ASM-Code entstanden ist.

Zur Programmierung des Flash-Speichers des STM32 muß ich ergänzen, daß 
ich das inzwischen nur noch über den íntegrierten Bootloader mache. JTAG 
benutze ich gar nicht mehr, da ich zum Debuggen in der Regel ein 
LC-Display angeschlossen habe. Ich benutze einen kleinen 
USB-Seriell-Wandler über den ich auch die Reset- und BOOT0-Leitung 
schalte, sowie ein selbstgeschriebenes Programmiertool. Damit brauche 
ich keinerlei Jumper oder Schalter, die Umschaltung zwischen Bootloader 
und Bios macht alleine die Software. Wer Interesse an dieser Lösung hat, 
kann sich gerne mal bei mir melden.

Erwin Reuss

von Gast (Gast)


Lesenswert?

Hallo Erwin,

das hört sich gut an!
Schaltest Du über zwei Steuerpins der seriellen Schnittstelle(via USB) 
das Reset und Boot0?
Du könntest auch einen dezenten Hinweis im STM Forum fallen lassen und 
damit vielen dieses lästige rumfummeln an den Schaltern ersparen :-)

Ich plane mir folgendes Board zu kaufen:
http://www.futurlec.com/ET-STM32_Stamp.shtml
Bei weitem genug zum spielen und günstig.

Viele Grüße

von sven (Gast)


Lesenswert?

Hallo!

Mach grade an der Fh den Stm32 Discovery. Programmieren geht über 
Keilv4.
Bin absoluter Neuling unschuldig müssen in 2 Wochen ein Projekt 
abliefern in dem
Wir zwei Geräte über die Usart kommunizieren lassen. Einer dient als 
Steuereinnheit
und der andere als Signalgenerator. Über eine Ps2 Tastatur wird in die 
Steuereinheit
Art der Spannung (Sägezahn,Sinus,Rechte) dann die Frequenz mit max.1Mhz. 
Und die
Amplitude ûber ein Poti eingelesen. Danach übrtragen und über Dac Output 
in einem
Aci wieder eingelesen und nachjustiert.

Hoffe ich finde hier im Forum Hilfe! ;)

von lalalululili (Gast)


Lesenswert?

ich sehe keine Frage...

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Für alle Um- und Einsteiger in die Cortex-Welt, hier der Artikel: 
STM32
Mit:
- Tipps
- Demo-Boards
- Programmieradapter
- Programmiersoftware/Compiler

von K. J. (Gast)


Lesenswert?

Hi, ich hatte mir damals folgendes gebaut

http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U

Hab auch noch Platinen dafür herumliegen bin nie über das LED blinken 
hinausgekommen, allerdings mit einen kleinen aber behebbaren Fehler auf 
den Platinen falls jemand eine haben möchte würde die für 4€ inkl. 
abgeben.

von Simon H. (simi)


Lesenswert?

Ich würde von einem Eval-Board ohne JTAG sehr vehement abraten (sorry, 
K.J.!)

Ein Programm runterladen und laufen lassen, ist eins. Was aber, wenn man 
das Programm dann startet und es tut sich einfach gar nichts? Ohne 
Debugger tastet man dann gewaltig im Dunkeln. Natürlich kann man über 
GPIOs irgendwelche "Ich war hier"-Meldungen rausgeben. Und mit einem 
Terminal kann man auch einiges anstellen - sobald printf dazu überredet 
wurde, auf den ensprechenden COM-Port zu senden. Aber die Möglichkeiten 
sind halt doch sehr stark beschränkt.

Über JTAG kannst Du halt sehr genau verfolgen, was der STM32 gerade so 
macht, Du kannst Variablen anschauen, verändern, Breakpoints setzen... 
So macht Debuggen (und somit auch Programmieren) sehr sehr sehr viel 
mehr Spass.

Gruäss
Simon

von K. J. (Gast)


Lesenswert?

Naja recht haste eigentlich zum Kennenlernen ist das finde ich OK.

Die Platine ist entstanden wo der j-link noch recht teuer war 
mittlerweile kostet der um 30$, ich hab mir hinterher nen STM32Primer 
gegönnt der hat nen integrierten Debugger, aber wie gesagt ich bin übers 
LED Blinken eh nicht raus gekommen.

von Andi (Gast)


Lesenswert?

wo kann man denn den jlink für 30$ kaufen?

Würde mir gerne einen zulegen, aber finde keinen günstigen Anbieter.

Danke

Grüße Andi

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.