Forum: Mikrocontroller und Digitale Elektronik STM32 lässt sich nicht pogrammieren


von O_o (Gast)


Lesenswert?

Hallo zusammen,

ein STM32F302RBT6 lässt sich in meiner Schaltung nicht programmieren. 
Ich habe die Spannungen überall nachgemessen und alles passt. 100nF sind 
an jedem VCC Pin angeschlossen. Den Boot0 Pin kann man mit einem Jumper 
auf HIGH oder LOW ziehen. An diesem Pin sind zusätzlich 47k 
angeschlossen.

Es funktioniert trotzdem nicht. Die SWD Schnittstelle habe ich mehrmals 
überprüft und es passt. Wo könnte der Fehler hierfür liegen?

MfG

von Walter T. (nicolas)


Lesenswert?

Was siehst Du mit dem Oszilloskop an den SWD-Leitungen, wenn Du zu 
programmieren versuchst?

von O_o (Gast)


Lesenswert?

Walter T. schrieb:
> Was siehst Du mit dem Oszilloskop an den SWD-Leitungen, wenn Du zu
> programmieren versuchst?

Oszi habe ich noch nicht probiert. Die Konsole zeigt nur, dass kein 
Target gefunden worden ist. Ich programmiere mit einem originalen ST 
Link V2.

von pegel (Gast)


Lesenswert?

SWD im Chip abgeschaltet?

Probier "connect under reset".

von J. -. (Gast)


Lesenswert?

VDDA und VSSA angeschlossen?
VCAP_1 und VCAP_2 wie im Datenblatt über Kondensator an Masse?

von O_o (Gast)


Lesenswert?

Jürgen S. schrieb:
> VDDA und VSSA angeschlossen?
> VCAP_1 und VCAP_2 wie im Datenblatt über Kondensator an Masse?

Ja alles beachtet. Muss man den eigentlich VBAT beschalten?

von Bimbo. (Gast)


Lesenswert?

Zeig uns doch einfach mal den Schaltplan.

von J. -. (Gast)


Lesenswert?

O_o schrieb:
> Ja alles beachtet. Muss man den eigentlich VBAT beschalten?
Nein.

Neben den noch offenen Fragen (connect under reset, PA13/14 anderweitig 
belegt) kann es auch sein, daß der Quarz nicht schwingt, falls HSE 
programmiert ist.

Wenn Du so nicht weiterkommst, den Bootloader PA9/PA10 probieren.

von Stefan F. (Gast)


Lesenswert?

Hast du die Möglichkeit, deinen Programmieradapter an einem anderen 
Mikrocontroller zu testen?

von O_o (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Hast du die Möglichkeit, deinen Programmieradapter an einem
> anderen
> Mikrocontroller zu testen?

Das habe ich bereits gemacht. Da geht es.

Auf der aktuellen Platine ist noch ein FTDI Chip drauf. Ich wollte neben 
SWD den Chip noch mit einem Bootloader progammieren. Der DTR Pin ist mit 
dem RESET Anschluss des Controllers verbunden. Ein Taster für 
HArdware-Reset ist ebenfalls vorhanden. Den RTS Pin habe ich invertiert, 
damit für die SWD Programmierung der Boot0 Pin auf Masse gezogen wird.

Es geht aber nicht. Den FTDI Chip erkennt der Rechner. Aber SWD klappt 
nicht.

von pegel (Gast)


Lesenswert?

Wenn die beiden SWD Pins frei sind und Reset unabhängig steuerbar, 
bleibt meine Vermutung: "connect under reset".

von Cyblord -. (cyblord)


Lesenswert?

Genau dieses Problem habe ich immer wenn ich wieder VSSA vergessen 
haben. Aber wurde dem TE ja schon gesagt.

von Joerg (Gast)


Lesenswert?

Meines Wissens muss VBAT beschaltet werden

von Joerg (Gast)


Lesenswert?

Sorry, nicht VBAT sondern VDDA

von Joerg (Gast)


Lesenswert?

Oder vielleicht doch?!?

Aus AN4206:

"If no external battery is used in the application, it is highly 
recommended to connect VBAT externally to VDD."

von Cyblord -. (cyblord)


Lesenswert?

Joerg schrieb:
> Sorry, nicht VBAT sondern VDDA

Ja sorry ich meinte auch VDDA und nicht VSSA.

von O_o (Gast)


Lesenswert?

Hallo nochmals,

ich habe das Problem gefunden. Der Grund lag bei mir an der falschen 
Umsetzung zur Nutzung der SWD Schnittstelle und der Verwendung eines 
FTDI Chips. Beides funktioniert zusammen nicht. Mit der DTR Leitung 
wollte ich den Controller einem Reset unterziehen, während der RTS Pin 
den BOOT0 auf HIGH legen sollte. Die DTR Leitung führt zum RST Anschluss 
des Controllers. Die RST Leitung des ST V-Link ebenso. Die DTR Leitung 
störte wohl den Programmer, sodass die SWD Schnittstelle nicht ging. Ich 
habe die DTR Leitung auf der Platine weggekratzt. Und siehe da, der ST 
Programmer reagiert wieder :)

