Macht der USB-Anschluss etwas Besonderes wie Impedanzanpassung oder ist es nur eine Möglichkeit, zwei Geräte miteinander zu verbinden?

Ich entwerfe ein Board, bei dem sich sowohl der USB-Host als auch das Gerät auf demselben Board befinden. Der Host ist ein Mikroprozessor und das Gerät ist ein HID-Gerät, das einen stm32f107 als USB-Gerätecontroller hat. Was ich wissen muss ist:

  • Ist es möglich, meine Host- und Gerätedatenleitungen ohne zusätzliche Komponenten wie USB-Anschlüsse, Widerstände und ... als differentielles Paar auf der Platine anzuschließen?

Machen USB-Anschlüsse dasselbe wie bei Antennenanschlüssen in Telekommunikationsplatinen, die der Impedanz der Platine und der Antenne entsprechen? Ich meine, wirkt sich das Weglassen der USB-Anschlüsse aus der Schaltung auf den Betrieb der USB-Kommunikation aus?

Wenn der Speicher mir Recht gibt, verwendet USB, wie die meisten seriellen Hochgeschwindigkeits-Differenzialbusse, eine Differenzimpedanz von 100 Ohm. Bei kurzen Läufen ist das vielleicht nicht so wichtig, besonders nicht, wenn Sie mit einer langsamen Version arbeiten (die Dinge werden viel komplexer, wenn Sie zu USB3 und so kommen, wo Dinge wie Längenanpassung sehr wichtig werden).
Der Raspberry Pi ist ein gängiges Gerät, das eine ähnliche Situation hat. Sein Ethernet-Port ist über seinen USB-Hub mit dem SoC verbunden, alles auf derselben Platine.
Siehe Tabelle 7-12 (Kabeleigenschaften) in der Spezifikation und im Inter-Chip USB Supplement to the USB 2.0 Specification .

Antworten (4)

USB 1 und 2 A/B-Anschlüsse sind nur Anschlüsse, in ihnen steckt keine besondere Magie. USB 3 A/B-Anschlüsse sind auch nur Anschlüsse, aber sie erreichen Geschwindigkeiten, bei denen die Kontrolle von Parasiten im Anschluss, die Aufrechterhaltung der charakteristischen Impedanz usw. wirklich wichtig werden.

Solange Sie die richtigen Impedanzen beibehalten, die direkt von Chip zu Chip gehen, sollte es in Ordnung sein. Auch wenn Sie dies nicht tun, wird eine "Full Speed" -Schnittstelle mit ziemlicher Sicherheit funktionieren.

USB-C-Anschlüsse können eine gewisse Intelligenz enthalten, aber leider hängt dies hauptsächlich mit dem Zeug zur "Stromversorgung" zusammen.

Ja, es ist möglich, einen Host und ein Gerät auf derselben Leiterplatte anzuschließen, indem einfach ein Differenzialpaar mit der entsprechenden Impedanz zwischen ihnen verlegt wird. In der Praxis können Sie mit einer gewissen Fehlanpassung davonkommen, sodass Sie dies problemlos auf FR4 tun können, auch ohne dass eine spezielle Herstellung mit kontrollierter Impedanz erforderlich ist. Viele Embedded- oder Laptop-Computer tun dies.

Ich hatte noch nie Probleme mit USB 2.0 High Speed ​​(480 Mbit/s), nur indem ich mich an grundlegende High-Speed-Designpraktiken hielt; USB 3.0 würde mehr Sorgfalt und wahrscheinlich Simulation erfordern.

Das Verbinden von USB-Geräten mit Host-Mikroprozessoren auf derselben Platine ohne Zwischenstecker wird als „Embedded USB“ bezeichnet. Viele Laptops und Desktops integrieren USB-Geräte an Bord. In gewissem Sinne kann die Signalintegrität sogar noch besser sein, wenn man davon ausgeht, dass HS-Differentialspuren mit einer Impedanz von 90 Ohm implementiert sind, da jeder Anschluss immer eine Abweichung von der PCB-Spur darstellt und somit eine Impedanzfehlanpassung eingeführt wird.

Es gibt jedoch eine Einschränkung, die häufig übersehen wird. Das normale USB-Verbindungsprotokoll umfasst die VBUS-Erkennung auf der Geräteseite der Verbindung, wodurch das Gerät aufgefordert wird, das „Verbindungsprotokoll“ zu starten, indem es die Leitung D+ (oder D- im Falle eines LS-Geräts) hochzieht, NACHDEM der VBUS empfangen wurde (nach dem Einstecken des Kabels). Das Problem besteht darin, dass im eingebetteten Design davon ausgegangen wird, dass der VBUS (und die Stromversorgung des Geräts) immer eingeschaltet sind, wodurch USB-Geräte aufgefordert werden, das Verbindungsereignis (Pull-up) zu bestätigen, BEVOR der Host eingeschaltet, hochgefahren, der USB-Controller konfiguriert und die USB-Software installiert wird Der Stack wird geladen, wodurch der Host zur Kommunikation bereit ist. In vielen älteren Host-Hardware kann diese vorzeitige Bestätigung des Verbindungsstatus die normale Host-Setup-Funktionalität stören, und wahrscheinlich sind einige zusätzliche Software-Workarounds erforderlich. Es könnte funktionieren,

Wenn ein Designer keine Überraschungen beim Einschalten möchte, sollte der Host eine zusätzliche GPIO-Leitung (analog zu VBUS) implementieren, die eingebettete USB-Geräte im nicht angeschlossenen Zustand hält, bis der Host hochfährt und bereit ist, über USB zu kommunizieren. Oder verwenden Sie diesen zusätzlichen GPIO, um eingebettete USB-Chips erst dann einzuschalten, wenn der Host-USB-Stack bereit ist.

Ich denke, dass ein gutes Kabel und die richtigen Anschlüsse in den meisten Fällen eine Frage der Minimierung von Verlust und Signalverschlechterung sind, wenn Ihre Anwendung erfordert, dass Sie ein Signal über eine Entfernung übertragen.

Kürzer ist normalerweise besser.

Ich bezweifle stark, dass das Kabel eine wesentliche Funktion erfüllt, die über die Übertragung der Signale von Punkt A nach Punkt B mit möglichst geringer Beeinträchtigung hinausgeht. Abgesehen davon stelle ich fest, dass zahlreiche Kommentare Bedenken hinsichtlich USB 3.0 äußern, daher gehe ich davon aus, dass es andere Überlegungen gibt, wenn dies implementiert wird.