Versuch, STM32f030f4 (ARM, Cortex M0) zu flashen - was ist die richtige Verkabelung?

Ich habe STM32F030F4-Chips aus dem Shop bekommen, einen kleinen Steckbrettadapter dafür gemacht und versucht, über USART1 eine Verbindung zu seinem eingebauten Bootloader herzustellen.

Ich bin gescheitert und bin etwas verwirrt über die Verkabelung. Mein aktueller Schaltplan ist folgender:

  • Pin 16 (VDD) auf +3.3
  • Pin 15 (GND) auf GND
  • Pin 1 (BOOT0) auf +3.3
  • Pin 4 (RESET) vorübergehend auf GND
  • Pin 8 (USART1_TX) an RX des FTDI-Kabels
  • Pin 9 (USART1_RX) an TX des FTDI-Kabels

Das Kabel verwende ich ständig mit NXP-Chips, also denke ich, dass es verwendet wird. Es liefert auch +3,3 Volt und hat LEDs zur Anzeige der TX/RX-Aktivität.

Ich habe dieses Tool http://sourceforge.net/projects/bootstm32/ ausprobiert , nachdem ich das Kabel angeschlossen und RESET vorübergehend auf GND angewendet hatte.

Magischerweise konnte es keine Verbindung herstellen, obwohl ich die TX-Aktivitäts-LED blinken sehe ...

Ich habe das Datenblatt erneut überprüft und bin etwas verwirrt. Es gibt auch Pins 17 und 18 für USART1 TX und RX. Ich habe sie auch ausprobiert, aber ohne Erfolg.

Ein weiteres Problem ist, dass dieser Chip meiner Meinung nach keinen BOOT1-Pin hat (viele Handbücher schreiben darüber, ihn niedrig zu fahren). Also nehme ich an, dass es nicht nötig ist?

Ich dachte auch, ich könnte mit einem Multimeter testen, ob sich einer der Pins in einem starken HIGH-Zustand befindet, der TX sein sollte - aber keiner. Obwohl TX wahrscheinlich erst nach Abschluss der automatischen Baudratenerkennung auf Ausgabe geschaltet wird?

Was kann noch falsch sein? Ich denke, ich brauche keinen Quarz für den einfachsten Schaltplan, ja? Danke im Voraus für eure Hinweise!

UPD gelöst! Es schien, dass VDDA auch angeschlossen werden sollte, sonst ist der Chip im Reset-Zustand. Weitere Einzelheiten finden Sie in meiner eigenen Antwort unten.

Antworten (3)

Endlich habe ich gefunden, was gefehlt hat.

VDDA sollte angeschlossen sein! zB zu VDD. Ich glaube, wenn das Gerät auch VSSA hat, sollte es auch angeschlossen werden.

Andernfalls befindet sich der Chip "dank" der Funktionalität, die sowohl VDD als auch VDDA überwacht, im Reset-Modus und lässt den Chip einfach nicht starten.

Die minimale Verbindung ist also so:

  • 3,3 Volt an VDD, VDDA, BOOT0
  • GND zu VSS (und VSSA falls vorhanden)

(An diesem Punkt können Sie überprüfen, ob PA9 einen starken hohen Pegel liefert - es scheint, dass es sofort zum TX-Ausgang wird.)

  • PA9 (TX) zum RX des Kabels (in meinem Fall ist kein Pull-up erforderlich, da es sich um einen voll funktionsfähigen Ausgang handelt)
  • PA10 (RX) an den TX des Kabels.

Übrigens verwende ich das Kabel mit 5V-Pegeln und es ist Ok, da die Pins 5V-tolerant sind.

Vielen Dank! Ich habe den gleichen Fehler gemacht (war zu faul, VDDA anzuschließen) und verbrachte zwei Tage damit, herauszufinden, was falsch ist.
Über genau das gleiche Problem bin ich auch gestolpert. VDDA wird nirgendwo erwähnt (außer in Ihrem Beitrag), aber sobald ich es an die Stromversorgung angeschlossen hatte, fing alles auf magische Weise an zu arbeiten. Vielen Dank!

