Forum: Mikrocontroller und Digitale Elektronik Stm32F103 Custom Board stabilitätsprobleme


von Tim M. (tm1015)


Angehängte Dateien:

Lesenswert?

Hallo,


ich habe mir eine eigene Platine mit einem STM32F103C8T6 gebaut. Nachdem 
sie nun angekommen ist habe ich einige Probleme.

Der Mikrocontroller wird über SWD und einem ST Link V2/1 ( Nucleo Board) 
mittels Platform IO programmiert ( Habe auch schon die Arduino Ide und 
STM32CubeIde mit HAL probiert).

Das programmieren funktioniert auch soweit ganz gut und der Blink Sketch 
wird ausgeführt.
Nach einiger Zeit (30sek- 10min) jedoch stoppt das Programm plötzlich. 
Der Strom von meinem Labornetzteil sinkt dann auch von ca. 35mA auf 3-4 
mA.
Das Problem lässt sich kurzfristig beheben, wenn ich Pin 9 (VCC) des 
Mikrocontrollers kurz mit dem Lötkolben erwärme, tritt allerdings nach 
kurzer Zeit erneut auf. Kurzschlüsse auf der Platine kann ich eigentlich 
ausschließen, da ich alle Verbindungen unter dem Mikroskop geprüft habe 
und  es schon auf verschiedenen Platinen mit verschiedenen 
Mikrocontrollern ausprobiert habe.


Allerdings messe ich, nachdem das Problem auftritt meist zwischen 0 und 
100Ω zwischen VCC und GND.
Sobald ich den Pin erneut erwärmt habe, sind es wieder einige kΩ. Obwohl 
ich jedoch diesen niedrigen Widerstand zwischen VCC und GND messe 
fließen trotzdem nur 3-4mA.

Ich bin leider vollkommen ratlos, was das sein kann. Hat jemand schonmal 
Erfahrungen damit gemacht? Ich hänge auch nochmal ein paar Bilder von 
dem Schaltplan an.

Vielen Dank!

: Bearbeitet durch User
von John Doe (Gast)


Lesenswert?

Tim M. schrieb:
> Hallo,
>
> ich habe mir eine eigene Platine mit einem STM32F103C8T6 gebaut. Nachdem
> sie nun angekommen ist habe ich einige Probleme.

Ja was denn nun: Hast Du sie gebaut oder ist sie angekommen?
Entscheide Dich!

von Tim M. (Gast)


Lesenswert?

Was habe ich auch erwartet wenn ich hier frage... Wie gewohnt erstmal 
eine unfreundliche Antwort. Ich habe sie selbst erstellt und online 
bestellt.. Wenn du keine sinnvolle Antwort liefern kannst dann lass es 
einfach

von Thomas Z. (usbman)


Lesenswert?

Na dann erklär doch mal wie du einen Widerstand messen kannst wenn die 
Stromversorgung an ist.

: Bearbeitet durch User
von Tim M. (Gast)


Lesenswert?

Indem ich sie vorher abklemme;)

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Tim M. schrieb:
> Was habe ich auch erwartet wenn ich hier frage... Wie gewohnt erstmal
> eine unfreundliche Antwort. Ich habe sie selbst erstellt und online
> bestellt.. Wenn du keine sinnvolle Antwort liefern kannst dann lass es
> einfach

Immer diese Neulinge die hier unformatierten Text hinklatschen, dazu 
kein Layout und bei Nachfragen direkt pampig werden.
Geh woanders Leute nerven!

von Tim M. (tm1015)


Lesenswert?

Ok das mit der Formatierung nehme ich hin.


Allerdings war die erste Antwort weder eine Nachfrage, die irgendwie zum 
Thema gehört hätte oder irgendwie interessant ist, noch war sie 
sonderlich freundlich formuliert.


Ich verstehe nur nicht, wieso es immer solche Nachfragen gibt, wenn die 
Leute das Thema doch offensichtlich nicht interessiert oder sie nichts 
dazu zu sagen haben.

von W.S. (Gast)


Lesenswert?

Tim M. schrieb:
> Sobald ich den Pin erneut erwärmt habe, sind es wieder einige kΩ.

Das sieht aus nach einem kaputten Chip.

Löt ihn aus und nimm einen neuen - aber achte darauf, daß du dessen 
Anschlüsse nicht mit Über- oder Unterspannungen auch wieder beschädigst.

W.S.

von 6a66 (Gast)


Lesenswert?

Moin.

Vbat angeschlossen?
Woher kommen die 3,3V?
Schon mal unter Debugger laufen lassen bis zum Absturz, was hat der 
Debugger dann gesagt?

rgds

von Mehmet K. (mkmk)


