Hallo Zusammen, ich habe eine Schaltung für ein eigenes PCB entworfen und fertigen lassen. Nun habe ich aber das Problem das der dabei eingebaute W5500 SPI Ethernet Chip nicht auf SPI Anfragen antwortet. Hardwareseitig ist ein ESP32 als Mikrocontroller verwendet. Der W5500 hängt dabei alleine am VSPI und ist somit auch in der Arduino Software die Standard SPI Belegung. Den Arduino Sketch den ich zum testen nehme, habe ich mit einem ESP32 dev Kit und einem entsprechenden vorgefertigten W5500 Bard getestet, da funktioniert auch alles. Sobald ich aber die Software auf den ESP32 auf meiner Platine aufspiele, kommt die Fehlermeldung das keine Hardware vorhanden wäre. Ich habe mal die Schaltplan Seite aus KiCAD mit angehängt. Auf dieser Seite gibt es noch zwei Fehler. Zum einen ist die Falsche Induktivität verwendet, das habe ich bereits überarbeitet. Für L1 kommt jetzt wie empfohlen ein Ferrit mit 120 Ohm bei 100 MHz zum Einsatz. Des weiteren ist die Gelbe LED in Sperrichtung angeschlossen und kann somit nicht leuchten. Ich habe nun schon alles mehrfach durch gemessen. Fehlerhafte Lötstellen halte ich aktuell für unwahrscheinlich. Zumal der W5500 Chip automatisch bestückt wurde. Beim Anschluss an meinen Switch Blinkt die grüne LED unregelmäßig, was soweit auch normal ist. Die gelbe LED kann nicht leuchten, daher ist unklar wie sich das verhält. Soweit ersichtlich scheint die Netzwerkseite aber Grundlegend zu funktionieren. Am Pin 18 (VBG) liegen wie im Datenblatt beschrieben 1,2V an, somit muss auch die Interne Spannungsversorgung in Ordnung sein. Aus Verzweiflung habe ich nun schon das bestehende W5500 Board, welches ich zum Testen verwendet habe komplett mit dem Multimeter vermessen. Konnte dabei aber auch keine Grundlegend andere Schaltung vorfinden, als ich verwendet habe. Ich habe mich soweit möglich an die Referenzschaltung vom Hersteller gehalten. Aber leider ohne Erfolg. Hat von euch jemand eine Idee woran das noch hängen kann? Referenzschaltung vom Hersteller: http://wizwiki.net/wiki/doku.php/products:w5500:refschematic
Oliver K. schrieb: > Ich habe nun schon alles mehrfach durch gemessen. Fehlerhafte Lötstellen > halte ich aktuell für unwahrscheinlich. Zumal der W5500 Chip automatisch > bestückt wurde. Automatische Bestückung schützt weder vor Bestückungsfehlern noch vor Lötfehlern. Und solche Bastlerboards mit Stückzahl eins werden typischerweise auch nicht auf Funktion geprüft. Das ist dein Job, hast du ja auch gemacht. Und festgestellt: funktioniert nicht. Also mußt du jetzt nur noch den Fehler suchen. Da du keinerlei relevanten Unterlagen gepostet hast, wirst du das alleine tun müssen.
Oliver K. schrieb: > Ich habe mal die Schaltplan Seite aus KiCAD mit angehängt. Bitte vollständig. Und gleich das Layout und Aufbau dazu. Auf dem Teil-Schaltplan kann ich keine Probleme erkennen. Beim Aufbau kann man jede Menge Fehler machen. Nur schade dass sich die Leute immer erst melden wenn das Kind schon in den Brunnen gefallen ist. Weil wenn erst mal der Schalt- plan korrekt und fertig ist "kann ja nichts mehr schiefgehen." Bei der Kombination ESP32 und W5500 fürchte ich prinzipiell die anspruchsvolle Stromaufnahme wenn sonst keine offensich- lichen Fehler vorliegen.
In welchem Format könnt ihr das am besten Verarbeiten? (PDF, Bild, KiCAD Projekt, Gerber File). Spätestens die Platine wird als Bild nicht mehr so vorteilhaft lesbar. Die Stromversorgung muss beim ESP32 definitiv stabil und Leistungsfähig sein. In meinem Fall habe ich einen LM2596 im Einsatz der mit 24V gespeist wird. Aber auch mit einem Labornetzteil (liefert bis 3A) gibt es keine Änderung. Die Platine an Sich ist nicht optimal konstruiert. Das war auch von Anfang an als Test gedacht und auch Fehler suchen und beheben zu können. Nur bin ich jetzt an dem Punkt das ich den Fehler nicht finden kann. Ich habe mich dabei auch etwas vertan. Da ich versucht habe die Platine schon passend für das vorgesehene Gehäuse zu fertigen. Dafür aber auf Messpunkte verzichtet habe.
Oliver K. schrieb: > Spätestens die Platine wird als Bild nicht mehr > so vorteilhaft lesbar. Doch doch, einfach grosses PNG Format wählen. Oder PDF. Bei Bildformaten beim Hochladen keine Bildgrössen-Reduzierung zulassen.
Anbei die Dokumente. Grundlegende Idee ist es einen ESP32 mit einem FRAM (SPI), einer RTC (I2C, DS3231), einer USB UART Bridge (CP2102N) und dem W5500 (SPI) Netzwerkchip aus zu statten. Probleme gibt es aktuell generell noch viele. - Der FRAM funktioniert nicht (ich vermute aber es liegt an den Billigen Chips die ich von eBay in China bestellt habe) - Der CP2102N funktioniert nicht (die Shotty Dioden sind die Falschen und der RST Pin ist nicht belegt) - Der W5500 Netzwerkchip funktioniert nicht (das hier besprochene Thema) Aktuell funktioniert lediglich die RTC am I2C Bus ohne Probleme. Der FRAM hängt am HSPI Bus, der auch auf Pins heraus geführt wird und auf einer weiteren Platinen fortgeführt wird. Der W5500 hängt am VSPI Bus.
:
Bearbeitet durch User
Das ist einfach aus der Referenzschaltung übernommen. Dort wird der auch nur per Pull Up auf VCC gezogen. Bisher habe ich den Eingang auch noch nie benötigt.
Hi Oliver, Oliver K. schrieb: > Nun habe ich aber das Problem das der dabei eingebaute W5500 SPI > Ethernet Chip nicht auf SPI Anfragen antwortet. Kannst du die SPI-Kommunikation aufzeichnen? LG, Sebastian
Aktuell kann ich das nicht unabhängig messen. Ich habe zwar dafür einen Bus Pirate (v4) bestellt, der ist aber erst vor ein paar Tagen aus Fernost eingetroffen. Somit bin ich davon noch ein Stück weit weg, den Controller auch effektiv verwenden zu können.
Guten Tag Oliver, ein paar Dinge die mir aufgefallen sind. 1. Dein Layout ist elektrisch gesehen nicht das schönste ... Deine C's sind nicht dort wo diese hingehören. "Short as possible to Pin" 2. Wenn der W5500 nicht will liegt es meist am Quarz. GAAAAANNNNNZZZ wichtig. 25MHz Grundton-Quarz. Kein 25MHz dritte Oberwelle. Und messen mit Oszi .. ist nicht !! Denn das belastet die Schaltung so stark, dass nix mehr geht. 3. Hab ich mir den CP2102 angeschaut. Der kann auch nicht funktionieren. Die Stromversorgung ist eine Mischung aus 5V und 3V3. Ohne Richtigen Bezug zu VBUS(USB) und der Reset ist bei dieser Mischung auch nicht beschalten. Wenn du REGIN mit 5V versorgst, dann ist VDD der Ausgang, der 3V3 liefert. Also den richtigen Modus wählen. Eigenversorgt Fremdversorgt (5V) 3V3 über eigebauten Regler oder Extern. Gruß Thomas ca. 150x W5x00 auf verschiedenen eigenen Platinen verbaut ca. 600 CP2102 auf Serien Produkt verbaut
:
Bearbeitet durch User
Hallo Thomas, das die Platine elektrisch gesehen nicht umwerfend ist, ist mir mittlerweile auch klar. Dazu kommen noch ein paar Konstruktive Fehler. Zum Beispiel war es keine gute Idee den Netzwerkanschluss nach innen zu drehen. In der nächsten Version nehme ich einen Vertikalen, die sind mit Transformator nur sehr selten und teuer. Die Kondensatoren sind doch schon sehr nah an den jeweiligen VCC Pins. Aber es ist wahrscheinlich besser beim platzieren gleich als erstes die Kondensatoren am optimalen Platz neben die IC's zu pflanzen. Bei der Platine habe ich das erst später gemacht. Als Quarz habe ich einen 25 MHz Standard Quarz verwendet. So wie es meiner Meinung nach auch auf den vorgefertigten Board der Fall ist. Was muss ich da speziell beachten? Ich vermute auch das es nicht so clever war den Quarz so weit weg vom Chip zu setzen und die Leitungen über VIA's zu führen. Beispiel für den verwendeten Quarz: https://www.reichelt.de/standardquarz-grundton-16-000000-mhz-16-0000-hc49u-s-p32852.html?PROVID=2788&gclid=EAIaIQobChMI1oC-jcLG7gIVGqd3Ch3oKwBIEAYYASABEgI13fD_BwE Gekauft habe ich den allerdings über eBay in China, weil Reichelt keine 25 MHz in der Bauform hat. Den CP2102 habe ich hier auch irgendwie mit dem 2102N verwechselt. Daher scheint auch die Schaltung nicht wirklich zu passen. Mittlerweile habe ich das ganze im Entwurf für die verbesserte Platine durch einen CP2104 ersetzt. Der CP2102N ist bei JLCPCB ja auch noch ein Extendet Part und kostet 3 € Rüstkosten, der CP2102 und CP2104 ist ein Standard Part und damit schon einmal wesentlich günstiger. Allgemein habe ich bisher zwar schon einige Platinen entworfen und fertigen lassen. Bisher aber nie in dem Umfang und nur ohne Bestückung. Ich selbst bin zwar Elektrotechniker, aber weniger für Platinen und Elektronik, sondern für Industrielle Automatisierungstechnik. Die Platinen sind für mich eher ein Hobby.
Hi >Das ist einfach aus der Referenzschaltung übernommen. Dort wird der auch >nur per Pull Up auf VCC gezogen. >Bisher habe ich den Eingang auch noch nie benötigt. Ich habe vor 8..10 Jahren mal Treiber für W5100 und W5200 in Assembler geschrieben. Durch die Verwendung von INTn hat man einen recht schnellen Zugriff auf die Veränderten Register. Und so unterschiedlich ist der W5500 nun auch nicht. MfG Spess
Um den Quarz aus zu schliesen kann ich höchstens mal einen aus den fertigen Boards auslöten. Die müssen ja funktionieren.
Oliver .. schrieb: > Aktuell kann ich das nicht unabhängig messen. > > Ich habe zwar dafür einen Bus Pirate (v4) bestellt, der ist aber erst > vor ein paar Tagen aus Fernost eingetroffen. Somit bin ich davon noch > ein Stück weit weg, den Controller auch effektiv verwenden zu können. Oszilloskop? Und dann zumindest mal das Reset-Kommando fangen? LG, Sebastian
Ein Oszilloskop habe ich noch nicht zur Verfügung und die Mittelklasse Multimeter sind dafür um welten zu langsam. Ich habe den Oszillator jetzt zum probieren jetzt die Oszillatoren zwischen meinem Board und dem Funktionierenden Board getauscht. Der Stand ist aber unverändert. Das Standard Board geht mit meinem Oszillator, aber meine Schaltung nicht mit dem Oszillator vom Standard Board.
Oliver .. schrieb: > Beispiel für den verwendeten Quarz: > https://www.reichelt.de/standardquarz-grundton-16-000000-mhz-16-0000-hc49u-s-p32852.html?PROVID=2788&gclid=EAIaIQobChMI1oC-jcLG7gIVGqd3Ch3oKwBIEAYYASABEgI13fD_BwE Ja das wäre der richtige Grundton. China Teil... mhh keine Ahnung. Ist aber ein absolut Muss(Grundton). Kondensatoren sollen immer so nah wie möglich an den Pins sein. Sende mir einmal ein PM. Dann können ich mehr machen. Gruß Thomas
Aktuell ist der Stand nun das der W5500 an sich funktionieren muss. Da die Kommunikation auf der Netzwerk Seite genau das macht was sie soll. Die Status LEDs blinken wenn Broadcast nachrichten kommen. Somit muss auch der Oszillator funktionieren. Das Layout auf dem PCB ist alles andere als Optimal, aber erst einmal nicht die Ursache für mein Problem. Das vorliegende Problem muss direkt mit dem SPI Bus zu tuen haben. Da ich da aktuell nicht weiter rein schauen kann, habe ich einen entsprechenden Logic Analyzer bestellt um die Kommunikation mitlesen zu können. Der kommt aber erst gegen ende der Woche.
:
Bearbeitet durch User
Der Logic Analyzer ist da und bringt etwas Licht ins dunkle. Der Lösung bin ich dadurch aber noch nicht wirklich näher gekommen. Ich habe jetzt zweit Testfälle jeweils auf dem Steckbrett und dem PCB gemessen. Die Steckbrett Schaltung funktioniert, die Schaltung auf dem PCB nicht. Fall 1: Link Status Abfrage über die Ethernet Libary der Arduino IDE. Auf dem Bild "steckbrett.png" ist zu sehen das er 4 Byte sendet und jeweils eine Antwort bekommt. Die Antwort ist richtiger weise das kein Netzwerkkabel angeschlossen ist. Den selbe Sketch auf dem ESP auf dem PCB ergibt die Bytefolge vom Bild "pcb.png. Wie zu sehen ist wird schon auf MOSI etwas ganz anderes gesendet und darauf scheint der W5500 nicht zu antworten. Fall 2: Ich habe die Bytefolge aus Bild "steckbrett.png". Einfach ohne die Ethernet Libary, direkt mit der SPI Libary an den W5500 gesendet (0x00, 0x2E, 0x00, 0x00): Wie zu erwarten war bekomme ich auch auf dem Steckbrett die selbe Antwort wie mit Ethernet Libary (Bild "steckbrett_1.png"). Auf dem PCB wird jetzt auch die Bytefolge wie erwartet auf MOSI gesendet, jedoch kommt über MISO keine Antwort (immer nur 0xFF). Daraus ergeben sich nur wieder neue Fragen. Zum einen warum sendet die Libary verschiedene Anfragen auf dem Gleiche Controller (beides ESP32). Die Wichtigste Frage ist aber warum antwortet der W5500 auf dem PCB nicht, auch wenn er die richtige Anfrage bekommt?
Ich habe nun noch einmal einiges an Energie in die Fehlersuche gesteckt. Leider ist der Grund für die ausbleibenden Antworten nicht zu finden. Die Anfragen lassen sich mit dem Logic Analyzer Nachvollzienen und werden auf fertigen W5500 Boards auch mit Antworten belohnt. Auch mit dem Oszillosop ist nichts außergewöhnliches fest zu stellen (Signalform nicht Grundlegend anders als bei fertigen Boards). Da nun klar war, das ich so einige Design Fehler auf dem PCB habe und diese nicht nur beim Netzwerkchip. Habe ich mich dazu entschieden ein neues Board zu fertigen und mit entsprechenden Messpunkten aus zu statten. Dabei wollte ich mich natürlich so weit wie möglich an die vorher verletzten Design Richtlinien halten. Das Board kam nun vor etwa zwei Wochen. Nach intensiven Tests aller Komponenten, funktioniert nun (fast) alles. Der W5500 ist Einsatzbereit und hat auch kaum fehlerhafte Pakete zu verzeichnen. Den CP2102N habe ich durch einen CP2104 ersetzt, dieser funktioniert nun auch Einwandfrei. Den FRAM habe ich nun direkt vom Platinenhersteller mit auflöten lassen, auch hier funktioniert nun alles. Die FRAM die ich einzeln aus China bestellt habe, sind wohl defekt oder Fälschungen. Bis auf einen kleinen Fehler den ich schnell finden und beheben konnte, funktioniert nun alles. Zusammenfassend möchte ich mich auch noch einmal bei euch bedanken. Ich habt nicht unerheblich zum finden der Fehler beigetragen.
:
Bearbeitet durch User
Oliver .. schrieb: > und hat auch kaum fehlerhafte Pakete zu verzeichnen Bei solch einer Aussage klingeln bei mir die Alarmglocken. Wie stellst du "fehlerhafte Pakete" fest? Wie ist das zu verstehen? Fehler auf der Netzwerk-Ebene werden ja vom internen TCP korrekt abgehandelt sodass der User nichts davon mitkriegt. Wenn du aber Fehler bei der SPI-Übertragung findest dann wär's schlimm ...
jo mei schrieb: > Wie stellst du "fehlerhafte Pakete" fest? Wie ist das zu verstehen? Auf TCP/IP Ebene. Im SPI ist mir noch nichts derartikes aufgefallen, daher habe ich da noch nicht weiter geschaut.
Oliver .. schrieb: > Auf TCP/IP Ebene. Das versteh ich eben nicht. Vom W5500 bzw. der TCP-Implementierung bekommt man ein Paket oder man bekommt keines. Wenn man ein Paket sendet dann kommt es entweder beim Empfänger an oder nicht, aber in beiden Fällen (Recive oder Transmit) bekommt man keine fehler- haften Pakete zugestellt. Ist ja auch der tiefere Sinn von TCP. Im übrigen gibt es ja nicht wirklich Pakete sondern eher zu- fällig zusammengesetzte Paket-Schnipsel. TCP ist ein Stream. Oliver .. schrieb: > und hat auch kaum fehlerhafte Pakete zu verzeichnen. Kannst du das nochmal näher erklären? Vielleicht hast du die Daten-Fragmentierung von TCP noch nicht richtig verstanden, denn Paketierung auf User-Ebene findet ja nicht statt. Nochmal: TCP ist ein Stream.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.