Heim Der Blog Blog Details

Wie reprogrammiert man einen Mikrocontroller?

October 15 2025
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Hier ist ein klare, schlichte Checkliste, die Sie für fast jeden Mikrocontroller (MCU) anwenden können. Behalten Sie sie griffbereit; die gleiche Vorgehensweise gilt für AVR, PIC, STM32, ESP32 und mehr.

Hier ist ein klare, schlichte Checkliste, die Sie für fast jeden Mikrocontroller (MCU) anwenden können. Behalten Sie sie griffbereit; die gleiche Vorgehensweise gilt für AVR, PIC, STM32, ESP32 und mehr.

Wie reprogrammiert man einen Mikrocontroller?

Kurzüberblick

Neu-Programmieren bedeutet, den Flash des MCUs mit neuer Firmware zu löschen/überschreiben – über eine Programmierschnittstelle (SWD/JTAG/ISP/ICSP/USB/UART/DFU) mit einem Programmiergerät oder Bootloader-Tool.

Universelles 10-Schritte-Vorgehen

  1. Exakte Teilenummer ermitteln.
    Chipaufdruck prüfen (z. B. „STM32F103C8T6“, „ATmega328P“, „PIC32MX170F256B“, „ESP32-WROOM-32“).

  2. Schnittstelle wählen (eine davon):

    • SWD/JTAG (ARM-MCUs wie STM32, NXP, TI): 2–4 Leitungen + Reset

    • ISP/ICSP (AVR/PIC): SPI-ähnliche Pins + Reset

    • Serieller Bootloader (UART/USB/DFU): per ROM-Bootloader im Chip

    • Vendor-USB-Programmer (z. B. PICkit, ST-Link)

    • OTA (Over-the-Air), falls deine Firmware das unterstützt

  3. Passendes Hardware-Tool besorgen:

    • ST-Link für STM32, J-Link (generisch ARM), PICkit 3/4 für PIC, USBasp/Atmel-ICE für AVR, FTDI/CP2102 USB-UART für serielle Bootloader, ESP32 meist direkt via USB (ROM-Bootloader).

  4. Richtig verdrahten (Spannungspegel beachten!):

    • Versorgung: 3,3 V oder 5 V gemäß Datenblatt, gemeinsame GND.

    • Signale: z. B. SWDIO/SWCLK (STM32), MISO/MOSI/SCK/RESET (AVR), PGD/PGC/MCLR (PIC), TX/RX/BOOT/EN (ESP32).

    • Leitungen kurz halten; bei Bare-Chips 100 nF Abblockkondensator nahe VCC vorsehen.

  5. MCU in den Programmier/Boot-Modus versetzen:

    • Bestimmte Pins halten/resetten (z. B. BOOT0=1 bei STM32 für System-Bootloader; beim ESP32 GPIO0=0 während Reset).

  6. Software/Toolchain installieren:

    • STM32: STM32CubeProgrammer (oder OpenOCD)

    • AVR: avrdude (oder Atmel/Microchip Studio)

    • PIC: MPLAB IPE/X mit PICkit

    • ESP32: esptool.py (oder Arduino/PlatformIO)

    • NXP: MCUXpresso/LinkServer, TI: UniFlash/CCS, usw.

  7. Target wählen, verbinden und Geräteinfos lesen.
    Tool muss die Device ID erkennen. Falls nicht: Versorgung, Verdrahtung, TX/RX-Orientierung bzw. SWD-Leitungen prüfen.

  8. Löschen (falls nötig) und Firmware (.hex/.bin/.elf) programmieren.
    Meist gibt es Erase → Program → Verify (Löschen → Programmieren → Verifizieren). Bei Lese/Schreibschutz ggf. Mass-Erase ausführen.

  9. Boot-Konfiguration/Fuses/Option-Bytes setzen (nur wenn nötig):

    • AVR Fuses (Taktquelle, Brown-Out, Bootloader-Größe)

    • STM32 Option-Bytes (RDP, nBOOT0/1, WWDG/IWDG)

    • PIC Configuration Words (Oszillator, Watchdog)

  10. Reset und starten.
    Startet es nicht: Takteinstellung prüfen, Versorgung, Vektortabelle/Startadresse korrekt?


Welche Schnittstelle benutze ich?

