ENC28J60 meldet "späte Kollision"

OP #818186
Lesenswert?

Hallo Forum!

Ich habe ein Problem beim Senden mit meinem ENC28J60 an einem XC167CI
Wenn ich mit einer langsamen Geschwindigkeit, ca. 10kBaud; auf den 
Baustein schreibe, kann ich wunderbar senden.

Sobald ich aber schneller schreibe, bekomm ich eine "late Collision" 
beim senden.
Die SPI-Timings habe ich mit dem Oszi nachgemessen. Ich bin noch weit 
weg von dem, was der Baustein kann (20MBaud).

Woran kann das liegen?
Im Errata-Sheet hab ich nichts gefunden, was der Grund sein könnte.

Kennt jemand das Problem? Und hat es vielleicht auch gelöst oder 
zumindest eine Idee?

Danke
Thomas
#818232
Lesenswert?

Late collisions heisst bei sauberem Netzwerk beispielsweise, dass beide 
Seiten sich über den full/half duplex mode nicht einig sind. Wenn der 
ENC auf half steht, der switch aber auf full, dann passiert genau dies. 
Umgekehrt können late collisions im ENC per definitionem eigentlich 
nicht auftreten.

Da der ENC keine auto negotiation durchführt, ist der full duplex mode 
meist sinnlos, es sei denn man nagelt den Switch-Port manuell auf full, 
denn ohne auto negiotiation steht der i.d.R. auf half.

Aber ok, wenn beide Seiten den gleichen Modus fahren und das Problem 
trotzdem auftritt, dann spinnt irgendwas im Netzwerk. Störungen, 
Switch/Hub ist Schrott, falsches Design vom LAN-Interface, ... 
Jedenfalls bedeutet dieser Fehler, dass der ENC Daten kriegt oder zu 
kriegen meint, obwohl er grad auf der Leitung aktiv ist (und der 
Zeitraum indem das zulässig ist schon abgelaufen ist).
OP #818247
Lesenswert?

Hallo,

also bei HD ist genau das gleiche Problem.
Komischerweise hängt es von der Geschwindigkeit ab, mit der ich auf den 
Baustein schreibe.
Im Errata-Sheet hab ich auch nichts gefunden, was zu dem Thema passt.
Auch nicht in einem älteren oder neueren.

Auf der anderen Seite hängt ein D-Link Switch 10/100/1000.
Ich hab auch schon meinen Rechner direkt mit einem gekreutzen Kabel 
verbunden. Auch keine Änderung :-)
#818256
Lesenswert?

Thomas Weyhrauch wrote:

> Komischerweise hängt es von der Geschwindigkeit ab, mit der ich auf den
> Baustein schreibe.

Was genau meinst du mit dieser Geschwindigkeit? Das SPI vom ENC ist ja 
kein Modem, d.h. eine Baudrate ist da ein eher seltsamer Begriff.

Sind die Ethernet-Frames sehr klein (64 Bytes), kann das Problem nicht 
auftreten. Dann geht zwar der normale collision counter hoch, aber late 
collision können überhaupt nur ab einer bestimmten Grösse der Frames 
auftreten.

Wie sieht die Hardware genau aus? Selbstbau? Kit?

Wer zeigt die late collisions an? Ein counter im ENC?
OP #818395
Lesenswert?

Hallo,

das SPI-Interface ist eine serielle Schnittstelle. Und bei einer 
seriellen Übertragung spricht man von Baudrate. Das muss nicht unbedingt 
ein Modem sein.

Ich habe etwa 10kHz eingestellt. Das ist noch weit weg von dem, was der 
ENC kann. Da klappt die Sache ohne Kolissionen.
Sobald ich schneller werde, also so ab ca. 20-30kHz, treten die 
Kollisionen auf.

Das ganze ist auf einer kleinen Platine untergebracht, auf der das 
ENC-Modul von www.b-redemann.de sitzt.
Beides sind professionelle Boards. Also kein fliegende Verdrahtung.
Als Ethernetkabel kommt Cat5e zum Einsatz. Auch hier hab ich mehrere 
getestet.

Das Late-Collision-Bit im ENC ist gesetzt. Und es werden auch keine 
Daten gesendet. Zumindest nicht laut Wireshark.
#818509
Lesenswert?

Thomas Weyhrauch wrote:

> das SPI-Interface ist eine serielle Schnittstelle. Und bei einer
> seriellen Übertragung spricht man von Baudrate.

Besser nicht, es sei denn man weiss genau was das heisst. Gigabit 
Ethernet hast 125 MBaud.

> Sobald ich schneller werde, also so ab ca. 20-30kHz, treten die
> Kollisionen auf.

Dann hat das Problem mit dem Ethernet nichts zu tun.

ENC Revisionen unter B5 benötigen einen SPI Takt von mindestens 8MHz.
OP #819196
Lesenswert?

> ENC Revisionen unter B5 benötigen einen SPI Takt von mindestens 8MHz.

Ich habe die B5-Version. Mit 20MHz (das max. laut Datenblatt) geht
garnichts. Mit 10MHz geht die Kommunikation mit dem Baustein, das wars
aber.
Und mit 20kHz klappt dann endlich auch das versenden von arp-Packeten.
Manchmal sogar TCP/IP-Packete von mehr als 64byte.
Mit 10kHz klappt dann alles so, wie es sein soll.


> Wie wäre es mit einer kapazitiven Kopplung von SPI nach Ethernet

Wie meinst du das genau?
#819481
Lesenswert?

Thomas Weyhrauch wrote:
>> Wie wäre es mit einer kapazitiven Kopplung von SPI nach Ethernet
> Wie meinst du das genau?

Ich habe gerade gelesen, dass du ein fertiges Modul benutzt, dann wird 
das vermutlich nicht dein Problem sein.
Trotzdem eine Erklärung:
Wenn z.B. zwei Leiterbahnen direkt nebeneinander verlaufen, dann bilden 
sie einen kleinen Kondensator, über den sie gekoppelt sind. Wenn nun auf 
der einen Leiterbahn ein digitales Signal ist, hast du auf der anderen 
bei jeder Flanke einen kurzen Impuls. Je hochohmiger das eigentliche 
Signal auf der zweiten Leiterbahn ist, desto ausgeprägter der Spike.
OP #820114
Lesenswert?

Ja, da geb ich dir grundsätzlich recht. Aber nicht bei 10kHz und 
Abständen von ca. 0,8mm.
Die Leitungen liegen auch weit auseinander. Hab mir  eben das Layout 
noch mal angeguckt.

Die Kommunikation zwischen meinen µC und dem ENC klappt ja auch 
wunderbar. Und während der Baustein sendet, ist SPI still.
Aber die Idee ist gut. Ich werde mich mal dran machen und messen, ob 
sich da was feststellen lässt.
OP #828659
Lesenswert?

Ok, hab das Problem gelöst, bzw. Microchip hat es gelöst
Im Erratasheet zum B5 unter dem Punkt "13. Module: PHY" steht die 
Lösung.
Wenn der ENC Linkimpulse erhält, während er sendet, meldet er die als 
Kollision.

Ein Workaround ist auch angegeben. Und siehe da, es klappt auch alles.

Was das ganze allerdings mit der SPI-Geschwindigkeit zu tun hat, ist 
fraglich.

Gruß
Thomas

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