Probleme mit LAN9512 USB-Hub und Ethernet-Controller

Ich arbeite an einem benutzerdefinierten Board mit einem Raspberry Pi-Computer auf Modul (COM) (Infos und Schaltpläne hier: http://www.raspberrypi.org/raspberry-pi-compute-module-new-product/ . Das Board ist basierend auf dem Raspberry Pi Model B (Schema hier: http://www.raspberrypi.org/model-b-revision-2-0-schematics/ ), da es den LAN9512 USB-Hub und den Ethernet-Controller-IC in derselben Konfiguration wie verwendet Rasberry Pi Modell B (entsprechender Teil des beigefügten Schaltplans).Der erste Downstream-USB-Anschluss auf meiner Platine ist mit einer Arm Cortex M3-MCU auf derselben Platine verbunden, und der andere ist mit dem USB-Anschluss zum Anschließen externer USB-Geräte verbunden Ethernet wird an eine Molex-RJ45-Buchse mit integrierten Magneten angeschlossen.

Das Problem ist, dass, während andere Teile des Boards bisher gut funktionieren, ich den LAN9512 nicht zum Laufen bekomme. Ich schließe das Raspberry Pi COM an und greife über eine serielle Konsole darauf zu. Ich kann sehen, dass der LAN9512 erkannt wird und die richtigen Treiber in die Syslog-Ausgabe geladen werden. Ethernet funktioniert jedoch nicht, wenn ein Kabel angeschlossen ist, nichts passiert, wenn ein USB-Gerät (sei es Maus, Tastatur, Flash-Laufwerk) an den USB-Anschluss angeschlossen ist, und die ARM Cortex MCU wird in Geräten nicht als USB-COM angezeigt Port (wie er in der Software konfiguriert ist). Darüber hinaus ist die Ethernet „LINK“-Leuchte immer AN. Grundsätzlich sieht vom Upstream-Port bis zum Raspberry Pi alles gut aus, da der LAN9512 erkannt und Treiber geladen werden, aber nichts Downstream funktioniert, nicht einmal das Generieren von Meldungen im Syslog oder Debug-Protokoll auf dem Raspberry Pi COM.

Ich habe bisher alles versucht, was mir eingefallen ist. Ich habe den LAN9512-IC auf Kurzschlüsse überprüft, ich habe den IC durch einen neuen ersetzt (gleiches Verhalten), ich habe die Spannungen an allen Pins des LAN9512-IC überprüft und sie mit einer funktionierenden Himbeer-Pi-Spannung auf demselben IC verglichen (der einzige Unterschied ist LINK LED-Signal, wie im beigefügten Dokument gezeigt). Ich habe dafür gesorgt, dass der Kristall mit einem O-Scope oszilliert. Die Schutzdioden U401 habe ich entfernt. Ich habe die Arm Cortex MCU entfernt. Ich habe die Ethernet-Buchse entfernt. Ich habe dafür gesorgt, dass alle Komponenten richtig bestückt sind. Ich habe ein neues COM-Modul ausprobiert.

Wenn ich die GPIO6-Leitung auf dem COM-Modul auf Low treibe, was mit dem RESET des LAN9512 verbunden ist, und wieder auf High, bekomme ich

folgende Ausgabe:

    [ 1041.165108] usb 1-1: USB disconnect, device number 2 
    [ 1041.165143] usb 1-1.1: USB disconnect, device number 3
    [ 1041.165408] smsc95xx 1-1.1:1.0 eth0: unregister 'smsc95xx' usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet
    [ 1041.165472] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
    lsusb:
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Zurück zu hoch

    [ 1137.826768] Indeed it is in host mode hprt0 = 00021501
    [ 1138.006764] usb 1-1: new high-speed USB device number 4 using dwc_otg
    [ 1138.006958] Indeed it is in host mode hprt0 = 00001101
    [ 1138.207088] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
    [ 1138.207123] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1138.213408] hub 1-1:1.0: USB hub found
    [ 1138.213589] hub 1-1:1.0: 3 ports detected
    [ 1138.486807] usb 1-1.1: new high-speed USB device number 5 using dwc_otg
    [ 1138.587054] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
    [ 1138.587086] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    [ 1138.590152] smsc95xx v1.0.4
    [ 1138.656927] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:02:d4:3b
    [ 1138.839255] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup

Das ist dasselbe wie bei einem Himbeer-Pi-Modell B (speichern Sie die letzte Zeile). Ich habe den Schaltplan doppelt und dreifach überprüft und mit dem oben verlinkten Schaltplan von Modell B verglichen. Ich habe beim Layout auf das Routing der USB-Leitungen geachtet, und sie sind so gleich, wie ich sie machen könnte, vorausgesetzt, meine Designsoftware verfügt nicht über die Möglichkeit, differenzielle Paare zu routen.

Der Schichtaufbau ist OBEN, inneres Signal, innere Masse, Unterseite, und die betreffenden Teile der Platine sind angebracht. Ich habe alle Dokumente gelesen, die ich in Bezug auf LAN9512 finden konnte, und konnte nichts finden, was diese Situation erklärt. Ich verstehe auch nicht, warum die LINK-LED immer eingeschaltet ist.