Lesenswert?

NRST hat intern ein PullUp, weshalb R1 überflüssig ist.
(5.3.14 NRST pin characteristics)

Deshweiteren gehört an NRST ein 100nF
(Figure 31. Recommended NRST pin protection)

von Bauform B. (bauformb)


Lesenswert?

Tim M. schrieb:
> Allerdings war die erste Antwort weder eine Nachfrage, die irgendwie zum
> Thema gehört hätte oder irgendwie interessant ist, noch war sie
> sonderlich freundlich formuliert.

Freundlich naja, zum Thema gehörend durchaus. Bei seltsamen Fehlern 
hilft jedes Bit Information und natürlich das Layout, am Besten als png 
und brd. Wobei man auf einem gekauften Arduino-Modul eher weniger Fehler 
erwartet als auf einer Eigenkonstruktion, besonders, wenn das Schaltbild 
nicht soo liebevoll gemacht ist.

Mit der Eagle-Konstruktion "3 Pads, aber nur 1 Pin im Schaltplan" kann 
man leicht vergessen, alle VCC- und VDD-Leiterbahnen zu verlegen.

Das Datenblatt sagt
1
Caution:
2
In Figure 10, the 4.7 µF capacitor must be connected to VDD3.
Also nicht irgendwo auf der Platine. Sowas sieht man im Board sofort, im 
Schaltbild finde ich den 4u7 garnicht.

Für VDDA gilt ähnliches, 10n plus 1u werden empfohlen. Ideal wäre noch 
ein Ferrit zwischen 3V3 und VDDA. Da hängen die Oszillatoren und die PLL 
dran, die sind relativ empfindlich.

Viele I/O-Pins enden in der Luft, deshalb sollte das Programm gleich 
nach dem Reset deren Pull-Up einschalten. Offene Eingänge erhöhen die 
Stromaufnahme.

Für die ersten Versuche würde ich immer nur den internen Oszillator HSI 
benutzen, also die Takteinstellungen im RCC garnicht anfassen.

: Bearbeitet durch User
von auswanderer (Gast)


Lesenswert?

Sieht mit nach VBAT an 3.3V vergessen aus...mach mal einen Draht 
zwischen 3.3V und wohl am Einfachsten zur positiven Seite von C1 - ja 
nicht polar, ich mein die Seite die nicht an GND haengt.

Ich vermut der C1 laedt sich langsam ueber VBAT auf und dann kommt es zu 
Stoereffekten nach einiger Zeit.

von Markus M. (adrock)


Lesenswert?

Eine Diskussion zu VBAT gab es hier auch schonmal, allerdings ohne eine 
Erklärung für die Empfehlung ihn mit VDD zu verbinden:

Beitrag "STM32 VBAT Eingang"

von drm (Gast)


Angehängte Dateien:

Lesenswert?

Im Schaltplan hat der uC 44 Pins, in CubeMX 48 Pins.
Nach dem Pinout vom uC fehlen im Schaltplan mehrere VCC/VSS Pins.
Und natürlich gehört VBAT an VCC.
Ebenfalls fehlt ein 100nF an Reset gegen GND.

Ein Foto vom Layout würde bei der weiteren Begutachtung helfen.

von drm (Gast)


Angehängte Dateien:

Lesenswert?

so kann ein aufgeräumtes Schaltplansymbol für den uC aussehen.

von Tim M. (tm1015)


Angehängte Dateien:

Lesenswert?

Also viele Dank erstmal an alle. Ich hoffe es ist OK, wenn ich in einem 
Post auf mehrere Ding antworte. Oder ist das nicht so gerne gesehen?



Ja das mit dem Vdd an Vbat habe ich übersehen, allerdings habe ich das 
eben mal schnell korrigiert und es hat sich leider nichts geändert.


Und nein, es fehlen keine Vdd/Vss Pins, wie bauformb schon erwähnt hat, 
sind einfach alle Vdd/Vss Pins an ein Pin im Symbol gehängt, weshalb 
hier nur 44 anstatt 48 Pins zu sehen sind. Obwohl ich sonst das meiste 
selbst erstelle, hatte ich das Symbol damals von SnapEda geholt, da ich 
keine Lust hatte eines selbst zu erstellen.



Bauform B. schrieb:
> Also nicht irgendwo auf der Platine. Sowas sieht man im Board sofort, im
> Schaltbild finde ich den 4u7 garnicht.


Auch den habe ich nachträglich hinzugefügt, allerdings hat das auch 
nichts geändert.


Den 100nF an Reset werde ich Ende der Woche mal ausprobieren, wenn ich 
meine Klausuren rum habe.



