Forum: Mikrocontroller und Digitale Elektronik RP2040 USB Schnittstelle sehr instabiel


von Nils F. (Firma: Focke Event Lighting Systems) (nilserdhaufen)


Angehängte Dateien:

Lesenswert?

Hi,

mein Bruder und ich basteln gerade an einem Projekt und ich habe 
versucht, einen RP2040 auf eine Platine zu bringen und habe sie dann 
über JLCPCB bestellt. Jetzt habe ich folgendes Problem:

Der RP2040 verbindet sich nur manchmal und oftmals auch nur für eine 
halbe Sekunde ungefähr mit meinem Rechner. Ich habe 5 Stück bestellt und 
manche Platinen laufen gefühlt besser als andere. Möchte ich ein 
Programm auf den RP2040 laden, lasse ich ihn angeschlossen einfach 
liegen. Nach 20min kann es sein, dass sich der RP2040 kurz verbinden 
konnte und das Programm wurde dann drauf gespielt. Das passiert aber nur 
nach Lust und Laune der Platine. Weitere Hinweise:
- Sobald ein Programm drauf ist, funktioniert der RP2040 einwandfrei 
alleine mit externem Netzteil. Das drauf gespielte Programm läuft mit 
allen Funktionen sauber.
- Sobald USB angeschlossen ist, geht der RP2040 nicht mehr. Der RP2040 
rafft wohl, dass USB angeschlossen ist und funktioniert nicht mehr 
alleine. Auf dem Rechner wird er jedoch nicht angezeigt.
- Ich habe auch schon die VBUS Versorgung gekappt und den RP2040 nur 
über externem Netzteil laufen lassen, während USB angeschlossen war, 
aber immer noch das gleiche. Nur über VBUS geht auch nicht.
- Egal, was man anschließt, die Spannung am RP2040 bleibt stabil 3,3V
- Ich habe die Quarz-Clock mit einer originalen Clock getauscht und das 
Problem ist immer noch das gleiche.
- Ein RaspberryPi Pico, den wir vom Werk hier haben, verbindet sich 
sofort mit dem Rechner.

von Patrick B. (pbeck)


Lesenswert?

Hallo,

Was hast du genau beim Quarz getauscht?

https://forums.raspberrypi.com/viewtopic.php?t=355641&start=25

: Bearbeitet durch User
von Harald A. (embedded)


Lesenswert?

Zeige doch bitte einmal die ganze Platine mit Anbindung des Flash, das 
sieht man hier nicht, oder?

Und dann kann ich nur dazu raten, die Platine nächstes Mal 4-lagig 
auszuführen. Layer 1+4 Signal, Layer 2 GND, Layer 3 +3.3V. Die 
Mittellagen möglichst unversehrt lassen. Du gewinnst eine Menge 
Gestaltungsspielraum, brauchst die Leiterbahnen wie USB nicht mehr 
krampfhaft dick machen (ist hier im aktuellen Design sowieso nicht gut 
gelöst und auf dieser kurzen Distanz auch eher unwichtig).
Wenn man vorher nie 4-Lagen gemacht hat ist das erstmal eine gedankliche 
Hürde, es macht es aber einfacher! Kostenmäßig ist es mittlerweile fast 
egal

Alle Kondensatoren sind dann kurz angebunden und Du kannst das Flash 
vernüftig positionieren. Bevor Du viel mit Impedanzrechner herumtüdelst: 
Mache die (Signal-) Leiterbahnen für Flash und USB in 8mil, des passt 
scho.

Weiterhin, was ich noch sehe: Kannst Du gewährleisten, dass der GND 
unter dem RP2040 gut angelötet ist?

von Stefan K. (stk)


Lesenswert?

X322516MLB4SI ist ein 16MHz Quarz?

von Nils F. (Firma: Focke Event Lighting Systems) (nilserdhaufen)


Lesenswert?

Patrick B. schrieb:
> Hallo,
>
> Was hast du genau beim Quarz getauscht?
>
> https://forums.raspberrypi.com/viewtopic.php?t=355641&start=25

