Forum: Mikrocontroller und Digitale Elektronik STM32F103 Peripherie: "ST hat noch geübt"?


von Georg S. (randy)


Lesenswert?

Ich hatte mal im Internet gelesen (ohne Quellenangabe) dass der 
STM32F103 recht alt sei und ST bei dem "noch geübt hat" bei der 
Peripherie, und das bei neueren CPUs so einige Unschönheiten besser 
gelöst wären. Ich hatte mir letzens den F411 angesehen (weil der auf dem 
Blackpill Board drauf ist), und hatte das gefühl dass Timer, SPI und I2C 
von der Benutzung der Register im wesentlichen auf das gleiche raus 
laufen.
Ist die o.g. Aussage Bullshit? Oder bezieht die sich auf versteckte 
Fehler in der Peripherie und nicht auf das Setup? Oder sind vielleicht 
noch neuere Prozessoren gemeint?

Andere Frage: Gibt es einen STM32 Chip dessen SPI 32 Bit in einem rutsch 
über den SPI Bus schicken kann? Jetzt ohne Methoden wie DMA etc..

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Georg S. schrieb:
> Ist die o.g. Aussage Bullshit?

Nö

ST entwickelt nichts selber, können die gar nicht, und deren BWLer 
wollen dafür auch kein Geld ausgeben.

Die kaufen ein.

Fertige Cores, fertige Peripherieeinheiten, sogenannte intellectual 
property, IP's

Und zwar nicht das Beste, das am besten zusammenpassende, sondern das 
billigste mit der erträglichsten Lizensierungsbedingungen.

Und das wird dann auf einen Chip geklatscht.

Da kommt dann so ein Stuss bei raus wie unterschiedliche Wortbreite und 
unterschiedliche Taktfrequenz zwischen Core und Peripherie. "It's not a 
feature, it's a bug".

Daher fällt es Chinesen so leicht, bauähnliche Chips zu produzieren, die 
kaufen einfach dieselben IP's ein, nur sind sie dann beim 
zusammenflicken vielleicht nicht 100% kompatibel.

Mit etwas Gluck haben modernere uC dann modernere Peripherie - die 
komplett inkompatibel mit der alten ist.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Georg S. schrieb:
> I2C

Ausgerechnet der I2C wurde bei neueren Controllern komplett neu gemacht 
(der F411 ist wohl noch zu alt). Dazu die GPIO-Peripherie (AFIO wurde 
abgelöst), Peripherien wie ADC und Timer haben zusätzliche 
Detail-Features erhalten, die USB-Peripherie wurde bei kleinen 
Controllern verbessert und bei großen Controllern durch den OTG-IP-Core 
von Synopsys ersetzt, Hardware-Bugs wurden behoben, die Controller 
wurden allgemein energieeffizienter und haben zusätzliche 
Energiespar-Features bekommen, und natürlich ist eine ganze Menge neuer 
Peripherie hinzu gekommen.

von Andreas B. (abm)


Lesenswert?

Georg S. schrieb:
> gelöst wären. Ich hatte mir letzens den F411 angesehen (weil der auf dem
> Blackpill Board drauf ist), und hatte das gefühl dass Timer, SPI und I2C
> von der Benutzung der Register im wesentlichen auf das gleiche raus
> laufen.

Nun ja, der eine sieht das als Nachteil, der andere als Vorteil 
("aufwärts-Kompatibilität"). Aber im Detail gibt es schon Erweiterungen, 
z. B. bei den GPIOs: separate GPIOx_BRR, GPIOx_HSLVR, GPIOx_SECCFGR. Und 
des Öfteren dienen vorher unbenutzte Register-Bits halt neuen 
Funktionen.

Was mich mehr ärgert, ist das Durcheinander mit den Timern, ein recht 
undurchsichtiges Feature-Getümmel. Zwei Kategorien fänd' ich noch ok, 
aber bei fünfen ist es nicht mehr lustig.

Und komplett neue Versionen von Peripherie gibt's schon:
QuadSPI -> OctoSPI -> HSPI
Zum Glück halbwegs register-kompatibel. Aber leider nicht bug-kompatibel 
...