Mehmet K. schrieb:
> NRST hat intern ein PullUp, weshalb R1 überflüssig ist.
> (5.3.14 NRST pin characteristics)


Ja und das hatte ich tatsächlich gestern auch entdeckt. Ich hatte mich 
primär nach dem BluePill Schematic gerichtet, da war auch ein externer 
10kΩ Widerstand an NRST. Aber das sollte ja eigentlich keine Probleme 
hervorrufen oder?

drm schrieb:
> Ein Foto vom Layout würde bei der weiteren Begutachtung helfen.



Ich hänge mal ein PNG vom Layout mit rein, vielleicht hilft das ja was

von drm (Gast)


Lesenswert?

>Ich hänge mal ein PNG vom Layout mit rein
das Layout endet an der Platinenkante, aka PCB Outline
Es fehlen die Powerlagen in Screenshot.

>Symbol damals von SnapEda geholt,
>da ich keine Lust hatte eines selbst zu erstellen.
gern gemachter Fehler

von Tim M. (tm1015)



Lesenswert?

drm schrieb:
> das Layout endet an der Platinenkante, aka PCB Outline



Ja allerdings ist das Board relativ groß, da würde man nichtsmehr 
erkennen. Allerdings sind dort keine Komponenten mehr gelötet. Alles was 
gelötet ist, bis auf den ST Link Connector sind auf dem Screenshot drauf

EDIT: Wie lösche ich ein Bild? Das eine ist leider doppelt

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tim M. schrieb:
> Das Problem lässt sich kurzfristig beheben, wenn ich Pin 9 (VCC) des
> Mikrocontrollers kurz mit dem Lötkolben erwärme
Ist es tatsächlich ein Temperaturproblem? Kannst du das Problem mit 
Kältespray forcieren?

Tim M. schrieb:
> Alles was gelötet ist, bis auf den ST Link Connector sind auf dem
> Screenshot drauf
Kannst du mal ein halbwegs scharfes Foto von der gelöteten Platine 
machen?

Tim M. schrieb:
> EDIT: Wie lösche ich ein Bild?
Du kannst das nicht. Ich habe das für dich erledigt.

von Tim M. (tm1015)


Lesenswert?

Lothar M. schrieb:
> Ist es tatsächlich ein Temperaturproblem? Kannst du das Problem mit
> Kältespray forcieren?


Denke nichts, dass es was mit der Temperatur zu tun hat. Vielleicht 
entläd sich etwas durch das löten oder so...


Kann ein Bild schicken, allerdings erst ende der Woche, da ich zwecks 
Klausuren in mein Studienort gefahren bin und alles daheim gelassen 
habe. Vielleicht kann mein Vater heute Abend ein Bild machen, dann 
schicke ich es!

von Paul (Gast)


Lesenswert?

10...10nF gegen GND an NRST fehlen.
Vbat gehört an 3,3V, da vermute ich dein Problem.
Sind die Abblockkondensatoren nahe an den VCC/VDD Anschlüssen?

So machen es die Jungs von ST selbst, hier solltest du mal rein schauen:
Schaltplan Nucelo Board
https://www.st.com/resource/en/data_brief/nucleo-f103rb.pdf

VG Paul

von Paul (Gast)


Lesenswert?

Sehe gerade das im F103 Datenblatt der Schaltplan gar nicht drin ist. 
Nimm dir einen Artverwandtes Nucleo, bei den meisten sind die 
Schaltpläne drin ;).

von Tim M. (tm1015)


Lesenswert?

Ja das mit dem VBat hört sich für mich eigentlich auch am sinvollsten 
an. Vielleicht habe ich heute morgen auf die schnell auch etwas falsch 
gemacht weshalb es mit der Korrektur nicht funktioniert hat.


Ich werde ende der Woche nochmal die Vbat lösung + den Kondensator an 
NRST probieren und hoffen, dass es damit funktioniert.
Die Abblockkondensatoren sollten eigentlich alle nahe genug dran sein 
aber du sieht ja das BoardLayout vielleicht siehst du das anders.


Ja im Nachhinein betrachtet hätte ich mir lieber das Nucleo 64 Board als 
Vorlage nehmen sollen als das BluePill Board. Ich werde das alles mal 
probieren und wenn es klappt dann eine V2 erstellen


Danke schonmal!

von Stefan F. (Gast)


Lesenswert?

Soweit ich weiß versorgt der Vbat Pin die RTC und die Pins PC13, PC14 
und PC15. Solange man diese Pins nicht belastet, genügt der interne 
Umschalter von der Versorgungsspannung. Aber wenn die Pins nennenswert 
belastet werden (ich glaube die Schwelle war 2mA), braucht man an Vbat 
eine Versorgungsspannung.