Ausgehend vom Referenzhandbuch des STM32F030x4 , Seite 45, Abschnitt Embedded Boot Loader:

Der eingebettete Bootloader befindet sich im Systemspeicher und wird während der Produktion von ST programmiert. Es wird verwendet, um den Flash-Speicher über eine der folgenden seriellen Schnittstellen neu zu programmieren:
• USART an Pins PA14/PA15 oder PA9/PA10
• I2C an Pins PB6/PB7 (nur STM32F070xx- und STM32F030xC-Geräte)
• USB-DFU-Schnittstelle (nur STM32F070xx-Geräte)
Weitere Einzelheiten finden Sie in AN2606 .

Wenn Sie das andere empfohlene Dokument ( AN2606 ) weiter lesen, werden Sie feststellen, dass Sie mit PA9/PA10 gehen sollten, da der Bootloader auf diesen Pins konfiguriert ist. (Oder PA14/PA15, aber Ihr Chip sollte ein 20-poliges TSSOP20-Gehäuse sein, wenn Boot0 Pin1 ist, also gibt es keinen PA15.) Außerdem haben Sie Recht, es ist kein externer Quarz erforderlich, die MCU wird von HSI getaktet.

Geben Sie hier die Bildbeschreibung ein

Für die Anforderungen an die Hardwareverbindung werden Pull-up-Widerstände auf TX- und RX-Leitungen benötigt, wenn sie nicht auf der Hostseite hinzugefügt werden.

Geben Sie hier die Bildbeschreibung ein

Außerdem finden Sie Informationen zum Boot0-Pin und zum nBoot1-Bit (bei dieser MCU ist Boot1 kein Pin, sondern ein Bit im User-Option-Byte).

Der STM32F03xx4/6-Bootloader wird durch Anwenden von Muster2 aktiviert

und Muster2 ist:

Muster2 Boot0(Pin) = 1 und nBoot1(Bit) = 1


Am besten wäre es, wenn Sie die UART-Leitungen mit einem Oszilloskop oder Logikanalysator überprüfen könnten, nur um sicherzugehen. Überprüfen Sie auch diese Software und lesen Sie alle zugehörigen Dokumente von ST.

Danke für den Link zum "Referenzhandbuch", ich bin ein sehr dummes Mädchen, dieses Dokument komplett zu verpassen! Ich habe über "Optionsbytes" gelesen und es sieht standardmäßig so aus, als wäre nBOOT1 = 0. Also brauche ich einen Weg, um es zu überschreiben, um fortzufahren :( Was "diese Software" angeht - es scheint nicht für den Betrieb unter Linux gedacht zu sein, sonst werde ich es sicher versuchen!
Oh nein, ich liege falsch! nBOOT1 sollte in der Werkseinstellung 1 sein, wenn ich das Referenzhandbuch richtig verstehe ... Das sollte also nicht das Problem sein.

Ich weiß nichts über die stm32f0-Serie, aber stm32f1 hat BOOT0 auf 3,3 V eingestellt, BOOT1 weiß nicht einmal, was sein Zweck ist, also ist es immer an derselben Position. BOOT0 muss hoch sein, wenn Sie das Gerät einschalten, dann geht es in den Bootloader-Modus, Sie müssen nicht erneut zurücksetzen, stellen Sie zumindest sicher, dass Sie beim Zurücksetzen BOOT0 hoch haben, sonst startet es mit dem Programm. Im Bootloader-Modus hat der XTAL keine Bedeutung, möglicherweise verwendet er die interne LSI.
Die Frage ist: Warum verwenden Sie nicht die offizielle ST-Bootloader-GUI für die Übertragung? Glaubst du nicht, dass ein benutzerdefinierter Bootloader von Sourceforge nicht 100% in Ordnung ist?

Vielen Dank für Ihre Antwort. Ich verwende keine offizielle ST-Bootloader-GUI, hauptsächlich weil ich kein Windows zur Hand habe ...