Danke für die Nachricht. Könnte sein ja. Ich habe einen funktionierenden 
Raspberry Pi Pico genommen, den ich noch rum fliegen hatte, der 
funktionier hat, habe die Quarz Clock runter gelötet und, mit den 
passenden Kondensatoren, auf mein Platinendesign drauf gelötet. Immer 
noch das gleiche Problem, obwohl der Pico vom Werk vorher komplett mit 
USB funktioniert hat. Bevor ich jetzt wieder teure Platinen aus China 
bestelle und mit Clocks experimentiere, wollte ich einmal fragen, ob 
jemand noch eine andere Idee hat.



Und Harald für deine Nachricht: Danke für die Tipps, ich bin neu im 
Platinen designen. Solche Tipps helfen mir generell sehr. Was meinst du 
könnte ich besser machen um die USB Verbindung zu verbessern? Den RP2040 
vielleicht näher an die Schnittstelle? Die Leitungen sind 0,77mm dick. 
Und ich kann nicht garantieren, dass der RP2040 gut verlötet ist. Ich 
habe die Platine fertig bestückt von JLCPCB bestellt. Hätte ich die GND 
Verbindung da besser gestalten können?

von Harald K. (kirnbichler)


Lesenswert?

Nils F. schrieb:
> Die Leitungen sind 0,77mm dick.

Das ist für USB-Datenleitungen gar nicht nötig. Sieh Dir einfach mal die 
Platine des Raspberry Pi Pico genauer an. Die ist nur zweilagig, 
funktioniert aber stabil.

Sieh Dir also die Stellen genauer an, wo sich diese Platine von Deiner 
unterscheidet.

Neben der Takterzeugung ist auch die Spannungsversorgung etwas, was Du 
genauer betrachten solltest.

von Stefan K. (stk)


Lesenswert?

Nils F. schrieb:
> Der RP2040 verbindet sich nur manchmal und oftmals auch nur für eine
> halbe Sekunde ungefähr mit meinem Rechner.

Mir fällt zunehmend schwer das zu glauben. Das BOOTROM des RP2040 ist 
für einen 12MHz Quarz ausgelegt, mit deinem 16MHz Quarz könnte er 
wahrscheinlich laufen, obwohl der etwas außererhalb des spezifizierten 
Bereiches von 1MHz bis 15MHz liegt, aber ein erstes Programmieren über 
USB sollte so eigentlich gar nicht möglich sein. Über SWD wäre ein 
Programmieren auch bei nicht funktionierendem USB Anschluss möglich aber 
das scheint auf der Platine nicht vorgesehen zu sein.

von Nils F. (Firma: Focke Event Lighting Systems) (nilserdhaufen)


Lesenswert?

Könnt ihr mir vielleicht einen Quarz und die Kondensatoren empfehlen, 
mit dem der RP2040 laufen sollte und der in der Produktpalette von 
JLCPCB vorhanden ist?

von Mi N. (msx)


Lesenswert?

Fang bitte nicht an, an der falschen Stelle nach Fehlern zu suchen. 
Wichtig ist, daß es ein 12 MHz Quarz ist. Der Typ selber, die 
Kondensatoren und die Leiterbahnen dorthin sind weitgehend unkritisch.

von Uwe D. (monkye)


Lesenswert?

Stefan K. schrieb:
> X322516MLB4SI ist ein 16MHz Quarz?

Ja genau…

von Gerd E. (robberknight)


Lesenswert?

Nils F. schrieb:
> Ich habe einen funktionierenden
> Raspberry Pi Pico genommen, den ich noch rum fliegen hatte, der
> funktionier hat, habe die Quarz Clock runter gelötet und, mit den
> passenden Kondensatoren, auf mein Platinendesign drauf gelötet. Immer
> noch das gleiche Problem, obwohl der Pico vom Werk vorher komplett mit
> USB funktioniert hat.

Also das müsste ja jetzt dann ein 12 MHz Quarz sein. Denn auf dem 
Original-Pico ist ja genau so einer verbaut. Richtig?