> Andere Frage: Gibt es einen STM32 Chip dessen SPI 32 Bit in einem rutsch
> über den SPI Bus schicken kann? Jetzt ohne Methoden wie DMA etc..

Was soll das "in einem Rutsch" denn genau heißen? Natürlich kann man 32 
Bit in zwei 16-Bit Zugriffen unmittelbar nacheinander ins DR schreiben, 
dazu ist der FIFO ja da: "Two 32-bit embedded Rx and Tx FIFOs"

von Hans-Georg L. (h-g-l)


Lesenswert?

Georg S. schrieb:

> Andere Frage: Gibt es einen STM32 Chip dessen SPI 32 Bit in einem rutsch
> über den SPI Bus schicken kann? Jetzt ohne Methoden wie DMA etc..

z.B. die H7 können das und haben Fifos damit das auch kontinuierlich 
geht.

Guckst du hier:

https://www.st.com/resource/en/application_note/an5543-guidelines-for-enhanced-spi-communication-on-stm32-mcus-and-mpus-stmicroelectronics.pdf

von Gerd E. (robberknight)


Lesenswert?

Georg S. schrieb:
> Ich hatte mal im Internet gelesen (ohne Quellenangabe) dass der
> STM32F103 recht alt sei und ST bei dem "noch geübt hat" bei der
> Peripherie, und das bei neueren CPUs so einige Unschönheiten besser
> gelöst wären.

Ja. Die F1, F2 und F4 haben alle z.B. die erste Version der 
I2C-Peripherie die sich sehr leicht bei Fehlern verschlucken kann.

> Ich hatte mir letzens den F411 angesehen

auch wenn der F411 ein recht neuer F4 ist, hat die ganze F4-Serie 
durchgehend die selbe Generation von Peripherie. Das wurde also beim 
ersten Baustein der Serie entschieden. Wenn ich mich richtig erinnere 
die F405/F407.

Nach der Einführung der F4-Serie wurde dannn die F0-Serie eingeführt. 
Und die haben dann in dem Moment eine neuere Generation von I2C, den 
Timern, etc. spendiert bekommen.

Heute würde ich mal bei den G4 schauen ob die Dir reichen, das ist eine 
der neuesten Generationen und haben damit die neueste Peripherie.

Und teuer sind sie auch nicht wennn man richtig einkauft:
https://www.lcsc.com/product-detail/Microcontrollers-MCU-MPU-SOC_STMicroelectronics-STM32G474RBT6_C529413.html

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Georg S. schrieb:
> dass der
> STM32F103 recht alt sei und ST bei dem "noch geübt hat"

Die STM32F1 waren 2007 deren Erstlingswerke:-)
- https://en.wikipedia.org/wiki/STM32#History
- https://en.wikipedia.org/wiki/STM32#STM32_F1

Aber generell werden STM32F (und auch die STM32L) mittlerweile durch 
neuere Serien "ersetzt" STM32G/H/U. Die F und L werden derzeit zwar noch 
weiterhin produziert, für ein neues Design sollte man sich aber gut 
überlegen, die noch zu verwenden und eher was aus den aktuelleren Serien 
verwenden.

Das die STM32F103 mal so beliebt waren bringt auch noch mit sich, dass 
es mittlerweile soviele 99% kompatible Nachbauten (oft mit eigenen 
Beschriftungen, gelegentlich auch mal mit STM...) davon gibt, dass es 
schon schwer wird Originale zu bekommen...
- 
https://hackaday.com/2020/10/22/stm32-clones-the-good-the-bad-and-the-ugly/
- Beitrag "STM32F103C8T6 - Fälschung von ST bestätigt"

von Wastl (hartundweichware)


Lesenswert?

Irgend W. schrieb:
> für ein neues Design sollte man sich aber gut
> überlegen, die noch zu verwenden und eher was aus den aktuelleren Serien
> verwenden.

