Einführung
Der RP2040 ist Raspberry Pis erster eigener Chip und hat sich für kundenspezifische Hardware-Projekte als äußerst beliebt erwiesen. Während das Raspberry Pi Pico Board hervorragend für Prototyping geeignet ist, erfordern viele Projekte individuelle Formfaktoren, andere I/O-Konfigurationen oder kostenoptimierte Designs für die Produktion.
Dieser Leitfaden bietet alles, was Sie benötigen, um Ihre eigene RP2040-basierte Platine von Grund auf zu entwerfen. Wir behandeln die minimal erforderliche Schaltung, erklären jede Design-Entscheidung und liefern JLCPCB-kompatible Teilenummern, damit Sie schnell vom Schaltplan zur bestückten Platine kommen.
Voraussetzungen: Dieser Leitfaden setzt grundlegende Vertrautheit mit PCB-Design-Tools (EasyEDA, KiCad oder Altium) und fundamentale Elektronik-Konzepte wie Entkopplung und Signalführung voraus.
Warum mit dem RP2040 entwerfen?
Vorteile
- +Dual ARM Cortex-M0+ Kerne @ 133MHz
- +264KB SRAM (mehr als die meisten Cortex-M0 Chips)
- +Programmierbare I/O (PIO) Zustandsmaschinen
- +UF2 Drag-and-Drop Programmierung via USB
- +Niedrige Kosten (~0,70-1,00€ in Stückzahlen)
- +Exzellente Dokumentation von Raspberry Pi
Zu beachten
- !Kein interner Flash - erfordert externen QSPI
- !QFN-56 Gehäuse erfordert sorgfältiges Löten
- !Nur USB-Bootloader (kein UART-Boot)
- !Einzelnes GND-Pad unter dem Chip - kritisch zu löten
- !12-Bit ADC (kein DAC, 4 Kanäle)
Minimale Schaltungsanforderungen
Anders als viele Mikrocontroller, die nur mit Stromversorgung und ein paar Kondensatoren laufen können, hat der RP2040 spezifische Anforderungen für ein funktionierendes System:
Erforderliche Komponenten
Essentiell
- 1x RP2040 Mikrocontroller
- 1x Externer QSPI Flash (2MB-16MB)
- 1x 12MHz Quarz + 2 Lastkondensatoren
- 1x 3,3V Spannungsregler
- 11x 100nF Entkopplungskondensatoren
- 2x 1µF Kondensatoren (VREG Ein/Aus)
Für USB-Programmierung
- 1x USB-Anschluss (Typ-C empfohlen)
- 2x 27Ω USB-Serienwiderstände
- 2x 5,1kΩ CC-Widerstände (USB-C)
- 1x BOOTSEL-Taste
- 1x 1kΩ BOOTSEL-Widerstand
- 1x ESD-Schutz (empfohlen)
System-Blockdiagramm
Bevor wir in jedes Teilsystem eintauchen, hier eine Übersicht wie alles verbunden ist:
Stromversorgungsdesign
Übersicht der Stromversorgungsarchitektur
Der RP2040 benötigt zwei Spannungsschienen zum Betrieb:
- IOVDD (3,3V) - Versorgt alle I/O, USB PHY und Peripherie
- DVDD (1,1V) - Versorgt den digitalen Kern (ARM-Kerne, SRAM)
Der RP2040 enthält einen internen Linearregler, der 1,1V aus der 3,3V-Versorgung erzeugt. Dies vereinfacht das externe Stromversorgungsdesign - Sie müssen nur 3,3V bereitstellen.
Interner 1,1V Regler
Der interne Regler erfordert:
- VREG_VIN - Mit 3,3V und 1µF Kondensator verbinden
- VREG_VOUT - Mit allen DVDD-Pins und 1µF Kondensator verbinden
Batterieanwendungen: Der interne LDO ist effizient im Schlafmodus, aber für Hochlast-Batterieanwendungen sollten Sie einen externen Schaltregler für 1,1V für bessere Effizienz in Betracht ziehen.
Externe 3,3V Versorgungsoptionen
Für USB-versorgte Designs müssen Sie 5V USB auf 3,3V umwandeln:
| Regler | Typ | Strom | JLCPCB | Hinweise |
|---|---|---|---|---|
| XC6206P332MR | LDO | 200mA | C5446 | Empfohlen - Basic Part |
| AP2112K-3.3 | LDO | 600mA | C51118 | Beliebte Wahl (SparkFun, Adafruit) |
| ME6211C33 | LDO | 500mA | C82942 | Niedriger Dropout (100mV @ 500mA) |
AMS1117 vermeiden: Trotz seiner Beliebtheit hat der AMS1117 hohen Ruhestrom (~5mA), benötigt große Kondensatoren und hat schlechte Leistung bei niedriger Last. Verwenden Sie stattdessen XC6206 oder AP2112K.
Entkopplungskondensatoren
Richtige Entkopplung ist kritisch für die RP2040-Stabilität. Der Chip hat mehrere Strom-Pins, die jeweils einen eigenen Kondensator benötigen:
| Pins | Anzahl | Wert | Zweck |
|---|---|---|---|
| IOVDD (Pins 1,10,22,33,42,49) | 6x | 100nF | I/O Strom-Entkopplung |
| DVDD (Pins 23, 50) | 2x | 100nF | Kern-Strom-Entkopplung |
| USB_VDD (Pin 48) | 1x | 100nF | USB PHY Strom |
| ADC_AVDD (Pin 43) | 1x | 100nF | ADC Referenz |
| VREG_VIN (Pin 44) | 1x | 1µF | Reglereingang |
| VREG_VOUT (Pin 45) | 1x | 1µF | Reglerausgang |
Layout kritisch: Der RP2040 hat nur eine Masseverbindung - das große Pad in der Mitte des Chips. Alle Entkopplungskondensatoren müssen die kürzestmögliche Schleife von Kondensator → Strom-Pin → durch den Chip → zentrales GND-Pad → zurück zum Kondensator haben. Verwenden Sie Durchkontaktierungen direkt unter den Kondensatoren zur Massefläche.
Quarzoszillator
Obwohl der RP2040 einen internen Oszillator hat, ist ein externer 12MHz Quarz für genaues USB-Timing und stabilen Betrieb erforderlich.
Quarzauswahl
Der Quarz muss diese Spezifikationen erfüllen:
- Frequenz: 12,000 MHz
- Lastkapazität: Typisch 10-20pF
- ESR: <100Ω empfohlen
- Frequenztoleranz: ±30ppm oder besser
Empfohlener Quarz
JLCPCB-Teil: C9002
12MHz, 3225-Gehäuse (3,2mm × 2,5mm), 20pF Lastkapazität, ±10ppm. Dies ist ein JLCPCB Basic Part, was die Bestückungskosten niedrig hält.
Lastkondensator-Berechnung
Die Lastkondensatoren (CL1 und CL2) müssen basierend auf der spezifizierten Lastkapazität des Quarzes und der PCB-Streukapazität berechnet werden:
C_last = (CL1 × CL2) / (CL1 + CL2) + C_streu
Für gleiche Kondensatoren (CL1 = CL2 = C):
C = 2 × (C_last - C_streu)
Beispiel mit 20pF Lastkapazität und 3pF Streukapazität:
C = 2 × (20pF - 3pF) = 34pF
Nächste Standardwerte: 33pF oder 27pFQuarz-Layout-Richtlinien
- Platzieren Sie den Quarz so nah wie möglich an XIN/XOUT-Pins (Pins 20/21)
- Halten Sie Lastkondensatoren direkt neben den Quarz-Pads
- Führen Sie XIN/XOUT-Leiterbahnen weg von Hochgeschwindigkeitssignalen (besonders QSPI)
- Erwägen Sie einen Masse-Schutzring um den Quarz für Störimmunität
- Halten Sie den Quarz auf der gegenüberliegenden Seite des Chips vom QSPI-Flash
QSPI-Flash-Speicher
Der RP2040 hat keinen internen Flash-Speicher - der gesamte Programmcode läuft von einem externen QSPI-Flash-Chip. Dies ist eine kritische Komponente, die sorgfältig ausgewählt und verbunden werden muss.
Flash-Chip-Auswahl
Der RP2040-Bootloader ist für Winbond W25Q-Serie Flash optimiert. Während andere Chips funktionieren können, ist Winbond die sicherste Wahl:
| Teilenummer | Größe | Gehäuse | JLCPCB | Hinweise |
|---|---|---|---|---|
| W25Q16JVSNIQ | 2MB | SOIC-8 | C131024 | Mindestempfehlung |
| W25Q32JVSSIQ | 4MB | SOIC-8 | C179171 | Gut für größere Projekte |
| W25Q128JVSIQ | 16MB | SOIC-8 | C97521 | Maximal unterstützt |
Warnung: Macronix und einige andere Flash-Chips funktionieren nicht als Drop-in-Ersatz. Bleiben Sie bei der Winbond W25Q-Serie für garantierte Kompatibilität.
Flash-Verbindungen
| Flash-Pin | RP2040-Pin | Funktion |
|---|---|---|
| 1 (/CS) | QSPI_SS (Pin 57) | Chip-Select |
| 2 (DO/IO1) | QSPI_SD1 (Pin 53) | Data Out / IO1 |
| 3 (/WP/IO2) | QSPI_SD2 (Pin 54) | Schreibschutz / IO2 |
| 4 (GND) | GND | Masse |
| 5 (DI/IO0) | QSPI_SD0 (Pin 52) | Data In / IO0 |
| 6 (CLK) | QSPI_SCLK (Pin 56) | Takt |
| 7 (/HOLD/IO3) | QSPI_SD3 (Pin 55) | Hold / IO3 |
| 8 (VCC) | 3,3V | Strom (mit 100nF Kond.) |
QSPI_SS Pull-up: Fügen Sie einen 10kΩ Pull-up-Widerstand von QSPI_SS nach 3,3V hinzu. Dies stellt sicher, dass der Flash-Chip-Select während des Einschaltens high ist, was verhindert, dass der Flash in einen undefinierten Zustand gerät.
Flash-Layout-Richtlinien
- Platzieren Sie Flash so nah wie möglich an RP2040 QSPI-Pins
- Maximale Leiterbahnlänge: 20mm (kürzer ist besser)
- Empfohlene Leiterbahnbreite: 0,15mm (6 mil)
- Halten Sie die Taktleitung als längste unter allen QSPI-Signalen
- Fügen Sie 100nF Entkopplungskondensator direkt am Flash-VCC-Pin hinzu
- Halten Sie solide Massefläche unter Flash und Leiterbahnen aufrecht
USB-Schnittstelle
USB ist die primäre Programmierschnittstelle für den RP2040 und ermöglicht den bequemen UF2 Drag-and-Drop-Firmware-Upload.
USB-C Stecker-Design
Für moderne Designs wird USB-C aufgrund seiner Reversibilität und Langlebigkeit gegenüber Micro-USB empfohlen. Wichtige Verbindungen:
| USB-C Pin | Verbindung | Hinweise |
|---|---|---|
| VBUS (A4, B4, A9, B9) | 5V Eingang | Zum Spannungsregler |
| D+ (A6, B6) | RP2040 USB_DP via 27Ω | A6 und B6 verbinden |
| D- (A7, B7) | RP2040 USB_DM via 27Ω | A7 und B7 verbinden |
| CC1 (A5) | 5,1kΩ nach GND | Geräteerkennung |
| CC2 (B5) | 5,1kΩ nach GND | Geräteerkennung |
| GND (A1, A12, B1, B12) | Masse | Alle GND-Pins verbinden |
Kritisch: Sowohl CC1 als auch CC2 müssen separate5,1kΩ Widerstände nach Masse haben. Verbinden Sie CC1 und CC2 niemals miteinander - dies verletzt die USB-C-Spezifikation und verursacht Erkennungsprobleme. (Dies war der Raspberry Pi 4B Launch-Bug.)
ESD-Schutz
Obwohl nicht strikt erforderlich, wird ESD-Schutz auf USB-Leitungen für jedes Produkt, das von Benutzern gehandhabt wird, dringend empfohlen:
Empfohlener ESD-Schutz
USBLC6-2SC6: TVS-Dioden-Array für D+/D- Leitungen
JLCPCB-Teil: C7519
Schützt gegen ±15kV Kontaktentladung und ±8kV Luftentladung. Niedrige Kapazität (0,5pF typ.) erhält die Signalintegrität.
USB-Leiterbahn-Layout
USB ist ein differentielles Signal, das kontrollierte Impedanz erfordert:
- Zielimpedanz: 90Ω differentiell
- Leiterbahnbreite: 0,8mm (für 1,6mm Platinendicke)
- Leiterbahnabstand: 0,15mm zwischen D+ und D-
- 27Ω Serienwiderstände: Nahe an RP2040-Pins platzieren
- Längenanpassung: D+ und D- gleich lang halten
Boot-Modus-Schaltung
Der RP2040 verwendet einen ROM-basierten Bootloader, der beim Einschalten den BOOTSEL-Zustand prüft. Das Verständnis der Boot-Sequenz ist essentiell für die Gestaltung einer zuverlässigen Programmierschnittstelle.
BOOTSEL-Taste-Design
Die BOOTSEL-Funktion verwendet den QSPI_SS-Pin. Wenn QSPI_SS während des Resets low gehalten wird, wechselt der RP2040 in den USB-Massenspeicher-Modus für Firmware-Upload:
QSPI_SS (Pin 57)
|
+--- 10kΩ Pull-up nach 3,3V (optional aber empfohlen)
|
+--- 1kΩ Serienwiderstand --- BOOTSEL-Taste --- GND
Boot-Sequenz:
1. BOOTSEL-Taste drücken und halten
2. Strom anlegen (oder RESET drücken während BOOTSEL gehalten wird)
3. RP2040 sieht QSPI_SS low → wechselt in USB-Boot-Modus
4. Taste loslassen
5. UF2-Datei auf das USB-Laufwerk ziehenWarum der 1kΩ Widerstand? Der Serienwiderstand begrenzt den Strom, wenn der QSPI_SS-Pin während des normalen Betriebs als Ausgang betrieben wird. Ohne ihn würde das Drücken der Taste während des Betriebs den Ausgang kurzschließen.
Reset-Schaltung
Der RUN-Pin (Pin 26) ist der Reset-Eingang des RP2040 (aktiv-low):
RUN (Pin 26)
|
+--- 10kΩ Pull-up nach 3,3V
|
+--- 100nF Kondensator nach GND (Entprellen/Filter)
|
+--- RESET-Taste --- GND
Typische Verwendung:
1. Einschalten: RUN wird high gezogen, Chip startet
2. RESET drücken: RUN wird low gezogen, Chip resettet
3. Loslassen: RUN kehrt auf high zurück, Chip startet neu
4. Für BOOTSEL-Modus: BOOTSEL halten, RESET drückenGPIO-Breakout
Der RP2040 bietet 30 GPIO-Pins mit flexibler Peripherie-Zuordnung. Für ein minimales Design sollten Sie überlegen, welche GPIOs herausgeführt werden:
| GPIO | Pin | Häufige Funktionen |
|---|---|---|
| GPIO0-1 | 2, 3 | UART0 TX/RX, I2C0, SPI0 |
| GPIO2-5 | 4-7 | SPI0, I2C1, PWM |
| GPIO6-9 | 8-11 | SPI0, I2C0/1, PWM |
| GPIO10-13 | 12-15 | SPI1, I2C0/1, PWM |
| GPIO14-17 | 16-19 | SPI1, I2C0/1, PWM |
| GPIO18-21 | 24-27 | SPI0, I2C0/1, PWM |
| GPIO22-25 | 29-32 | PWM, PIO, LED (GPIO25 auf Pico) |
| GPIO26-29 | 34-37 | ADC0-3, PWM |
Tipp: Reservieren Sie GPIO0/GPIO1 für UART-Debugging - sie sind die Standard-UART0-Pins und extrem nützlich für serielle Ausgabe während der Entwicklung.
PCB-Layout-Richtlinien
Lagenaufbau
Das offizielle Minimal-Design verwendet eine 2-Lagen-Platine, aber 4 Lagen werden für bessere Leistung und einfacheres Routing empfohlen:
2-Lagen (Budget)
- Lage 1: Signale + Bauteile
- Lage 2: Massefläche + Stromführung
- Herausforderung: Stromverteilung unter RP2040
- 1,1V und 3,3V im verbleibenden Platz routen
4-Lagen (Empfohlen)
- Lage 1: Signale + Bauteile
- Lage 2: Solide GND-Fläche
- Lage 3: 3,3V Versorgungsfläche
- Lage 4: Signale + 1,1V Routing
- Bessere Entkopplung und EMV-Verhalten
Masseflächenstrategie
Das zentrale Masse-Pad des RP2040 ist die einzige Masseverbindungfür den gesamten Chip. Dies macht das Masseflächen-Design kritisch:
- Verwenden Sie mindestens 9 Vias unter dem Masse-Pad für thermische und elektrische Verbindung
- Erstellen Sie eine solide Massefläche direkt unter dem RP2040
- Verbinden Sie alle Entkopplungskondensator-Massen mit dieser Fläche über Vias
- Halten Sie durchgehende Masse unter QSPI-Leiterbahnen aufrecht
- Verwenden Sie Masse-Stitch-Vias um den Umfang
Kritisches Signal-Routing
| Signalgruppe | Max. Länge | Leiterbahnbreite | Hinweise |
|---|---|---|---|
| QSPI (Flash) | 20mm | 0,15mm | CLK am längsten, solide GND darunter |
| USB D+/D- | 50mm | 0,8mm | Differentielles Paar, 0,15mm Abstand |
| Quarz XIN/XOUT | 5mm | 0,2mm | Weg von QSPI halten |
| Strom (3,3V, 1,1V) | - | 0,3mm+ | Kurz zu Entkopplungskond. |
Stückliste
JLCPCB Basic Parts
Die Verwendung von JLCPCB Basic Parts minimiert Bestückungsgebühren ($3 pro Extended-Teile-Typ). Hier sind Basic Parts wo möglich:
Komplette Stückliste
| Ref | Wert | Gehäuse | JLCPCB-Teil | Typ |
|---|---|---|---|---|
| Kernkomponenten | ||||
| U1 | RP2040 | QFN-56 | C2040 | Extended |
| U2 | W25Q16JVSNIQ | SOIC-8 | C131024 | Extended |
| U3 | XC6206P332MR | SOT-23 | C5446 | Basic |
| Y1 | 12MHz | 3225 | C9002 | Basic |
| Kondensatoren | ||||
| C1-C10 | 100nF | 0402 | C1525 | Basic |
| C11-C12 | 1µF | 0402 | C52923 | Basic |
| C13-C14 | 27pF | 0402 | C1557 | Basic |
| Widerstände | ||||
| R1-R2 | 27Ω | 0402 | C25100 | Basic |
| R3-R4 | 5,1kΩ | 0402 | C25905 | Basic |
| R5-R6 | 10kΩ | 0402 | C25744 | Basic |
| R7 | 1kΩ | 0402 | C11702 | Basic |
| Stecker & Taster | ||||
| J1 | USB-C | 16-Pin | C2765186 | Extended |
| SW1-SW2 | Taster | 3x6mm | C318884 | Basic |
Geschätzte Kosten: ~2-3$ pro Platine für Bauteile (5 Platinen Minimum), plus ~5$ Bestückungsgebühr + ~3$ pro Extended-Teile-Typ.
Häufige Fehler vermeiden
1. Schlechte Masse-Pad-Verbindung
Das zentrale Pad ist die EINZIGE Masseverbindung. Wenn es nicht richtig gelötet wird mit ausreichenden Via-Verbindungen, funktioniert nichts. Verwenden Sie Reflow-Löten oder Heißluft-Nacharbeit für korrekte Verbindung.
2. Falscher Flash-Chip
Die Verwendung von Nicht-Winbond Flash-Chips verursacht oft Boot-Fehler. Bleiben Sie bei der W25Q-Serie. Bei Verwendung eines anderen Chips stellen Sie sicher, dass er exakt den gleichen Befehlssatz und Power-Up-Timing unterstützt.
3. Fehlender QSPI_SS Pull-up
Während des Einschaltens kann QSPI_SS kurz floaten. Ohne Pull-up kann der Flash-Chip in einen undefinierten Zustand geraten und Boot-Fehler verursachen.
4. CC1/CC2 zusammengebunden (USB-C)
Jeder CC-Pin benötigt seinen eigenen 5,1kΩ Widerstand. Sie zusammenzubinden verletzt die USB-C-Spezifikation und verursacht intermittierende Erkennungsprobleme.
5. Quarz zu weit vom RP2040
Lange Leiterbahnen fügen Streukapazität hinzu und ändern die effektive Lastkapazität. Dies verursacht Frequenzfehler, die das USB-Timing stören.
Test und Debugging
Nach der Bestückung folgen Sie dieser Test-Reihenfolge:
- Visuelle Inspektion: Prüfen Sie auf Lötbrücken, besonders am RP2040 und USB-Stecker. Das QFN-56-Gehäuse neigt zu Brücken.
- Stromprüfung (ohne USB): Messen Sie 3,3V und 1,1V Schienen bevor Sie USB anschließen. Prüfen Sie auf stabile und korrekte Spannung.
- BOOTSEL-Test: BOOTSEL halten, USB verbinden. Der Computer sollte ein neues USB-Laufwerk namens "RPI-RP2" anzeigen.
- Flash-Test: Eine UF2-Datei (wie das Pico Blink-Beispiel) auf das Laufwerk ziehen. Es sollte verschwinden und der Code sollte laufen.
- UART-Test: Einen USB-UART-Adapter an GPIO0/GPIO1 anschließen und serielle Ausgabe verifizieren.
Board hängt im BOOTSEL-Modus? Dies bedeutet normalerweise, dass der Flash-Chip nicht antwortet - prüfen Sie Flash-Verbindungen, Strom und Chip-Auswahl. Der Bootloader wechselt nur in den USB-Modus, wenn er keinen gültigen Code vom Flash lesen kann ODER wenn BOOTSEL während des Resets gehalten wird.
Fazit
Das Design einer eigenen RP2040-Platine erfordert Aufmerksamkeit für Details bei Stromversorgung, Flash-Speicher, Quarz und USB-Schaltungen. Mit der exzellenten Dokumentation von Raspberry Pi und der wachsenden Community von Open-Source-Designs ist es jedoch ein machbares Projekt für jeden mit grundlegender PCB-Design-Erfahrung.
Die wichtigsten Punkte zum Merken:
- Verwenden Sie Winbond W25Q-Serie Flash für garantierte Kompatibilität
- Achten Sie besonders auf die zentrale Masse-Pad-Verbindung
- Halten Sie QSPI-Leiterbahnen kurz und Quarz nah am Chip
- Sparen Sie nicht bei Entkopplungskondensatoren
- Fügen Sie BOOTSEL- und RESET-Tasten für einfache Programmierung hinzu
Laden Sie die offiziellen KiCad Minimal-Design-Dateien von Raspberry Pi als Ausgangspunkt herunter und zögern Sie nicht, andere Open-Source RP2040-Projekte als Inspiration zu verwenden.