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
3V sind vielleicht etwas zu knapp bemessen. Datenblatt sagt 3.1V Minimum. Ausserdem muss diese min. 180mA liefern können.
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
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
@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
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!
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.
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.
Jaja. Erinnert mich an "Am Öl kanns nicht liegen, ist gar keins drin!"
Zeig doch mal ein Bild vom Aufbau ? Wie lang sind die Leitungen vom ENC zum Board ? Gruß Sven
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
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
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
@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
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?
@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
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.
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
@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
leluno schrieb: > Bei einem > vs1053-mp3-modul gibt es ein ähnliches Hardwareproblem. Welches denn? Das Breakoutboard von Waterott/Sparkfun oder was anderes?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.