mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB: elektrische Verschaltung (bidirektional)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: woody (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

die angehängte Abbildung stammt aus der offiziellen USB 2.0 
Spezifikation.

USB-Endgerät (rechts) und PC (links) sind
demnach über die beiden Datenleitungen D+ und D- miteinander verbunden.

So weit so gut, jedoch:
USB ist bekanntlich bidirektional. D.h. beide Transceiver könnten
theoretisch die Datenleitung D+ gleichzeitig auf HIGH setzen.
(z.B. bei einem Data K state wird D- auf Masse gezogen und D+ auf HIGH,
falls ich das richtig verstanden habe)

Aber dann würde es ja knallen...?
Was mache ich falsch?

Gruß
woody

Autor: requirements engineer (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
woody schrieb:
> Aber dann würde es ja knallen...?

Das Protokoll regelt normalerweise, wer wann die Leitung belegt. Die 
max. 480Mbit/s gelten nur unidirektional!

Außerdem: Beide Treiber haben Strombegrenzung. Entweder durch 
Fehlererkennung auf Protokollebene oder durch HW-Maßnahmen wird 
abgeschaltet, neu versucht usw.

Autor: Jim M. (turboj)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
woody schrieb:
> Aber dann würde es ja knallen...?
> Was mache ich falsch?

Die Annahme das beide Seiten den Transmitter gleichzeitig einschalten 
ist falsch.

Das Device darf seinen Transmitter genau dann einschalten, wenn es ein 
entsprechendes Token (oder Datenpaket) vom Host erhalten hat.

Autor: woody (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Jim M. schrieb:
> Das Device darf seinen Transmitter genau dann einschalten, wenn es ein
> entsprechendes Token (oder Datenpaket) vom Host erhalten hat.

Ganz genau, darauf möchte ich hinaus:
Meines Erachtens wäre es grob fahrlässig, wenn das Ganze nur über die 
Software abgesichert wäre. Will sagen, ein einziger Fehler im 
Programmcode könnte dazu führen, dass zwei Spannungsquellen parallel 
geschalten werden.

requirements engineer schrieb:
> Außerdem: Beide Treiber haben Strombegrenzung. Entweder durch
> Fehlererkennung auf Protokollebene oder durch HW-Maßnahmen wird
> abgeschaltet, neu versucht usw.

Meine Sorge ist die:
Angenommen, ich baue mir ein eigenes USB Device, welches mir +3.6 V an 
D+ anlegt. Der PC hingegen besitzt im Worst Case ein billig USB-Chipset 
aus China :), welches keinerlei HW-Absicherung besitzt und wir nehmen 
einfach mal an, der zugehörige USB Treiber wäre auch murks hihi. In 
diesem Fall hätte mein USB Device keine Chance zu detektieren, ob der PC 
das Potential später auch auf +3.6V zieht, da ich keinen Unterschied 
anhand der Spannung feststellen könnte. D.h. guter Stichpunkt - das 
ganze muss wohl über eine Strombegrenzung passieren. Eine solche 
Strombegrenzung hat aber möglicherweise Auswirkungen auf meine 
Schaltgeschwindigkeit?

Mich würde zudem stark interessieren, ob USB Devices in der Praxis 
tatsächlich eine HW-Strombegrenzung implementieren.

Herzlichen Dank übrigens für Eure schnellen Antworten!! Das ist super.

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
woody schrieb:
> Meines Erachtens wäre es grob fahrlässig, wenn das Ganze nur über die
> Software abgesichert wäre

Das ist aber ziemlich die einzige Möglichkeit. Andere Schnelle Busse wie 
SD-bus machen das genauso. Systeme mit OpenDrain+PullUp wie zB. CAN oder 
I2C die Hardware seitig eigensicher sind, sind halt lahm.

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
woody schrieb:
> Angenommen, ich baue mir ein eigenes USB Device, welches mir +3.6 V an
> D+ anlegt. Der PC hingegen besitzt im Worst Case ein billig USB-Chipset
> aus China :), welches keinerlei HW-Absicherung besitzt und wir nehmen
> einfach mal an, der zugehörige USB Treiber wäre auch murks hihi.

Zuviele flsache Annahmen, die nichtmal für USB 1.1 funktionieren. Und 
heutzutage ist fast alles USB 2.0 (oder besser), insbesondere im PC.

Außerdem sind im USB BUS immer Serienwiderstände zur Terminierung mit 
drin. Spätestens die verhindern schlimmeres.

Übrigens sind die USB Timings spätestens bei Full Speed so beinhart, das 
man das in Hardware abhandeln muss. Was Software Fehler praktisch 
ausschliesst.

Autor: S. R. (svenska)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
woody schrieb:
> Mich würde zudem stark interessieren, ob USB Devices in der Praxis
> tatsächlich eine HW-Strombegrenzung implementieren.

Nein. Ebensowenig wie viele Chipsätze, zumindest aus früherer Zeit. Im 
Zweifelsfall kommen dann eben mal 5A aus der USB-Buchse, es macht kurz 
"puff" und man hat mindestens einen USB-Anschluss weniger.

Autor: soul e. (souleye)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:

> Nein. Ebensowenig wie viele Chipsätze, zumindest aus früherer Zeit. Im
> Zweifelsfall kommen dann eben mal 5A aus der USB-Buchse, es macht kurz
> "puff" und man hat mindestens einen USB-Anschluss weniger.

Welcher USB-Chipsatz kann denn 5 A treiben? Der Kurzschlußstrom von D+ 
oder D- nach Masse liegt bei wenigen mA. Eine kurzgeschlossene 
TxD-Leitung der RS-232 schafft bis 80 mA.

Autor: S. R. (svenska)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soul e. schrieb:
> Welcher USB-Chipsatz kann denn 5 A treiben?

Nach Spezifikation ziemlich sicher keiner.
Außerhalb dessen bis zur Zerstörung, würde ich nicht ausschließen 
wollen. Testen tu ich es definitiv nicht.

Außerdem bezog ich mich auf die Versorgungsleitungen, nicht die 
Datenleitungen. Da ist das nachgewiesen.

Autor: soul e. (souleye)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Von den Versorgungsleitungen war bisher nicht die Rede. Der TO fragte 
was passiert wenn Host und Device gleichzeitig senden und somit auf den 
Datenleitungen zwei Treiber gegeneinander arbeiten. ONsemi schreibt in 
http://www.onsemi.com/pub/Collateral/AN-6022.pdf.pdf
"A USB transceiver is required to withstand a continuous 
short circuit of D+ and/or D- to VBUS, GND, other data 
line, or the cable shield at the connector, for a minimum of 
24 hours without degradation. It is recommended that 
transceivers be designed to withstand such short-circuits 
indefinitely. The device must not be damaged under the 
short-circuit condition when transmitting 50% of the time 
and receiving 50% of the time (in all supported speeds).  
The transmit phase consists of a symmetrical signal that 
toggles between drive HIGH and drive LOW. This 
requirement must be met for max value of VBUS (5.25 V)"

Wo die das herhaben steht allerdings nicht dabei...

: Bearbeitet durch User
Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> soul e. schrieb:
>> Welcher USB-Chipsatz kann denn 5 A treiben?
>
> Nach Spezifikation ziemlich sicher keiner.
> Außerhalb dessen bis zur Zerstörung, würde ich nicht ausschließen
> wollen. Testen tu ich es definitiv nicht.
> Außerdem bezog ich mich auf die Versorgungsleitungen, nicht die
> Datenleitungen. Da ist das nachgewiesen.

Aber es ging ja ganz ausdrücklich um die Datenleitungen, nicht um die 
Versorgung. Bei der treibt der USB-Chip im Zweifelsfall gar nix, sondern 
der Ausgang ist einfach an die 5V des Rechners mit angeschlossen, 
vielleicht noch über einen Schalttransistor. Beim USB-Hub hängen die 
Ports mitunter auch einfach direkt an den 5V vom Netzteil. Dann kommt da 
eben soviel raus, wie das Netzteil liefert, oder bis die Leiterbahnen 
sich in magischen Rauch verwandeln.

Autor: S. R. (svenska)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Aber es ging ja ganz ausdrücklich um die Datenleitungen,
> nicht um die Versorgung.

Tschuldigung. Aber auch da würde ich genau dasselbe erwarten: Da kommt 
dann so viel raus (bzw. geht so viel rein), bis Chip oder Leiterbahn 
sich auflösen. Vielleicht keine 5A, aber der Effekt ist derselbe.

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Aber es ging ja ganz ausdrücklich um die Datenleitungen, nicht um die
> Versorgung. Bei der treibt der USB-Chip im Zweifelsfall gar nix, sondern
> der Ausgang ist einfach an die 5V des Rechners mit angeschlossen

Genauso ist es bei den meisten PC-Mainboards, wobei in der Regel eine 
Polyfuse in der +5V Leitung sitzt. Damit kriegt man zwar trotzdem noch 
einige Ampere gezogen, aber wenigstens geht das Netzteil nicht in die 
Knie (was den PC abstürzen ließe).

Bei mobilen Geräten sieht es anders aus, die haben oft 
USB-(Power)Switches in der 5V Leitung, die typischerweise eine 
eingebaute Strombegrenzung haben. Die gibts halt erst sein einigen 
Jahren.

Autor: frankman (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
--> Woody: es handelt sich nicht um SPANNUNGSQUELLEN, sondern um 
Stromquellen!
Außerdem werden D+ und D- weder nach GND und VCC geschatet. Es handelt 
sich viel mehr um ein LVDS Signal--> Siehe hier: 
https://de.wikipedia.org/wiki/Low_Voltage_Differential_Signaling

Der Signalhub beträgt nur wenige Millivolt und liegt im Mittel bei der 
halben Betriebsspannung.

Selbst wenn bei Transmitter - irrtümlich - beide gleichzeitig Senden, so 
passiert zunächst überhaupt nichts. Die Spannung auf den D+ oder D- 
Leitungen würde dann halt statt 350mV vielleicht 700mV weit auseinander 
liegen.

Die Pullup und Pulldownwiderstände in Deinem Bild sind auch nicht 
maßgeblich an der Signalübertragung beteiligt, sondern dienen unter 
anderem dazu, zu erkennen, ob ein Gerät in eine USB Buchse gesteckt 
worden ist. etc.

Autor: stefan us (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Signalhub beträgt nur wenige Millivolt und liegt
> im Mittel bei der halben Betriebsspannung.

Nein.

Bei Low- und Full-Speed:
Output Low = 0..0,3V
Output High = 2,8..3,6V

Bei High-Speed:
Output Low = -0,01..+0,01V
Output High = +0,36..+0,44V

Autor: S. R. (svenska)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
frankman schrieb:
> Außerdem werden D+ und D- weder nach GND und VCC geschatet. Es handelt
> sich viel mehr um ein LVDS Signal

Auch das ist nicht unbedingt korrekt, da bestimmte Signalzustände 
gleiche Pegel erwarten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.