Forum: Mikrocontroller und Digitale Elektronik ENC28J60 verliert Link nach einiger Zeit


von Klaus L. (keyel80)


Lesenswert?

Hallo liebe Leute,

ich habe auf Basis des STM32F4-discovery und einem ENC28J60-Board 
(http://www.lctech-inc.com/Hardware/Detail.aspx?id=588fbc2e-ecc1-4013-ac35-69bc83bda1fb) 
einen Webserver aufgebaut.
Mir ist klar, dass STM32F4 eine integrierte MAC-Einheit hat und ich 
eigentlich nur einen PHY anschließen sollte. Hintergrund diese 
Entscheidung  ist, dass ich später evtl. auf einen STM32F103 portieren 
möchte.

Die Toolchain basiert auf Eclipse CDT, STM32CubeMX, dem gnuarm 4.8, 
gnuarmeclipse und openocd. Ein wenig stolz bin ich schon darauf, diese 
Geschichte zum Laufen gebracht zu haben. Alle Schritte habe ich 
dokumentiert und sobald alles sauber funktioniert, möchte ich gerne ein 
Tutorial hier im Forum zu Verfügung stellen.

Die Software habe ich unter Verwendung der CubeMX-Firmware, dem FreeRTOS 
8.0 und dem uip 1.0 verfasst. Mein Code orientiert sich ansonsten sehr 
stark an dem FreeRTOS-Beispiel "CORTEX_STM32F107_GCC_Rowley".


Leider läuft mein System noch nicht rund. Anfangs lässt sich noch die 
hinterlegte Webseite aufrufen. Nach einiger Zeit (30sek...5min) geht die 
Link-LED aus und das Board ist nicht mehr erreichbar. Das sonderbare ist 
nun, dass nicht ein Reset des Systems, sondern ein Aus- und Einstecken 
des LAN-Kabels dazu führt, dass ich wieder einen Link bekomme. Das Board 
ist dann stets wieder "ganz normal" erreichbar...bis das Spiel wieder 
von vorne losgeht.

Oberflächlich habe ich die Sache mal debugged. Mein ENC28j60-Treiber 
liefert einfach nur zurück, dass 0 Byte empfangen wurden. Bevor ich 
weitere Testroutinen einbaue, frage ich mich, ob man durch das 
Fehlerbild nicht einen Softwarefehler ausschließen kann und sich rein 
auf die Hardware beschränken kann. Ich versorge das ENC28J60-Modul mit 3 
Volt aus aus dem Discovery. Ist möglicherweise diese Stromversorgung 
kritisch? Gibt es da Erfahrungen und Hinweise von Eurer Seite? Wie 
sollte ich vorgehen?

Herzlichen Dank im Voraus für Eure Hilfe!

Klaus

von Volker (Gast)


Lesenswert?

3V sind vielleicht etwas zu knapp bemessen. Datenblatt sagt 3.1V 
Minimum. Ausserdem muss diese min. 180mA liefern können.

von Klaus L. (keyel80)


Lesenswert?

Ich war schon kurz davor, mich für meine Frage zu schämen - schließlich 
habe ich den von Volker genannten Lösungsansatz ja schon selbst 
angedeutet.


Nach dem Anschluss einer stabilen 3,3V-Versorgung konnte ich das System 
mehr als 10 Minuten problemlos anpingen. Doch bei Ping 750, also nach 
gut 12 Minuten, aber verlosch die Link-LED und der ENC28J60 war erst 
nach einen neuen Einstecken des LAN-Kabels erreichbar. In weiteren 
Versuchen ging die Link-LED dann auch schon mal nach kürzerer Zeit aus.

Weitere Ideen? Vielen Dank dafür!

Klaus

von Dennis R. (dennis_ec) Flattr this


Lesenswert?

Eventuell Banal, 100nF am ENC sind drann?

von wendelsberg (Gast)


Lesenswert?

Dennis R. schrieb:
> Eventuell Banal, 100nF am ENC sind drann?

Wenn ich mich recht erinnere, sind das wohl 6 C's die z.B. beim 
Pollinboard fehlten und seitdem ich die nachgeruestet habe, laeuft das 
stabil ueber inzwischen viele Monate.

wendelsberg

von Klaus L. (keyel80)


Lesenswert?

@Dennis & Wendelsberg, vielen Dank - das könnte tatsächlich sein!


Nach Informationen von 
http://www.st0ne.net/blog/2012/05/10/pollin-avr-net-io-verbesserungsmasnahmen/ 
und 
http://www.ip-symcon.de/forum/threads/13081-P*llins-AVR-NET-IO-Langzeitstabilit%C3%A4t-des-LAN-Chips 
habe ich mir mal die für den ENC28j60 empfohlene Beschaltung im 
Datenblatt http://ww1.microchip.com/downloads/en/DeviceDoc/39662e.pdf 
angeschaut.

Tatsächlich fehlen auf meinem Board die 100n-Stützkondensatoren an den 
Versorgungspins und zudem ist der Rbias-Widerstand mit 2k7 statt 2k32 
falsch dimensioniert. Bedingt durch die SMD-Bauteile werde ich es 
vermutlich auch nicht schaffen, diese Komponenten nachzurüsten. So, 
damit ist mein ENC28j60-Board wohl schrottreif...

Danke für Eure Hilfe!

Klaus

von Philipp L. (philipp_l89)


Lesenswert?

Klaus L. schrieb:
> Tatsächlich fehlen auf meinem Board die 100n-Stützkondensatoren an den
> Versorgungspins und zudem ist der Rbias-Widerstand mit 2k7 statt 2k32
> falsch dimensioniert. Bedingt durch die SMD-Bauteile werde ich es
> vermutlich auch nicht schaffen, diese Komponenten nachzurüsten. So,
> damit ist mein ENC28j60-Board wohl schrottreif...

Quatsch, hier gibt es ungefähr eine zilliarden Menschen die das schaffen 
(mich eingeschlossen!). Wenn Du mir das Board schickst, dann mache ich 
es gerne!

von leluno (Gast)


Lesenswert?

Klaus L. schrieb:
> ist mein ENC28j60-Board wohl schrottreif...

derartige boards gibt es für 2,50 € mit voller Beschaltung:
http://www.ebay.de/itm/New-ENC28J60-Ethernet-LAN-Network-Module-For-Arduino-SPI-AVR-PIC-LPC-STM32-/310670027142?pt=LH_DefaultDomain_0&hash=item4855606986

Da brauchst du dann nur die SPI-Leitungen verbinden. Funktioniert 
wunderbar. Da lohnt sich das Selberlöten nicht mehr.

von leluno (Gast)


Lesenswert?

der letzte Beitrag ist Quatsch, du hast ja genau so ein Board. Dabei 
handelt es sich aber um Massenware. Wenn die bei diesem Board verwendete 
Beschaltung nicht ordentlich funktionieren würde, gäbe es hierzu 
entsprechende Hinweise insbesondere in diesem Forum. Einen 
Hardwarefehler am ENC-Board kann man daher wohl weitgehend ausschließen, 
auch wenn Empfehlungen aus dem Datasheet nicht 100% eingehalten sind.

von Magic S. (magic_smoke)


Lesenswert?

Jaja.
Erinnert mich an "Am Öl kanns nicht liegen, ist gar keins drin!"

von Sven (Gast)


Lesenswert?

Zeig doch mal ein Bild vom Aufbau ?
Wie lang sind die Leitungen vom ENC zum Board ?

Gruß Sven

von Sascha W. (sascha-w)


Lesenswert?

Wo ist der ENC Ethernetmäßig angeschlossen ? Mal ein anderes Gerät / 
Kabel getestet.
Wenn der LINK nach einem Trennen des LAN-Kabels wieder kommt, kann ein 
Fehler in der Software so ziemlich ausgeschlossen werden, denn an der 
Konfiguration des ENC wird ja im Laufenden Betrieb nichts mehr geändert.


Sascha

: Bearbeitet durch User
von Klaus L. (keyel80)


Angehängte Dateien:

Lesenswert?

Hier ein Bild des Aufbaus. Ich nutze DuPont-Jumperkabel zur Verbindung 
der Komponenten. Ein Breadboard-Power-Supply erzeugt 3,3V, das 
seinerseits von der Discovery-5V-Schiene versorgt wird. Sicherlich 
entspricht das keiner EMV-Norm, aber ein Fehler in der Software oder dem 
SPI vermute ich wie Sascha auch nicht...

Der ENC ist an meiner Vodafone EasyBox 802 angeschlossen. Ich habe es 
gestern mit einem kürzeren Kabel und einem anderen Port probiert, aber 
ähnliche Probleme beobachtet. Ähnlich deshalb, weil der Link sich 
tatsächlich einmal auch ohne Aus- und Einstecken wieder hergestellt 
hat!?!? Leider habe ich momentan weder einen anderen Hub/Switch noch ein 
Cross-Kabel zum weiteren Ausprobieren greifbar.

Mir ist bei der Inspektion der ENC-Platine aufgefallen, dass ein Pin 
evtl schlecht gelötet ist. Ich habe mir Philipps Kommentar als Anreiz 
genommen und mir einen Pack mit bedrahteten 100nF-Kondensatoren 
bestellt. Wenn ich versuche, die C's anzulöten, werde ich auch mal jeden 
einzelnen Pin nachlöten. Ich berichte dann an dieser Stelle weiter.

Dank an Euch alle für die Ideen und Hinweise!

Klaus

von Sascha W. (sascha-w)


Lesenswert?

Klaus L. schrieb:
> Leider habe ich momentan weder einen anderen Hub/Switch noch ein
> Cross-Kabel zum weiteren Ausprobieren greifbar.
eigentlich können so ziemlich alle PC-Chipsätze seit Jahren Auto-MDX, so 
das du den PC auch ohne Cross-Kabel mit dem ENC verbinden kannst.

Sascha

von Klaus L. (keyel80)


Angehängte Dateien:

Lesenswert?

@Sascha: Vielen Dank für diesen seht guten Tipp. Ich habe die 
Direktverbindung mit "normalem" Patchkabel mit meinem Rechner 
ausprobiert und es hat tatsächlich funktioniert - aber wieder nur kurze 
Zeit.

Heute morgen habe ich mich dann an die Operation "Nachlöten und drei 
Block-Kondensatoren anbringen" gemacht...und wohl erfolgreich 
abgeschlossen! Ein Beweisfoto seht ihr im Anhang. Auch nach 30 Minuten 
reagiert der ENC28J60 noch auf Pings und verliert den Link nicht. 
Waaaahnsinn!!!

Leute, ich danke Euch für Eure Tipps und insbesondere auch Philipp L., 
der mich mit seinem Kommentar zum Löten ermutigt hat!

Mittlerweile laufen auf meinem STM32F4-Discovery Boards (sowohl 407 als 
auch 429) übrigens das RTOS 8, der ENC28J60, der nRF2401+ (mit einer 
eigenen Bib, die weitgehend auf der Referenz-Bibliothek von Nordic für 
einen 8051-Prozessor basiert) und seit gestern 23:50 auch ein 
HC-SR04-Ultraschall-Entfernungsmesser. So langsam wird - nicht zuletzt 
dank diesem Forum - die Lernkurve steiler!

Einen schönen Sonntag Euch allen!

Klaus

von Volker (Gast)


Lesenswert?

leluno schrieb:

>...
>Einen Hardwarefehler am ENC-Board kann man daher wohl
>weitgehend ausschließen, auch wenn Empfehlungen aus dem
>Datasheet nicht 100% eingehalten sind.

Was hiermit dann wohl widerlegt wäre...

@Klaus
Hast du das Teil mal mit einem Ping flood gequält?

von Sven K. (svenk)


Lesenswert?

@Klaus:

Danke für Dein ausführliches Update inkl. Bildern vor allem aber auch 
der Beschreibung des Fix.

Habe auch schon mehr als 100 Enc Bausteine in Serie verbaut und nach DB 
mit Kondendatoren versorgt. Wichtig war der Tantal und eben auch die 
Abblockkondendatoren an den Pwr Pins.

Hatte mir privat auch ein paar von eben Deinen gezeigten Boards 
bestellt, aber noch nicht in Betrieb genommen.....

Lg Sven

von leluno (Gast)


Lesenswert?

Volker schrieb:
> Was hiermit dann wohl widerlegt wäre...

War offenbar eine Fehleinschätzung. Ich möchte nicht wissen, wieviele 
Hobbybastler an diesem Problem verzweifelt sind. Bei einem 
vs1053-mp3-modul gibt es ein ähnliches Hardwareproblem. Ohne 
entsprechenden Hinweis hat man da keine Chance.

von wendelsberg (Gast)


Lesenswert?

leluno schrieb:
> Ohne entsprechenden Hinweis hat man da keine Chance.

Wenn ich mit richtig erinnere, war die eigentliche Gemeinheit wohl, dass 
die C's nicht im Schaltplan des DB waren, sondern nur im Text.

Das Lesen scheint also auch bei den chinesischen Boardentwicklern 
Probleme zu machen.

wendelsberg

von Klaus L. (keyel80)


Lesenswert?

@Volker: Ein "Ping" pro Sekunde erschien mir eigentlich völlig 
ausreichend. Ich habe zudem nicht die Anforderung, dass meine 
Frickellösung einer DoS-Attacke stand hält ;-)

