Ich mache eine Platine für ein persönliches Projekt mit dem Mikrocontroller STM32L031K6T7. Es sieht so aus, als hätte dieser uC einen Bootloader, mit dem der Flash-Programmspeicher über UART oder SPI neu programmiert werden kann. Es hat auch SWD-Pins.
Bedeutet das also, dass ich zwei völlig separate, aber gleichermaßen gültige Methoden habe, um dieses uC zu programmieren, wenn ich möchte? Ich verstehe, dass ich mit meinem J-Link-Debugger eine Schnittstelle zu SWD herstellen kann, aber wie würde ich eine Schnittstelle zur Bootloader-Methode herstellen?
Ich vermute, dass ich ein Gerät als Schnittstelle zwischen dem USB meines Computers und dem UART- oder SPI-Bus des uC benötigen würde, aber ich bin mir nicht 100% sicher. Und dann frage ich mich, ob ich mir Sorgen machen muss, was passieren würde, wenn ich den SPI-Bus mit anderen Geräten bestückt hätte und dann die Bootloader-Methode ausprobiert habe, um ihn zu programmieren. Müsste das Programmiergerät nicht der SPI-Master sein, um die Kommunikation mit dem uC als Slave zu starten?
Ja. Viele STM32-Geräte verfügen über einen integrierten Bootloader. Siehe die Dokumentation zum Auslösen. Dies geschieht oft durch Hochbinden eines Pins während des Einschaltens.
Sie müssen auch das Datenblatt zur Verwendung von SPI und UART im Bootloader-Modus lesen.
Also ja, Sie können das Gerät entweder mit dem Bootloader oder mit SWD programmieren.
SWD wird auch zum Debuggen des Geräts verwendet (z. B. Einzelschritt durch Code, Speicher untersuchen), während der Bootloader nur zum Laden eines Programms dient.
SWD ist eine 4-Draht-JTAG-Schnittstelle ohne Hardware-Reset. JTAG hat mehr Drähte, aber auch eine Reset-Leitung, um den Prozessor über eine Hardware-Leitung zurückzusetzen (der Prozessor könnte in einen Modus geraten, in dem Sie den Prozessor möglicherweise nicht mit einem Software-Debug-Befehl zurücksetzen können, an diesem Punkt müssten Sie ihn aus- und wieder einschalten ) Die JTAG-Schnittstelle kann auch in einem SWD-Modus betrieben werden, in dem Sie nur 2 Drähte für die Kommunikation verwenden.
Es gibt mehrere Möglichkeiten, einen STM32 zu programmieren (externer Flash, USB, externes ROM), aber sie erfordern, dass Code auf dem Prozessor ausgeführt wird, sodass Sie zunächst einen Bootloader und Programmierung benötigen. Sie benötigen sowieso das SWD oder JTAG zum Debuggen.
Ich weiß, es ist alt, aber ich sehe Dinge, die einen Neuling verwirren können.
Die „Bibel“ für den Umgang mit den verschiedenen STM32-Embedded-Bootloadern ist ST-Micros AN-2606, „STM32-Mikrocontroller-Systemspeicher-Bootmodus“, es wird aktualisiert, wenn eine neue Serie veröffentlicht wird. Zum Zeitpunkt dieses Schreibens wurde es zuletzt im Oktober 2019 (d. h. im letzten Monat) aktualisiert.
Als nächstes haben ALLE STM32-Chips mindestens einen eingebetteten seriellen Bootloader. Es ist ein Werks-ROM und kann nicht gelöscht werden. Das bedeutet, dass eine externe Schnittstelle (JTAG/SWD) zum Programmieren eines STM32at in den meisten Fällen nicht erforderlich ist. Achten Sie auf mögliche Spannungsabweichungen.
AN-2605 beschreibt die verschiedenen Methoden zum Aufrufen eines System-Bootloaders. Die Anzahl der verfügbaren Schnittstellen reicht von einer einzelnen USART-Schnittstelle in einigen der frühen STM32F1-Serien bis hin zu den H7, die Monster sind, mit insgesamt 12 Schnittstellen, 3 USART, 3 I2C, 4 SPI, 1 USB (DFU) und 1 FDCAN .
Sie können das alles natürlich ignorieren und einen JTAG/SWD-Adapter verwenden, um die MCU zu programmieren. Diese haben den zusätzlichen Vorteil, dass Sie Ihre Arbeit auch debuggen können.
Tut
orngnr