Für ein neues Design sollte man sich aber gut überlegen ob man
nicht etwas an eingebauter Hardware des F407 braucht die in
neueren Controllern nicht mehr vorhanden ist. Für mich ein
KO-Kriterium z.B. ist der Ethernet-Core.

von Georg S. (randy)


Lesenswert?

> ST entwickelt nichts selber, können die gar nicht, und deren BWLer
> wollen dafür auch kein Geld ausgeben.

Und das wo ich mal Lokalpatriotismus zeigen wollte und für meinen 
Einstieg bei den ARM-Prozessoren ST genommen habe...


> Mit etwas Gluck haben modernere uC dann modernere Peripherie - die
> komplett inkompatibel mit der alten ist.

Das verstehen die Erbsenzähler nicht: die CPU ist egal, da kümmert sich 
der Compiler drum. Das kann morgen auch eine RISC-V CPU sein ohne dass 
ich das groß bemerke. Aber die Ansteuerung der Peripherie, in die muss 
man sich einarbeiten. Und das kostet Zeit. Die muss gut, bequem und 
Konsistent sein, und die darf nicht ständig über den Haufen geworfen 
werden.



> Nun ja, der eine sieht das als Nachteil, der andere als Vorteil
> ("aufwärts-Kompatibilität"). Aber im Detail gibt es schon Erweiterungen,

Schon klar, so sehe ich das natürlich auch. Nur dass ich davon hörte 
dass ST beim alten STM32F103 einiges vergurkt hat und ich mich nicht in 
die Quirks&Features von Peripherie einarbeiten wollte die schon 
wesentlich verbessert wurde.


> Heute würde ich mal bei den G4 schauen ob die Dir reichen, das ist eine
> der neuesten Generationen und haben damit die neueste Peripherie.
...
> Aber generell werden STM32F (und auch die STM32L) mittlerweile durch
> neuere Serien "ersetzt" STM32G/H/U.

Das war genau die Art Info für die ich gesucht habe. Dann weiß ich wohin 
ich schauen muss wenn ich die Software mal vom F103 weg migrieren will.

Vielen Dank.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Georg S. schrieb:
> Nur dass ich davon hörte dass ST beim alten STM32F103 einiges vergurkt hat

Empfinde ich nicht so. Mit fällt nur das I²C Interface ein, für dessen 
Bug gibt es aber einen gut dokumentierten Workaround.

Neuere Modelle haben eben mehr Features und sind ein bisschen anders. 
Das ist bei AVR nicht anders, da hat sich auch viel verändert. Sogar so 
viel, dass ich die neuen ATtinies nicht mehr ATtiny genannt hätte.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Georg S. schrieb:
> Aber die Ansteuerung der Peripherie, in die muss
> man sich einarbeiten. Und das kostet Zeit.

Naja, man ist mit der Peripherie nicht verheiratet. Von einem F1 auf 
einem G0 umzusteigen ist halb so schlimm. Das meiste wird eh von der HAL 
Library gekapselt (die mittlerweile tatsächlich auf einem benutzbaren 
Zustand ist). Sich auf einen F1 oder G0 oder F4 festzulegen nur wegen 
ein paar Unterschieden in der Peripherie ist nicht so sinnvoll.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Der direkte Nachfolger vom F103 ist der F303, dazu gibt's extra ein 
Dokument
https://www.st.com/resource/en/application_note/dm00073522-migrating-from-stm32f1-series-to-stm32f3-series-microcontrollers-stmicroelectronics.pdf

Irgend W. schrieb:
> Aber generell werden STM32F (und auch die STM32L) mittlerweile durch
> neuere Serien "ersetzt" STM32G/H/U

Ja. Leider kommt das Angebot für Hobbybastler nicht so schnell mit. 
Schon für den F303 gibt es nur wenige Anleitungen und Boards, für die 
G/H/U Serien noch weniger.

Die L0 Serie ist einfach, macht auf mich dennoch einen deutlich 
moderneren und aufgeräumteren Eindruck, als F1. Insbesondere kommt es 
mir so vor, als ob das Reference manual deutlich ausfühlicher 
geschrieben wurde und damit für mich als Anfänger besser verständlich, 
als die die anderen STM32. Für mich sind die L0 der logisch nächste 
Schritt nach AVR.

