Häufige Hardware- und Software-Fallen beim Mikrocontroller-Debugging
Mikrocontroller-Firmware friert ein: Heartbeat-LED blinkt nicht mehr, UART-Konsole reagiert nicht. Klassisches Symptom. Keine Panik — systematisch Stack-Traces, Logs und Peripherie prüfen. Der Übeltäter ist oft etwas Simples: Schmutz in Steckern, Pin-Konflikte oder Fehlkonfigurationen.
Hardware-Fallen: Von Schmutz bis Lötfehlern
Telematik-Board-Entwicklung für ein CAN-Netzwerk: Auto springt nicht an, Starter dreht nutzlos durch. Drei Stunden Diagnose — Ursache im OBD-II-Stecker gefunden: Ein Stück Folie kurzschloss drei Pins. Schmutz entfernen, Problem gelöst.
Dichte Board-Bestückung mit Tag-Connect: Programmierstecker unzugänglich wegen nahen Traco Power-Reglers. Clip rastet nicht ein — Finger passen nicht dazwischen. Lösung: Kollegen mit schlanken Fingern einspannen oder Layout umgestalten.
USB-Strom flackert und bricht ab. Vermuteter Spannungsabfall durch BLE/UWB ausgeschlossen. Übeltäter: defekter USB-A-Buchse — vollständiges Einstecken verliert Kontakt, ein halber Millimeter herausziehen macht es funktionsfähig. Lehre: Auf Qualitätskabel und -stecker setzen.
SWD-Verbindung bricht über 90 cm Kabel durch Schlupfring im Turm ab. Pakete kommen nicht durch. Kurzes 12 cm Kabel funktioniert einwandfrei. Am Ende Boards mit Flugkabeln programmiert.
Pin-Konflikte und Debugging
JTAG/SWD startet nicht: 'No device found'. Firmware-Batch-Skript verlangt manuellen Reset über STM32 ST-LINK Utility. Ursache: LED an PA13 (TMS/SWDIO). SWD-Pins (PA13, PA14) können nicht als GPIO genutzt werden. LED nach PA15 verschieben, Debugging wiederhergestellt.
Board mit FC7300: J-Link zeigt Orange (Reset-Zustand), J-Flash meldet 'Could not download file'. MCU-Reflow half nicht. Temporärer Fix: USB-Port oder Programmierer wechseln.
MCU-Konfiguration und Bootloader
CC26x2 hängt nach Power-Cycle, obwohl es unter Debugger läuft. Ursache: Kein Schreiben in Customer-Configuration-Sektor auf letzter Flash-Seite. Für TI CC26x4 zuerst blinky_backdoor_select_btn26x2.bin mit SmartFR Flash Programmer 2 flashen, dann eigene Firmware.
STM32F413ZGJ6-Bootloader springt nicht zur App: MSP-Check in Vector Table >128 kB. MCU hat 320 kB RAM, aber Bootloader für STM32F205VC gebaut. Cortex-M4/M3-Kompatibilität maskierte den Bug fünf Jahre lang.
Statische Elektrizität und Zuverlässigkeit
Wochenlanger Test: Logs im RAM werden durch ESD-Funken beim Berühren gelöscht. Lösung: NVRAM oder SD-Karte für Logs.
Audio und Peripherie
I2S von BT1026 (Bluetooth Classic): Knarrende Stimme auf nRF5340. WS bei 50 kHz, aber FSC-BT1026C-Modul liefert Samples nur bis 48 kHz — Nullen verursachen das Knarren. Fix: BT1026 als I2S-Master.
Schaltungsdesign-Fehler
MCU nicht mit Strom versorgt — Drahtrest behoben. Oder Ethernet PHY-Quarz bei 23 MHz statt 25 MHz: Auto-Negotiation schlägt fehl. Olimex-STM32-H407: UART-Mist wegen 12 MHz Quarz statt 25 MHz in Firmware.
SPI-NAND W25M02GV-Prototyp: Seitliche Pins kurzschließen Thermal Pad auf Lochrasterplatine. Reflow auf grüner PCB behoben.
VNQ7E100AJ High-Side-Treiber: Falsche Strommessung bei Open-Load (V_SENSEH Pull-up). ADC interpretiert als Überlast. Chip-Wechsel in ECU-Revision.
FPU- und Bibliotheksfehler
snprintf() auf Cortex-M33 crasht in Default Handler wegen FPU-Problemen bei Float-Formatierung.
Wichtige Lehren
- SWD/JTAG-Pins prüfen, bevor sie als GPIO zugewiesen werden.
- TI MCU Customer-Sektoren vor Flashen eigener Firmware konfigurieren.
- ESD-Schutz und NVRAM für Logs nutzen.
- Quarze und Stecker bei Prototypen validieren.
- Datenblatt lesen: Features wie Open-Load-Erkennung verhindern Fehltrigger.
— Editorial Team
Noch keine Kommentare.