Meine Frage ist, ob jemand mit mehr Erfahrung als ich mit diesem IC oder mit Ethernet- und USB-Hubs im Allgemeinen ein potenzielles Problem erkennen kann? Kann das alles daran liegen, dass USB- und ETH-Leitungen nicht unterschiedlich geroutet werden? Ich würde erwarten, dass ich einige Fehler und alle Arten von unberechenbarem Verhalten bekommen würde, wenn das der Fall wäre?

Anbei sind die LAN9512-Schaltplanseite, das Platinenlayout, das dmesg-Protokoll beim Hochfahren des Rapsberry Pi und die Spannungen, die auf meiner Platine und auf einem funktionierenden Modell B gemessen wurden.

Die LAN9512-Dokumentation finden Sie hier: http://www.microchip.com/wwwproducts/Devices.aspx?product=LAN9512

Jedes Feedback oder jede Idee wird sehr geschätzt.

Schema von LAN9512 hier: https://drive.google.com/file/d/0B0QS1nQxzbYMMHlfNzF1S01uTkE/view?usp=sharing

Spannungen auf Modell B und benutzerdefiniertem Board hier: https://drive.google.com/file/d/0B0QS1nQxzbYMMDBfQVNvei1xZTQ/view?usp=sharing

PCB-Schichten:

SPITZE

https://drive.google.com/file/d/0B0QS1nQxzbYMV0F4NWNtZFgwbXM/view?usp=sharing

Inneres Zeichen:

https://drive.google.com/file/d/0B0QS1nQxzbYMWWdyUk1Qc1dxdlE/view?usp=sharing

Innere GND-Ebene:

https://drive.google.com/file/d/0B0QS1nQxzbYMRUhqbTNOME1yREk/view?usp=sharing

Unterseite:

https://drive.google.com/file/d/0B0QS1nQxzbYMN05lZnNmYTdzdUE/view?usp=sharing

Ich habe gerade gewandert, ob Sie das Problem gelöst haben. Ich habe ein Projekt mit derselben Beschreibung wie Ihres und bin gerade auf dasselbe Problem gestoßen.
@AndyP Ja, ich habe das Problem gelöst - die Lösung unten als Antwort hinzugefügt.
@AndyP Eine Sache, die ich versucht habe, war, USB-Spuren zu schneiden und dünne Drähte direkt anstelle von USB-Spuren zu löten. Auf diese Weise gelang es mir, die USB-Funktionalität an EINIGEN der Ports des HUB zum Laufen zu bringen.

Antworten (1)

Ich habe das Problem gelöst, aber es dauerte eine Neufertigung der Platine. Das Problem schien beim Routing und Layer-Stack-up zu liegen. Die USB- und Ethernet-Spuren hatten aus zwei Gründen keine korrekte Impedanz.

Erstens war die Gleisgeometrie für 90 Ohm (USB) und 100 Ohm (ETHERNET) differentielle Impedanz nicht korrekt. Wenn Ihre Layout-Software kein differentielles Routing unterstützt (z. B. Altium), müssen Sie etwas wie SaturnPCB verwenden, um die Leiterbahngeometrie zu berechnen und die Leiterbahnen entsprechend manuell zu routen (ich musste dies tun).

Zweitens, und das ist am wichtigsten, war der Schichtaufbau nicht korrekt, um USB- und Ethernet-Hochgeschwindigkeitsspuren zu unterstützen. Der Stapel war OBEN-INNERES SIG-GND-BOTTOM und die Hochgeschwindigkeitsspuren wurden auf der obersten Schicht geroutet. USB- und ETH-Traces erfordern eine solide Masseebene darunter, und da dies auf meinem Board nicht der Fall war, hat es die Signalintegrität wirklich durcheinander gebracht. Das Anbringen einer soliden Masseebene (wodurch der Stapel auf TOP-GND-INNER SIGNAL-BOTTOM geändert wurde) behebt die Probleme mit der Signalintegrität.

Ich habe auch die Platzierung der Entkopplungskappen um den LAN9512 IC herum aufgeräumt.

Nach diesen Änderungen funktionierte das neue Board ohne Probleme. Wenn Sie den RaspberryPi verwenden, um den LAN9512 zu takten (wie es B+ mit LAN9514 tut), müssen Sie den Pi auch so konfigurieren, dass er ein Taktsignal ausgibt. Infos dazu findest du hier: http://www.elektricks.net/raspberry-pi-compute-module-general-purpose-clock/ Wenn du einen separaten Oszillator für den LAN9512 hast, dann ignoriere diesen Absatz.

Hoffentlich hilft das!

danke für die Antwort, ich stehe hier derzeit auch vor dem gleichen Problem, sowohl mein LAN als auch meine USBs funktionieren nicht. Ich verwende LAN9514 mit externem Quarz. können Sie Ihre neuesten Schaltpläne und Leiterplatten zur Referenzierung freigeben?