Haftungsausschluss, ich bin ein SW-Typ, also halte bitte nichts für selbstverständlich, und ich würde mich über Erklärungen in Laiensprache freuen :)
Wir haben ein kundenspezifisches Design basierend auf Freescale's i.mx233
und als Referenz haben wir ein Board von Olimex namens Olinuxino verwendet. Auf dem Olinuxino haben sie einen doppelt funktionierenden LAN-USB-Chip, der für unser Design unnötig ist (wir brauchen nur 1 USB-Port für einen WiFi-Dongle), also dachten wir, wir können ihn einfach entfernen und ein USB-Gerät direkt an die Prozessoren anschließen D+ und D- Leitungen.
Aufgrund eines separaten Layoutfehlers kann der von uns gewählte USB-Anschluss in dieser HW-Revision nicht verwendet werden. Ich dachte, ich könnte das Design überprüfen, indem ich einfach ein USB-Verlängerungskabel abschneide und es an den Anschlüssen verlöte, also sieht es derzeit so aus:
Wenn ich jetzt das WiFi-Modul an den Anschluss anschließe, scheint es richtig aufzuzählen, und wenn ich mir die Signalisierung ansehe, sieht es auch anständig aus (ich habe es mit der Referenzplatine verglichen, und es sieht sehr ähnlich aus):
Auf der Softwareseite beschwert sich jedoch der Treiber für WiFi, dass er die Chipsatz-ID falsch liest, und weigert sich zu laden:
[ 2.390000] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x1000 with error -
[ 2.400000] ieee80211 phy0: rt2800_probe_rt: Error - Invalid RT chipset 0xc37b, rev 5108 detected
[ 2.410000] ieee80211 phy0: rt2x00lib_probe_dev: Error - Failed to allocate device
Der schematische Teil für den (ursprünglichen) USB-Anschluss:
Und das eigentliche Layout für diesen Teil ist auch einfach (Im Bild nur die oberste Ebene, ich habe alle anderen Ebenen der Übersichtlichkeit halber ausgeblendet. Ich habe die D-Signalspur von der unteren Ebene von Hand gezeichnet, bitte beachten Sie dies im echten Bild oben das ist um 180 Grad gedreht):
Das exakt gleiche Softwarepaket und der gleiche Dongle auf unserem Referenzboard funktionieren und der Treiber wird geladen. Ich habe angefangen, die USB2.0-Spezifikation zu lesen , und in Kapitel 7 sprechen sie über die elektrische Signalisierung, und dieser Teil ist mir aufgefallen:
Der Hochgeschwindigkeitsbetrieb unterstützt die Signalisierung bei 480 Mb/s. Um bei dieser Rate eine zuverlässige Signalübertragung zu erreichen, wird das Kabel an jedem Ende mit einem Widerstand von jedem Draht zur Erde abgeschlossen. Der Wert dieses Widerstands (an jedem Draht) ist nominell auf 1/2 der spezifizierten differentiellen Impedanz des Kabels oder 45 Ω eingestellt. Dies stellt einen differentiellen Abschluss von 90 Ω dar.
Habe ich die Signalisierung jetzt mit meinem USB-Anschluss vermasselt? Was differential impedance
bedeutet das? 5V
Hätte ich auch mit dem ursprünglichen Port genau das gleiche Problem gehabt, da wir nur die , GND
, D+
und Leitungen an den Anschluss anschließen wollten D-
? Oder soll sich dieser Widerstand an jedem Ende der Verbindung im Silizium befinden? Was könnte hier falsch sein?
Danke für jeden Rat!
Bearbeiten: Layout und schematisches Bild für mehr Klarheit hinzugefügt
Bearbeiten 2 : Ich habe mein abgeschnittenes Verlängerungskabel weggeworfen und den ursprünglichen USB-Stecker gebogen und konnte ihn in einem etwas komischen Winkel auf der Platine platzieren.
Ich habe auch die notwendigen Treiber für USB-Speicher zum Kernel hinzugefügt und habe jetzt überprüft, dass mein 16-GB-HighSpeed-USB-Speicher funktioniert. Beim Booten wird erkannt:
[ 2.240000] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 2.430000] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 2.440000] scsi0 : usb-storage 1-1:1.0
[ 3.460000] scsi 0:0:0:0: Direct-Access UFD 2.0 Silicon-Power16G PMAP PQ: 0 ANSI: 4
[ 3.500000] sd 0:0:0:0: [sda] 30283008 512-byte logical blocks: (15.5 GB/14.4 GiB)
[ 3.520000] sd 0:0:0:0: [sda] Write Protect is off
<snip>
Der Flash auf dem Board ist sehr klein, aber auf dem USB-Laufwerk kann ich eine 1-GB- Datei in ein anderes Verzeichnis kopieren , und die Geschwindigkeit beträgt etwa 360 KB/s. Die MD5-Summe stimmt, und ich sehe keine Probleme mit dem Memory Stick.
Also, ich denke, das bedeutet, dass jetzt nur mit dem WLAN-Dongle etwas schief geht. Es ist DP
seltsam DM
.
Endgültige Bearbeitung Obwohl wir das Problem nicht mit 100%iger Sicherheit lokalisieren konnten, funktionieren alle USB-Geräte ohne Probleme, einschließlich des WLAN-Moduls, wenn der Controller über die Registrierung gezwungen wird, nur im 1.1-Modus zu arbeiten. In unserem nächsten Layout haben wir strenge differentielle Routing-Regeln befolgt, und hoffentlich ist dies das Ende unserer Probleme :)
Es ist eine schwer zu beantwortende Frage , da dies eher eine Debugging-Sache ist. Aber ich kann einige Ideen beitragen, was Sie versuchen könnten.
Das erste, was ich dachte, war, dass Ihre Pigtail-Verbindungen (die 1-2 cm langen losen Drähte, die aus dem Kabel und auf Ihre Platine kommen) für den Betrieb mit 480 Mbit / s zu lang sein könnten. Ideen zum Ausprobieren:
Eine Anmerkung zu einigen Kommentaren hier: Machen Sie sich keine Gedanken über die Anzahl der Durchkontaktierungen und die Längenanpassung dieser Leiterbahnen. Richtig gemacht, Vias und ein kleiner Längenunterschied waren noch nie ein Problem für USB 2.0. Und das ist unbedeutend im Vergleich zu dem, was Sie mit den Kabelpigtails machen.
Einige typische allgemeine Fehler, auf die Sie prüfen sollten, sind:
Auch Software würde ich noch nicht ausschließen. Suchen Sie nach Unterschieden - wie in den Konfigurationsdaten usw.
Und seien Sie nicht zu stolz, einen erfahrenen Hardware-Typen um Hilfe zu bitten :-)
Update - Hinweis zur Messung der Vcc-Welligkeit:
Aus meiner Antwort auf diese Frage: Wie überprüfe ich, ob meine 3,3-V-Stromschiene die Anforderungen für ein Ember EM357-SoC erfüllt?
Das beste Papier, das ich kenne, das beschreibt, wie man diese Messung durchführt, ist dieses hier: http://www.electrical-integrity.com/Quietpower_files/Quietpower-21.pdf
Kurz gesagt: Verwenden Sie ein Koaxialkabel, das direkt auf Ihr Board gelötet wird. Führen Sie das 50R-Koaxialkabel in Ihr Oszilloskop ein, das auf eine Eingangsimpedanz von 50R eingestellt ist. Wählen Sie AC-Kopplung. Ausreichende Bandbreite (mindestens 500 MHz). Und unendliche Ausdauer.
Wenn Sie die Messung mit einer hochohmigen Sonde mit einem langen "Schwanz" für Masse durchführen, wird möglicherweise zusätzliches Rauschen aufgenommen, das nicht mit Ihrem Vcc-Rauschen zusammenhängt. Führen Sie im Zweifelsfall immer das Null-Experiment durch: Berühren Sie mit der Sondenspitze den Massepunkt, sodass Spitze und Masse der Sonde denselben Punkt auf der Platine berühren. Wenn Sie keine flache Linie erhalten, wird etwas durch induktive Kopplung in die Schleife aufgenommen, die aus Sonde und Masseleitung gebildet wird.
Also hast du zu viel Lärm? Angenommen, das Datenblatt dieses Geräts fordert 3,3 V +/- 5 % für die Vcc-Versorgung. Das bedeutet, dass Sie +/-165 mV als Grenze haben. Nehmen wir an, Sie haben eine Genauigkeit von 2 % Ihres 3,3-V-DC-Reglers. Und nehmen wir an, Sie haben einen Verteilungsabfall von 0-1% in den Verbindungen zwischen dem Regler und dem Gerät (Kabel, Stecker, Leiterbahnen, Filter usw.). Damit bleiben 2 % für AC-Rauschen/Welligkeit oder +/-66 mV (132 mVpp).
Sie könnten versuchen, die Abschirmung des USB-Kabels an die USB-Masse zu heften und sehen, ob dies die Situation verbessert. High-Speed-USB ist empfindlich in Sachen Kabelimpedanz.
Hallo Zu Ihrer Frage "Was bedeutet diese Differenzimpedanz?" Die differentielle Impedanz der Leitung ist eigentlich der Widerstand der Leiterbahn bis zum Anschluss, da USB differentiell ist, handelt es sich um eine differentielle Impedanz. Eine Einzelspurimpedanz von beispielsweise D+ beträgt 45 Ohm und die kombinierte Impedanz von D+ & D- beträgt 90 Ohm. Jetzt können Sie dies nicht ganz schnell mit einem einfachen Digitalvoltmeter (DMV) messen, also werden Sie es wahrscheinlich nicht tun können Sie dies überprüfen, es sei denn, Sie haben irgendwo in Ihrer Nähe ein TDR. In Bezug auf Ihr Problem ist es unwahrscheinlich, dass es durch eine Impedanzfehlanpassung verursacht wird. Ein erster Blick auf Ihr Signal scheint nicht sehr schlimm zu sein.
Wenn Sie Fragen zu elektrischen Tests und Problemen haben, können Sie jederzeit einen Blick auf http://www.testusb.com/ werfen . Dies ist eine Website, die ich und einige meiner Kollegen geschrieben haben.
Könntest du vielleicht einen Screenshot von deinem Schaltplan teilen? Hier können wir also genauer hinsehen.
MarkU
MarkU
Jul
Jul
MarkU
Jul
MarkU
Jul
MarkU