@wendelsberg: Leider hast Du recht...

Ich hatte über AliExpress direkt beim Hersteller bestellt und diesem 
nach den Hinweisen von Euch vom C-Problem und seinen Folgen berichtet. 
Zumindest kam eine (nicht automatisierte) Mail zurück, in der man 
weitere Informationen von mir erbat. Diese habe ich natürlich bereit 
gestellt und warte nun auf eine zweite Rückmeldung. Ich halte Euch auf 
dem Laufenden!

Ich bin noch nicht 100%ig sicher, dass die fehlenden C's das Problem 
waren. Wie oben angedeutet, waren ggf. auch eine Lötstelle nicht sauber 
ausgeführt.  Wie auch immer: Zukünftige Bastlergenerationen werden 
sicher glücklicher sein, wenn sie ein Board mit Abblockkondensatoren 
bekommen.

Grüße aus Münster -  genießt den Sonntag Abend!

Klaus

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

leluno schrieb:
> Bei einem
> vs1053-mp3-modul gibt es ein ähnliches Hardwareproblem.

Welches denn?
Das Breakoutboard von Waterott/Sparkfun oder was anderes?

von leluno (Gast)


Lesenswert?


von Meik D. (meik)


Angehängte Dateien:

Lesenswert?

Ich muß das Thema hier noch mal ausbuddeln, da ich gerade vor einem 
ähnlichen Problem stehe. Mein ENC verliert nach 2 sek ~ 2 Minuten den 
Link. Allerdings genügt es hier nicht den Stecker raus und wieder rein 
zu stecken, sondern ich muß die komplette Schaltung einmal vom Strom 
trennen und wieder verbinden. Das Ganze ist überhaupt sehr wackelig denn 
es funktioniert ohnehin nur jedes 2-3. Mal. Wenn ich dann mal eine Ping 
Flut über den ENC ergieße und er diese auch brav binnen < 1ms 
beantwortet ist ein Garant eines Abbruchs, wenn ich vom Stuhl aufsteht. 
Kein Witz! Ich vermute hier irgendwelche Ladungen, die sich das Board 
einfängt und den ENC resettet. Resettet wird er definitiv, daß habe ich 
schon herausbekommen, da die MAC Adresse nach dem Abbruch auf 0:0:0 usw. 
ist.
Befehle bekommt der Controller von einem PIC18F2480. Das Board ist ein 
fertig bestücktes aus der Bucht. Die Kondensatoren sind aber drauf auf 
dem Board. Ich habe auch noch einen ENC28J60 als DIP28. Spaßeshalber 
habe ich den mal auf dem Steckbrett aufgebaut und die nötigen Bauteile 
dazu gesteckt. Hier zeigt sich exakt das Gleiche Verhalten. Was ich 
nicht ausschließen kann ist, daß der Code zu 100% OK ist. Da ich den 
Proton Compiler nutze ist die Welt derjenigen die das mal gegenchecken 
könnten vermutlich recht klein. Ich hänge den Code trotzdem mal an in 
der Hoffnung daß mir hier jemand helfen kann. Leider blicke ich da noch 
nicht vollständig durch, da ich mich erst seit wenigen Tagen mit dem 
Netzwerkzeug auf der Controller Ebene beschäftige.
Im Code sind noch recht viele serielle Ausgabebefehle drin, da ich gerne 
wissen möchte was das Programm gerade macht. Außerdem ist eine Prüfung 
drin, die im Fall eines MAC Adressenverlustes den ENC neu initialisiert. 
Das funktioniert aber auch nicht immer. Manchmal ist dann die MAC zwar 
vorhanden, die Kommunikation funktioniert trotzdem nicht.

: Bearbeitet durch User
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.