von Tim M. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Soweit ich weiß versorgt der Vbat Pin die RTC und die Pins PC13, PC14
> und PC15. Solange man diese Pins nicht belastet, genügt der interne
> Umschalter von der Versorgungsspannung. Aber wenn die Pins nennenswert
> belastet werden (ich glaube die Schwelle war 2mA), braucht man an Vbat
> eine Versorgungsspannung.



Hmm ok also zumindest in dem derzeitigem Setup werden diese Pins nicht 
belastet..

von Uwe Bonnes (Gast)


Lesenswert?

Fehlendes C an NRST ist aber ein guter Kandidat fuer das Einfangen von 
Stoerungen.

von W.S. (Gast)


Lesenswert?

Uwe Bonnes schrieb:
> Fehlendes C an NRST ist aber ein guter Kandidat fuer das Einfangen von
> Stoerungen.

Sehe ich genau so.
Bei näherem Betrachten ist die Schaltung dieser LP ausgesprochen lausig 
- und das nicht nur wegen der äußerlichen Form.

- VBat gehört an eine Spannung: entweder an Vcc oder an eben eine 
Batterie.
- Reset gehört an eine Kombination aus Hochzieh-Widerstand und 
Kondensator -  22k und 10nF sollten in den meisten Umgebungen 
ausreichen.
- SWCLK und SWDIO sollten auch per Widerstand auf gültige Pegel gelegt 
werden.
- RxD sollte ebenfalls einen R als Hochzieher bekommen.
- all die anderen verwendeten Signale/Pins sollten ebenfalls saubere 
Pegel kriegen. Ich setze hier mal voraus, daß dies auf einem anderen 
Schaltungsblatt enthalten ist.

Ich bin zwar durchaus kein sonderlicher Fan der STM32, habe aber 
mittlerweile bereits eine ganz stattliche Anzahl dieser Chips und 
darunter eben auch eine Menge von STM32F103C8T6 in verschiedensten 
Projekten verbaut - und dabei ist mir noch nie irgend eine Instabilität 
untergekommen. Das Einzige, was mit mal widerfahren war, waren 
Abstürze die dadurch verursacht wurden, daß ich es vergessen hatte, die 
für die Taktrate nötigen Waitstates einzustellen.

W.S.

von Bauform B. (bauformb)


Lesenswert?

W.S. schrieb:
> - Reset gehört an eine Kombination aus Hochzieh-Widerstand und
> Kondensator -  22k und 10nF sollten in den meisten Umgebungen
> ausreichen.
> - SWCLK und SWDIO sollten auch per Widerstand auf gültige Pegel gelegt
> werden.

Warum empfiehlt ST dann "100n, kein R" am Reset?
Warum sagt ST "SWCLK und SWDIO haben interne Pull-Down bzw. Pull-Up, 
keine externen Bauteile nötig"?
Jedes Bauteil mehr ist eine Fehlerquelle mehr und ein wenig mehr Antenne 
um Störungen einzufangen.

Wir sind uns einig, dass VBAT an 3V3 gehört -- auf diesem Board.

Auf einem Board mit Batterie ändert sich die VBAT-Spannung von Null auf 
3.7V und ganz langsam wieder auf Null. Das sollte gefälligst keine 
undefinierten Zustände erzeugen, also dürfte auch 1uF und sonst nichts 
(wie hier) keine Probleme machen. Außer, wenn es beim F103 noch 
nicht funktioniert hat.

von Franz (Gast)


Lesenswert?

Um einen Hardware-Fehler im Bereich des Quarzoszillators auszuschließen, 
ändere das Programm auf die Verwendung vom internen RC-Oszillator.
Außerdem wäre auch ein Test mit minimalem Programm ("Blinky-Code") 
empfehlenswert.

von Tim M. (Gast)


Lesenswert?

Franz schrieb:
> Um einen Hardware-Fehler im Bereich des Quarzoszillators auszuschließen,
> ändere das Programm auf die Verwendung vom internen RC-Oszillator.


Ja das hatte ich mir auch schon überlegt, aber leider hat das auch 
nichts geholfen gehabt


Und ich lass die meiste Zeit nur einen Blink Sketch laufen

von Tim M. (tm1015)


Lesenswert?

Hallo nochmal an alle,

Ist zwar etwas spät aber ich wollte mich nochmal bedanken.


Ich habe nochmal ein neues Board mit allen vorgeschlagenen 
Verbesserungen bestellt  und habe es mittlerweile gelötet. Es läuft seit 
einer Woche bislang ohne Fehler.


Ich weis nicht, was den Ausschlag gegeben hat ( Vielleicht auch eine 
Kombination als allen) aber Hauptsache es läuft:)

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.