Du kannst ja auch mal mit dem Oszi kurz das XOUT-Signal vor dem 
1k-Widerstand vermessen. Da solltest Du die 12 MHz gut sehen können. Ja, 
mit der Kapazität des Tastkopfes verschiebst Du den Takt etwas, aber für 
ne grobe Einschätzung ist das allemal gut genug.

> - Sobald USB angeschlossen ist, geht der RP2040 nicht mehr. Der RP2040
> rafft wohl, dass USB angeschlossen ist und funktioniert nicht mehr
> alleine. Auf dem Rechner wird er jedoch nicht angezeigt.

Also das Programm, welches auf dem bereits programmierten RP2040 
normalerweise läuft, geht jetzt nicht mehr? Auch wenn Du den RP2040 erst 
mit dem Labornetzteil startest und dann bei laufendem Programm das USB 
verbindest?

Dann klingt mir das nach einem Masseproblem. Z.B. einer Masseschleife 
mit der Schutzerde des PCs oder sowas.

Hast Du ein Notebook? Dann trenn das von allen Kabeln und lass es nur 
von Batterie laufen. Steck Deine RP2040-Platine ans USB von dem 
Notebook. Achte drauf dass an Deiner Platine keinerlei weitere Kabel 
angeschlossen sind. Geht es dann?

von Gerd E. (robberknight)


Lesenswert?

Hmm, ich hab grad mal über das Layout drübergelinst.

Ja, 2 lagig ist nicht schön und die Massefläche leidet sehr darunter. 
Sieht definitiv nicht toll aus. Aber das muss nicht heißen dass es 
deswegen nicht geht.

Was ich aber grad nicht sehe ist wie die 3.3V-Versorgung geroutet ist. 
Also oben links ist der Regler der die 3.3V erzeugt. Gut.

Aber wie kommen die 3.3V zum Flash, zu C1 und C3. Entweder seh ich das 
in dem Screenshot nicht richtig oder die sind nicht geroutet.

Lass mal ein Design Rule Check über das Board laufen. Sind da 
Unconnected Tracks an der Stelle? Mach mal ein Net-Highlight über das 
3.3V-Netz und kontrollier wie das genau verbunden ist.

von Mike J. (linuxmint_user)


Lesenswert?

Nils F. schrieb:
> Der RP2040 verbindet sich nur manchmal

Versuche es mal mit einem 1,5kOhm Widerstand von 3,3V zum D+ Pin.

von Florian L. (muut) Benutzerseite


Lesenswert?

Wie Gerd E. schon anmerkt sind da Luftlinien für die 3V3 im Design.

Der Chiphersteller baut mehrere Pins für die Versorgung ein, die auch 
alle von extern angeschlossen werden müssen.
Sonst kommt es zu lustigen Effekten.

von Stefan K. (stk)


Lesenswert?

Ihr könntet den Pico wieder in den Qriginalzustand bringen, den 
Controller so programmieren, dass er an einem GPIO 12MHz ausgibt und die 
an eurer Platine mit entferntem Quarz am Osziilatoreingang einkoppeln.
Damit hättet ihr einen stabilen Takt und könntet nach den anderen 
Fehlern suchen.

Ihr hättet euch die Arbeit viel leichter gemacht wenn ihr eure Schaltung 
um einen fertigen Pico entwickelt hättet.
Dass ihr stattdessen ausgerechnet Shawn Hymels RPi Pico Debugger Shoe 
als Schaltungsvorlage benutzt und auf eurer Platine den SWD-Aschluss 
weggelassen habt hat schon was.

von Mike J. (linuxmint_user)


Lesenswert?

Florian L. schrieb:
> Der Chiphersteller baut mehrere Pins für die Versorgung ein, die auch
> alle von extern angeschlossen werden müssen.

Stimmt, hab ich gar nicht gesehen. Da sind ja nur ein paar Pins 
angeschlossen, da werden also ein paar Schaltungsteile des Chips gar 
nicht mit Spannung versorgt oder wenn, dann vielleicht nur intern 
relativ hochohmig.

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
Noch kein Account? Hier anmelden.