Hallo liebe Community, ich wollte den STM32L151RDT6 von einer bestückten Platine auslesen. Auf der Platine gibt es Pads um den ST-Link zu verbinden. Von den Pads gibt es Durchgang zu den Beinchen vom STM32. Nachdem ich die Pads mit dem ST-Link verbunden hatte, wollte ich den Chip mit dem STM32CubeProgrammer auslesen. Ich habe alle vorhandenen Modi (Normal, Hot plug, Under reset, ...) sowie "Reset Mode" (Software reset, Hardware reset, Core reset) versucht. In keinem Fall konnte ich eine Verbindung zum STM32 herstellen. Nachdem ich mehrere identische Platinen habe, habe ich von einer den STM32 ausgelötet und in einen "ProgrammerSocket" eingelegt. Anschließend habe ich die PINs mit dem ST-Link verbunden und konnte den Chip direkt verbinden und auslesen (RDP Level 0). Ich verstehe allerdings nicht, weshalb das beim bestückten Board nicht funktioniert hat. Zusammen mit Claude hatte ich versucht eine Antwort auf diese Frage zu finden, allerdings sind wir beide am Ende unseres Lateins angelangt. Zur Platine: Die Platine selbst wird mit 3x AA-Batterien mit Strom versorgt. Für die Programmierung/Konfiguration gibt es einen zusätzlichen USB-Anschluss. Die Platine wird aktiv, wenn ein Knopf gedrückt wird (dann leuchten die LEDs für ein paar Sekunden und gehen kurz darauf wieder aus). Wird das USB-Kabel angeschlossen bleiben die LEDs aktiv. (Ich habe sowohl mit angeschlossenem USB-Kabel als auch ohne keine Verbindung herstellen können.) Claude hatte mir dieses Forum empfohlen, da hier viele Experten unterwegs sind - vielleicht hat jemand von euch eine Idee, warum das mit der Verbindung beim verlöteten Chip nicht klappt. Danke euch :) Grüße Lars
:
Bearbeitet durch User
Da dein Claude und du am Ende bist habe ich das für dich mal in ChatGPT gesteckt. Falls das nicht von ChatGPT gelöst wird kann ich das Ticket eskalieren und eine Taskforce mit Gemini, Siri, Copiliot, DeepSeek und LeChat sowie das ausgezeichnete Llama 3.1 8B in die Wege leiten. Erstmal den ChatGPT-Experten zu Wort kommen lassen: Nach deiner Beschreibung gibt es einige plausible Erklärungen. Der entscheidende Befund ist: Der STM32 selbst ist in Ordnung, denn ausgelötet lässt er sich problemlos auslesen (RDP Level 0). Die SWD-Pins sind elektrisch verbunden, denn du hast Durchgang bis zum Controller gemessen. Das Problem entsteht also erst durch die restliche Schaltung auf der Platine. Die wahrscheinlichsten Ursachen sind: Ein anderes Bauteil treibt SWDIO oder SWCLK. (Am wahrscheinlichsten) SWDIO ist bidirektional. Wenn dort ein anderes IC, ein Display, ein Funkmodul oder Logikbaustein aktiv ist, kann der ST-Link keine Kommunikation aufbauen. Eine Durchgangsprüfung erkennt so etwas nicht. NRST wird von der Schaltung festgehalten. Wenn der Reset-Pin durch Supervisor-ICs oder andere Schaltungsteile beeinflusst wird, funktioniert selbst "Under Reset" oft nicht. BOOT0 oder Option Bytes sind nicht das Problem. Da der Chip nach dem Auslöten ohne Probleme erreichbar ist, kann man das praktisch ausschließen. Die Versorgung ist nicht so, wie der ST-Link sie erwartet. Der ST-Link misst VTarget. Wenn VDD instabil ist oder nur kurz anliegt (weil die Platine nach einigen Sekunden abschaltet), kommt keine Verbindung zustande. Der Debug-Port wird von der Firmware deaktiviert. Das ist beim STM32L1 zwar möglich, aber normalerweise verhindert "Connect under Reset" genau dieses Problem. Da auch dieser Modus nicht funktioniert, halte ich das für weniger wahrscheinlich. Die Pads sind nicht direkt mit SWD verbunden. Manche Hersteller führen zwar Testpads heraus, diese gehen aber über 0-Ω-Widerstände oder Lötbrücken. Es kann sein, dass zwar Durchgang besteht, die Leitung aber zusätzlich noch an andere Schaltungsteile angeschlossen ist. Was ich als Nächstes prüfen würde Oszilloskop an SWCLK und SWDIO. Sendet der ST-Link überhaupt Takte? Werden die Pegel von einem anderen Baustein heruntergezogen? NRST messen. Bleibt NRST dauerhaft High? Kann der ST-Link den Pin wirklich auf Low ziehen? Versorgung messen. Liegen während des Verbindungsversuchs stabile 3,0–3,3 V am STM32 an? Schaltplan oder Fotos der Platine ansehen. Oft erkennt man sofort, dass SWD-Leitungen noch an andere Bauteile angeschlossen sind. Was ich für die wahrscheinlichste Ursache halte Wenn ich nur anhand deiner Beschreibung wetten müsste, würde ich auf ein anderes Bauteil auf der Platine tippen, das die SWD-Leitungen beeinflusst oder aktiv treibt. Das erklärt exakt, warum: derselbe Controller ausgelötet problemlos funktioniert, RDP Level 0 vorliegt, aber auf der Platine überhaupt keine SWD-Verbindung zustande kommt. Mich würde noch interessieren: Um welche Platine handelt es sich (Fotos Vorder- und Rückseite)? Welche Spannung misst du direkt an VDD des STM32? Welchen ST-Link verwendest du (V2, V2-1 oder V3)? Mit diesen Informationen lässt sich die Ursache meist deutlich eingrenzen.
:
Bearbeitet durch User
Lars schrieb: > vielleicht hat jemand von euch eine Idee, warum das mit > der Verbindung beim verlöteten Chip nicht klappt. Es besteht ein Schaltungsfehler in deiner fertigen Schaltung. Das festzustellen braucht es keine KI. Geheime Schaltpläne und geheime Abbildungen der fertigen Schaltung machen es nicht leicht einen Fehler zu finden.
Lars schrieb: > STM32L151RDT6 von einer bestückten Platine auslesen. STM32L151RDT6 hat Schreibschutz aktiv) hE HA
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.