FEHLER
RevisionsnummerA
Bestimmen um Fehler im Chip klassifizieren zu können ENC28J60 Rev. B7 Silicon Errata
Abhängig von der Revisionsnummer hat der IC eine Menge von Fehlern
The silicon revision level can be retrieved by querying the read-only EREVID register, located at address 12h in Bank 3 of the device’s Control register space.
Eine Auswahl (die hier angeführten Lösungen gelten für alle Varianten)
SPI min 8MHz
Startup min 1ms
kein CLKOUT Signal im Powersave Mode
Das untere Segment des buffer memory soll für den Receive-Puffer verwendet werden, sonst werden die internen Pointer falsch verwaltet
receive buffer 0 bis n
transmit buffer (n + 1) bis 8191)das Receive-Packet-Interrupt-Flag EIR.PKTIF funktioniert nicht; anstelle dessen sollte in einer ISR, wenn abgefragt werden soll, ob ein Paket empfangen wurde, der Wert EPKTCNT in der Registerbank 1 abgefragt werden; unabhängig davon werden über den Interrupt-Pin zuverlässig Interrupts ausgelöst
Die automatische RX Polaritätserkennung und -korrektur funktioniert nicht. Immer schauen, dass die richtige Polarität am Anschluss anliegt (Wahl der Kabel!!!)
Loopback funktioniert im Halbduplex-Mode nicht zuverlässig. Daher: Diagnose mit Loopback nur im Vollduplex-Mode mit externem loopback Kabel.. To avoid looping occasional packets back to one self, PHCON2.HDLDIS should be set by the host controller. PHCON2.HDLDIS is clear by default.
Im Halbduplexmode kommt es zu Sendeproblemen: wenn z.B: ein Hardware-Transmit-Abbruch durch viele Kollisionen, late Collision oder Verzögerung passiert, dann hängt sich die Sendelogik auf. Vermeidung: siehe Silicon Errata Dokument (Punkte 12 und 13)
Der Empfangs-Read-Pointer ERXRDPT darf nur ungerade Adressen haben, sonst hängt sich das Empfangssystem auf; dieser Zeiger sagt dem System, wo das nächste auszuwertende Paket im Ringpuffer liegt; es zeigt also dem Schreib-Pointer das Ende des Ringpuffers an. Wenn ein Paket ausgewertet ist wird dieser Zeiger von der Software auf das nächste Paket gestellt
Lösung: der Next-Packet-Pointer zeigt immer auf eine gerade Stelle, wenn man das Paket entsprechend konfiguriert, dann braucht der ERSXRDPT nur auf (Next-Packet-Pointer -1) gestellt werdenDas Late-Collision-Bit wird nicht richtig gesetzt; Abhilfe: Work around:
Whenever a late collision has potentially occurred (both EIR.TXERIF and ESTAT.TXABRT bits will be set), read the transmit status vector and check the transmit late collision bit (bit 29).LED Logik fehlerhaft (beeinflusst evtl. auch die Umschaltung Full/Half Duplex:
Place a resistor in parallel with the LED. The resistor value needed is not critical. Resistors between 1 k and 100 k are recommended.DMA module Checksum Fehlerhaft
Abhilfe: perform checksums in software. This problem does not affect the DMA copy operation (ECON1.CSUMEN = 0).Pattern matching funktioniert nicht einwandfrei, es kommen falsche Pakete durch
Abhilfe:When using the pattern match receive filter, discard any unwanted packets in softwar eIm Power-Save-Mode funktioniert SPI Reset nicht
Abhilfe:
die im errata-Dokument angegeben Prozedur (Aufwecken, dann Reset, dann Statusflags checken)