Familie Typische Schnittstelle Pins (min) Hinweise
STM32 / ARM Cortex-M SWD oder UART/USB DFU 2–4 Am einfachsten: ST-Link via SWD. DFU möglich, wenn ROM-Boot aktiv.
AVR (ATmega/ATtiny) ISP (SPI) 6 USBasp/Atmel-ICE; Fuses beachten, um SPI nicht „abzuschalten“.
Microchip PIC ICSP 3–5 PICkit 3/4 mit MPLAB IPE. Config-Words sind wichtig.
ESP32 / ESP8266 UART-ROM-Bootloader 2 Meist USB; GPIO0 beim Reset Low für Bootloader (Tools automatisieren das).
NXP Kinetis/LPC SWD/UART 2–4 LinkServer/J-Link/OpenSDA; teils ROM-Bootloader vorhanden.
TI MSP430/MSP432 JTAG/SBW 2–4 MSP-FET oder LaunchPad-Debugger verwenden.

Schnellrezepte zum Kopieren

STM32 (z. B. STM32F103)

  • Hardware: ST-Link → SWDIO, SWCLK, NRST, GND (3,3 V Versorgung).

  • Software: STM32CubeProgrammer → Connect (SWD) → Erase & Program deine .bin an Adresse 0x08000000 → Verify.

  • Bootloader-Weg: BOOT0=1, Reset, dann per UART/USB-DFU mit CubeProgrammer flashen.

AVR ATmega328P (Arduino-Uno-Kern)

  • Hardware: USBasp (oder Atmel-ICE) an 6-Pin-ISP: MISO/MOSI/SCK/RESET/VCC/GND.

  • CLI (avrdude):

     
    avrdude -c usbasp -p m328p -U flash:w:firmware.hex:i
  • Falls Fuses geändert und ISP „verloren“: Hochspannungs-Programmer oder externen Takt nutzen.

PIC (z. B. PIC32MX170F256B)

  • Hardware: PICkit 4 → ICSP (PGC/PGD/MCLR/VDD/GND).

  • Software: MPLAB IPE → Device wählen → Connect → Erase → .hex programmieren → Verify.

  • Configuration Words (Oszillator, Watchdog, Brown-Out) müssen zum Board passen.

ESP32

  • Hardware: Meist nur USB. (Bei Bare-Modul: EN via Pull-Up auf 3,3 V; GPIO0 zum GND beim Reset für Bootloader.)

  • CLI:

     
    esptool.py --chip esp32 --port COM5 --baud 921600 write_flash -z 0x10000 firmware.bin

    (Offsets hängen vom Build ab; Arduino/PlatformIO erledigt das automatisch.)


Updates im Feld (ohne das Gehäuse zu öffnen)

  • Bootloader-Updates: USB-C oder UART-Header vorsehen; Firmware enthält Bootloader (DFU, UART, CAN etc.).

  • OTA-Updates: Flash in A/B-Slots aufteilen + Fail-Safe-Rollback (ESP-IDF, MCUboot auf Cortex-M).

  • Sichere Updates: Images signieren; nach der Provisionierung Read-Out-Protection (RDP) aktivieren.


Häufige Fallstricke & Lösungen

  • Keine Verbindung / unbekanntes Gerät: falscher Pegel, SWDIO/SWCLK oder TX/RX vertauscht, fehlende GND, Board versorgt Peripherie, die Leitungen herunterzieht — Lasten trennen/entfernen.

  • „Target ist read-protected“ / gesperrt: Mass-Erase durchführen (löscht alles) zum Aufheben von RDP/Lock-Bits.

  • Programm ok, läuft aber nicht: falsche Takteinstellungen (HSE/HSI/Fuse), falsche Vektortabelle/Offset, Watchdog versehentlich aktiv, BOOT-Pins falsch gesetzt.

  • Brown-Outs / zufällige Resets: unzureichende 3,3 V/5 V-Versorgung oder fehlende Abblockung; 100 nF nahe jedem VCC-Pin.

  • Beschädigte I/Os: Pegel-Mismatch (5 V-Tool an 3,3 V-MCU). 3,3 V-Programmer oder Pegelwandler verwenden.


Minimale Einkaufsliste (entwicklerfreundlich)

  • Je eins: ST-Link V2, USBasp (oder Atmel-ICE), PICkit 4, ein USB-UART-Adapter, Dupont-Jumperkabel, ESD-Armband, diverse 100 nF-Kondensatoren.

  • Software: STM32CubeProgrammer, avrdude/Microchip Studio oder MPLAB IPE, esptool.py/PlatformIO, OpenOCD.


Wenn du ein unbekanntes Board neu programmierst

  1. Board/Unterseite fotografieren, nach Testpads/Labels suchen (SWD, SWCLK, TX, RX, BOOT0, RST).

  2. Mit dem Multimeter Pads zu MCU-Pins zuordnen (Datenblatt-Pinout hilft).

  3. Zuerst nicht-invasiv SWD/JTAG probieren (ARM-Teile), dann Bootloader-Pins.

Ampheo