Hallo, ich habe mir nach längeren Recherchen ein STM32 Evaluation Board zugelegt. Einer der Gründe für diesen Controller war, dass man ihn ohne zusätzliche Hardware über die serielle Schnittstelle programmieren kann. Es handelt sich um einen STM32F103VE bei dem die serielle Schnittstelle USART1 über einen MAX3232CSE mit einem herkömmlichen DB9 Stecker verbunden ist. Dabei ist PIN2 des Steckers (über den MAX3232) mit PA10 (RX) und Pin3 mit PA9 (TX) verbunden. Nach meinem Verständnis des Handbuchs sollten also damit die Vorraussetzungen gegeben sein, den Bootloader über USART1 anzusprechen. Aus der o.g. Pinbelegung habe ich geschlossen, dass ich den PC und das Board mit einem Nullmodemkabel verbinden muss, oder liege ich da falsch? Zum beschreiben des internen Flash-Speichers des STM32 wollte ich den Flash Loader Demonstrator von der ST-Seite verwenden (Version 2.0). Allerdings bekomme ich als Meldung immer „Unrecognized Device.. Please reset your device and Try again”. Alternativ habe ich dann versucht, mit einem Terminalprogramm 0x7F an den Bootloader zu senden. Normalerweise sollte dann 0x79 (ACK) als Antwort kommen. Das Ergebnis ist auf zwei PCs unterschiedlich. Auf meinem Laptop (WinXP 32 Bit) erhalte ich als Antwort ebenfalls 0x7F. Auf einem anderen PC (WinXP 64 Bit) kommt gar nichts zurück. Folgendes habe ich als Fehlerquellen bereits ausgeschlossen: Bootkonfiguration (BOOT1=0 und BOOT0=1 sind gesetzt) COM Ports (an verschiedenen Rechnern getestet, Verbindungen untereinander sind möglich) Kabel (Nullmodemkabel zum Test der Kommunikation zwischen zwei PCs funktioniert) COM Settings (8Bits, 1 Stopbit, Even Parity mit verschiedenen Baudraten getestet) Der STM32 selbst funktioniert auch, zumindest läuft ein vorinstalliertes Demo) Jetzt bin leider etwas ratlos, und bin für jeden Tipp dankbar. Danke,Gruß Thomas
Nullmodemkabel klingt aber schon ziemlich nach Quatsch... überprüf das doch noch einmal. Grüße, Axel
Hallo, danke für den Tip. Ich muss mir ertmal ein anderes Kabel besorgen. Kann es sein, dass der MAX3232 defekt ist? Kann man das mit relativ bescheidenem Equipmemt prüfen (Multimeter)? MFG Thomas
Hallo, Da ich den Verdacht hatte, dass evtl. der MAX3232 auf meinem Board defekt sein könnte, habe ich mir noch mal das Datenblatt hergenommen. Wenn ich das richtig verstehe, dann müsste man bei Vcc=3V an V+=5.5V und an V-=-5.5V messen können. In meinem Fall ist Vcc ca. 3.3V. Ich messe V+=6V und V-=-6V. ich denke das sollte soweit ok sein. Ich habe gelesen, dass es auf der TX-Leitung einen sog. Ruhepegel gibt, solange nichts gesendet wird. Dieser sollte zwischen -3V und -15V liegen. Das konnte ich auch an einigen PCs verifizieren, mein STM32 Board hat allerdings nur -2.7V (gemessen am Stecker bei offenem Ausgang). Sollten da nicht auch -6V anliegen, -2.7V wären ja außerhalb der Spezifikation? Sonst bin ich leider noch keinen Schritt weiter. Müssen ausser dem setzen von BOOT0 und BOOT1 sonst noch irgendwelche Voraussetzungen geschaffen werden um den seriellen Bootloader anzusprechen? Mit dem Nullmodemkabel bin ich mir eigentlich sicher, das Board hat ja auch den üblichen männlichen Steckverbinder. Pinbelegung des MAX3232 ist wohl auch dementsprechend (siehe Anhang). Danke und Gruß Thomas
Hallo Thomas, ich hatte vor einiger Zeit auch massive Probleme mit dem Download über den Flashloader. Zunächst noch der Hinweis. den du sicher beachtet hast, das der Bootloadermode erst nach Poweron/Reset mit der Boot 0/1-Belegung eingenommen wird. Nun zum Flashloader, bei mir war wohl ein Installationsproblem die Ursache. Es gab im Laufe der Zeit verschiedene Flashloader-Versionen, die ich dann immer fleißig updatete. Erst eine Neuinstallation mit vorheriger Deinstallation und Beseitigung aller Leichen inklusive Registry brachte ein positives Ergebnis zur Folge. Noch eine Frage, benutzt dein Demoprogramm zufällig die serielle Schnittstelle ? Dann kannst du vom Board + Kabel + PC alles durchtesten. Ansonsten gibt es hier: http://code.google.com/p/stm32flash/ noch ein alternatives Konsolenprogramm, habe ich selbst aber nicht getestet. Gruß
Hallo, danke für die Hinweise. BOOT0 und BOOT1 habe ich im ausgeschalteten Zustand gesetzt und dann das Datenkabel verbunden. Danach erst habe ich die Spannungsversorgung eingeschaltet. Ich denke die Reihenfolge sollte in Ordnung sein. Das einschalten der Spannungsversorung sollte ja auch als RESET gelten, oder nicht? Die PC-Software habe ich als letztes gestartet. Um den Flashloader zu umgehen habe ich ein simples PC-Terminalprogramm für die COM-Schnittstelle verwendet. Damit sende ich nur ein Byte (0x7F). Das selbe macht auch der Flashloader (getestet mit einem zweiten PC). Daher denke ich nicht, dass es daran liegt. Es kommt einfach keine bzw. nicht die erwartete Antwort. Das komische ist, dass sich das Board an verschiedenen PCs unterschiedlich verhält. Eventuell kann ja mal jemand mit ähnlicher Hardware (MAX3232 an Vcc=3.3V) die Spannung auf der TX Leitung im unbelasteten Zustand messen. Dann hätte ich mal einen Vergleichswert. Die -2.7V kommen mir spanisch vor. Die Norm sieht ja einen Bereich von -3 bis 15V vor. Das Demo verwendet scheinbar keine serielle Schnittstelle. Ich kann im Quellcode jedenfalls nichts finden. Es gibt zwar die Initialisierung und auch eine Sendefunktion, die werden jedoch nirgends benutzt. Gruß Thomas
Thomas, was zum Geier misst Du? Tx vom PC oder Tx des Boards? Dass Rx und Tx gekreuzt werden, also Tx-PC auf Rx-Board und umgekehrt, ist Dir bekannt?
Mit dem Kabel hast Du recht. Ich hatte Deine Schaltung nicht gesehen, entschuldige. Wo ich sie aber schon gesehen habe... was passiert denn am RS232, wenn Du den zweiten Tx-Kanal auf High legst? Das wäre doch der unmittelbare Vergleichswert...
Hallo, nachdem ich mich länger nicht gemeldet habe, möchte ich wenigstens nochmal den letzten Stand mitteilen. In der Zwischenzeit hatten wir die Gelgenheit mit einem geliehen Oszi die Signale der seriellen Schnittstelle mal genauer unter die Lupe zu nehmen. Es sieht so aus, als ob vom STM32 keine Antwort mehr kommt. Ich denke da liegt irgendein Defekt vor. Ob eine serielle Kommunikation im normalen Betrieb möglich ist, werde ich noch testen. Inzwischen habe ich mir einen ST-Link Adapter besorgt. Damit funktionierte alles sofort reibungslos. Nochmal vielen Dank für die nützlichen Hinweise und Tipps. Gruß Thomas
Hallo, sorry fuers "hochholen" habe das selbe Problem, das ich via UART keine Verbindung zum Bootloader bekomme. Habe es sowohl mit dem Flash Loader als auch direkt mittels eines Terminalprogramms probiert. Uart ist via USB zu seriell Wandler (PL 2303) angeschlossen, eventuell ist dieser IC auch defekt, zumindest ist an der TX/RX Leitung des stm32 nichts an Kommunikation zu sehen trotz das der Treiber im Windows dafuer sauber installiert ist. Es handelt sich um ein billiges China EVAL Board mit einer installierten Demo Applikation. Mir ist nicht klar inwieweit der BL eventuell loeschbar ist? Mit der Boot0/Reset Sequenz startet die Applikation nicht jedoch scheinbar auch nicht der BL :(. Werde das ganze nochmal mit einer "richtigen" seriellen Schnittstelle testen sonst wird es wahrscheinlich auch ein JTAG Kabel werden ... Gruss Hpman
Bist Du an der richtigen UART? Der Bootloader geht nicht an jeder.
Habe auch so ein "günstiges" China Teil und bei mir ging die USART auch nicht. Nach kurzer Suche war es eigentlich klar was da schuld ist. Im Schaltplan ist ein Max3232 drin, aber verbaut ist ein Max232. Der 232 ist für 5V und somit kann das nicht klappen. Ein Austausch gegen den 3232 hat bei mir geholfen gg Schaut einfach mal genau was verbaut ist.
Hallo, der uC ist ein stm32F103 mit 64 Beinchen, laut den Applikation Notes liegt der serielle BL an USART1, und die sind laut Schaltplan und hoffentlich auch im Layout am PL 2303. TX -> RX und RX -> TX soweit passt das also. Der USB Seriell Wandler scheint USB seitig in Ordnung zu sein, leider lässt sich das auf der seriellen Seite schlecht prüfen da es eine direkte Verbindung zwischen den beiden ICs gibt, man müsste die Leitung auftrennen fuer weitere Untersuchungen ob der stm32 oder der PL 2303. Tja die billigen China Teile haben Ihre Tuecken aber nichts ist langweiliger als wenn alles auf Anhieb funktioniert :). Gruesse Hpman
In dem Schaltplan liegt Boot0 und Boot1 auf GND. Da kann der Bootloader nicht starten. Leg mal Boot0 (nach R9) an 3.3V. Boot1 bleibt auf GND.
Update: sehe gerade das dies auch über S3 geht, aber die 2k dort sind unüblich...
kleines Update, mittels eines exterenen FTDI USB zu seriell Wandlers habe ich mich parallel auf die USART1 geklemmt und damit ging es problemlos. Eine neu kompilierte Software neu aufgespielt tut was sie soll. Schuld scheint der PL 2303 zu sein. Ob HW Defekt, falsch beschalten oder schlecht gelötet kann ich nicht sagen, der Charme eines integrierten USB Programmers kann das EVAL Board leider momentan nicht bieten :)
Hallo Ich weiß ja nicht ob es sich bei dem hier behandelten Board um ein ähnliches handelt, wie ich mir aus China bestellt habe, aber bei mir funktioniert folgender Trick. Ich rufe stm32flash mit diesem loop auf while true; do stm32flash -b9600 -[anderes Kommando] /dev/ttyUSB0; sleep 2; done Erst dann (wenn der loop läuft) schließe ich das Board an die USB Schnitstelle an. BOOT0 ist natürlich in dem Moment des anschaltens überbrückt. Ich benutze dafür meistens einen Schraubendreher. Mein Board ist auch mit einem stm32F103 (stm32F103RBT6) Chip. Es handelt sich auch um den PL2303 USB Serial Konverter. Viele Grüße Willem Bleymüller
Hallo, ich bin ganz begeistert von dem STM32 seriellen Bootloading. Ich habe hier mal beschrieben, wie man mit ganz wenigen Bauteilen das serielle Bootloading für den STM32 super komfortabel automatisieren kann: http://www.firefly-power.de/ARM/sloadhost.html Es benutzt 2 überflüssige RS232-Leitungen, um automatisch Reset und BOOT0 zu betätigen. Das Tool gibt es für Linux und Windows und sogar eins mit Click-Oberfläche. Viele Güße von Marten Petschke
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.