Ich muss das wohl anders lösen. Ich dnke euch trotzdem für eure Hilfe.

MfG

von Cyblord -. (cyblord)


Lesenswert?

O_o schrieb:
> Hallo nochmals,
>
> ich habe das Problem gefunden. Der Grund lag bei mir an der falschen
> Umsetzung zur Nutzung der SWD Schnittstelle und der Verwendung eines
> FTDI Chips. Beides funktioniert zusammen nicht. Mit der DTR Leitung
> wollte ich den Controller einem Reset unterziehen, während der RTS Pin
> den BOOT0 auf HIGH legen sollte. Die DTR Leitung führt zum RST Anschluss
> des Controllers. Die RST Leitung des ST V-Link ebenso. Die DTR Leitung
> störte wohl den Programmer, sodass die SWD Schnittstelle nicht ging. Ich
> habe die DTR Leitung auf der Platine weggekratzt. Und siehe da, der ST
> Programmer reagiert wieder :)

Dass du statt normalem SWD so einen Zirkus machst, wäre mal eine echt 
wichtige Info am Anfang gewesen.

von Theor (Gast)


Lesenswert?

O_o schrieb:
> Hallo nochmals,
>
> ich habe das Problem gefunden. [...]

> Die DTR Leitung führt zum RST Anschluss
> des Controllers. Die RST Leitung des ST V-Link ebenso. Die DTR Leitung
> störte wohl den Programmer, sodass die SWD Schnittstelle nicht ging.
> [...]

Hm. D.h. keine Widerstände oder sonst irgendwelche Bauteile? Du hast 
direkt RST von ST-Link, die DTR-Leitung und Reset von SWD miteinander 
verbunden? Habe ich das richtig verstanden?

Magst Du die nicht funktionierende Schaltung mal ausschnittsweise kurz 
skizzieren? Schreibe bitte auch die Bezeichnung des FTDI-Chips hin.

Das hilft im Forum vielleicht, weitere gleichartige Fälle schnell zu 
erkennen.

von O_o (Gast)


Lesenswert?

Theor schrieb:
> Magst Du die nicht funktionierende Schaltung mal ausschnittsweise kurz
> skizzieren? Schreibe bitte auch die Bezeichnung des FTDI-Chips hin.
>
> Das hilft im Forum vielleicht, weitere gleichartige Fälle schnell zu
> erkennen.

Klar, gerne :)

von Stefan F. (Gast)


Lesenswert?

Theor schrieb:
> Magst Du die nicht funktionierende Schaltung mal ausschnittsweise kurz
> skizzieren?

Wenn er das vorher gemacht hätte, hätte er den Fehler sicher selbst 
bemerkt.

von O_o (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe euch den Schaltplan grob gezeichnet. So wie in der Abbildung 
geht das nicht.

Ich habe mit dem FT_Prog den FTDI Chip eingestellt. RTS habe ich 
invertiert und DTR ist so geblieben. Das ging leider nicht. Den ST Link 
V2 erkennt er so nicht.

MfG

von Theor (Gast)


Lesenswert?

Dankeschön,  O_o.

von Ralph S. (jjflash)


Lesenswert?

Jetzt wollte ich schon des FTDI (und die Art und Weise wie du den 
verschaltet hast) sagen, sehe aber im Threadverlauf, dass da der Hund 
begraben war...

Joerg schrieb:
> Meines Wissens muss VBAT beschaltet werden

Ich hatte ein PCB für einen STM32F103 geroutet und hierbei den 
VBAT-Anschluss frei gelassen.

Irgendwann kam ich auf die Idee, auch einmal mit einem STM32F302CBT6 
(weil Cortex M4) zu spielen und habe diesen Chip (weil in den 
wichtigsten Teilen Pinkompatibel) auf diese Platine gesetzt und siehe 
da:

Funktionierte problemlos.

Auch wenn der TO einen STM32F302RBT6 hat, würde ich sagen, dass VBAT 
nicht zwingend angeschlossen sein muss.

Auch wenn mir hierfür der "Hintern versohlt" wurde:

Wenn du unter Linux arbeitest, könntest du dir das hier evtl. ansehen:

Beitrag "Bootloader control für STM32 und LPC 32-Bit Mikrocontroller"

Dadurch, dass ein ATtiny13 die Aktivierung des seriellen Bootloaders 
beim STM32 übernimmt, ist es egal, wie ein Terminalprogramm evtl. die 
RTS und DTR - Leitungen hinterlassen.

Diese Art der Aktivierung des Bootloaders funktioniert bei mir schon 
seit ein paar Jahren ohne Komplikationen (und funktioniert auch dann 
logischerweise noch, wenn SWD softwareseitig abgeschaltet wurde).

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.