RP2040 USB Schnittstelle sehr instabiel

(Firma: Heitkötter Sensorik GmbH) #7863191
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.
Angehängte Dateien:
#7863203
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?

(Firma: Heitkötter Sensorik GmbH) #7863215
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?

#7863242
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.

#7863319
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.

#7863479
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?

#7863487
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.

#7864146
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren