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:
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.
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:
(An diesem Punkt können Sie überprüfen, ob PA9 einen starken hohen Pegel liefert - es scheint, dass es sofort zum TX-Ausgang wird.)
Übrigens verwende ich das Kabel mit 5V-Pegeln und es ist Ok, da die Pins 5V-tolerant sind.
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.
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.
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.
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?
JiriB
Kei