: Bearbeitet durch User
von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Georg S. schrieb:
> Und das wo ich mal Lokalpatriotismus zeigen wollte und für meinen
> Einstieg bei den ARM-Prozessoren ST genommen habe...

Ist ja nicht so dass die F1 eine Vollkatastrophe sind. Es ist doch wie 
immer, es setzt sich nicht das absolut Beste durch, sondern was gut 
genug ist.

Man könnte auch sagen F1 und Clone MCUs programmieren zu können ist ein 
vermarktbares Wissen. Auch wenn für Neuentwicklungen neuere STMs 
genommen werden sollten (gibt aber kein Gesetz dazu :)), gibt es noch 
genug Neu- und Weiterentwicklungen die mit F1 weiter machen. Alt, 
bewährt, ausreichend gut verstanden.

> Aber die Ansteuerung der Peripherie, in die muss
> man sich einarbeiten. Und das kostet Zeit.

Ist doch egal wenn man dafür bezahlt wird.

> Schon klar, so sehe ich das natürlich auch. Nur dass ich davon hörte
> dass ST beim alten STM32F103 einiges vergurkt hat und ich mich nicht in
> die Quirks&Features von Peripherie einarbeiten wollte die schon
> wesentlich verbessert wurde.

Die dafür andere Überraschungen bereit halten. Man, also der 
Normalentwickler, will nicht der Erste sein der die Überraschungen 
findet. Lieber per Google Lösungen für bekannte Probleme finden können.

> Das war genau die Art Info für die ich gesucht habe. Dann weiß ich wohin
> ich schauen muss wenn ich die Software mal vom F103 weg migrieren will.

Never change a running system. Schon mal gehört?

Wenn der einzige Grund für eine Migration ist, dass man was Neueres, 
Schöneres nutzen möchte, dann ist das nicht der beste Grund. Meist 
kommen ziemlich junge Kollegen auf die Idee "mal eben" ohne Grund ein 
paar Jahre Entwicklungsarbeit wegzuwerfen um alles Neu zu machen.

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Georg S. schrieb:
> Ich hatte mal im Internet gelesen (ohne Quellenangabe) dass der
> STM32F103 recht alt sei und ST bei dem "noch geübt hat" bei der
> Peripherie, und das bei neueren CPUs so einige Unschönheiten besser
> gelöst wären.

Der F103 ist zwar schon etwas in die Jahre gekommen, aber wenn man sich 
ernsthaft mit den STM32-µControllern beschäftigt, dann liest man auch 
die Erratas der entsprechenden Familien und weiß dann, dass quasi jede 
STM32-Familie irgendwelche Designfehler im Silizium hat – mal ist es 
mehr und/oder ohne Lösungsmöglichkeit, mal etwas weniger und man kann 
das dort beschriebene Problem relativ leicht umgehen, indem man z.B. die 
Registerzugriffe anders vollführt, teilweise hängt es auch von der 
Revision des Chips ab und wird danach unterschieden. Die meisten 
Datenblattphobiker lesen nicht einmal das Reference Manual für die 
Benutzung/Programmierung des µControllers, d.h. so etwas wie wenigstens 
einmal in die Errata schauen kommt einem gar nicht erst in den Sinn. Ich 
persönlich bin kein Fan von dem F103 und den Einstieg in die STM32-Welt 
habe ich direkt mit dem F411RE vollführt – solche Dinge muss aber schon 
jeder selbst abwägen und entscheiden und es hängt vor allem davon ab, 
was man schon vorher weiß und kann. Es gibt auch Leute, die mental 
lebenlang bei einem µController der ganzen STM32-Palette hängenbleiben, 
was dann oft leider auch der F103 ist – für diese spezielle 
Konstellation habe ich dann eventuell nur noch etwas Mitleid übrig, 
ansonsten ist es natürlich nicht mein Problem.

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.