Forum: Mikrocontroller und Digitale Elektronik USB-Typ des Hosts erkennen


von usb (Gast)


Lesenswert?

Hallo,

ich baue gerade eine Schaltung, die eine USB-C 2.0 Buchse (GND, D+, D-, 
CC) (https://www.mouser.de/datasheet/2/837/USB4085-2888250.pdf) 
vorgesehen hat, über welche ein VCP bereitgestellt wird um mit dem 
Mikrocontroller auf der Platine zu kommunizieren. Ein anderer Teil der 
Schaltung kann u.U. eine Stromaufnahme von > 500mA haben, was für 
gewöhnlich an einem USB 3.0 Port kein Problem ist, bei einem alten USB 1 
oder USB 2 Port jedoch schon. Gibt es eine Möglichkeit vom Device aus zu 
überprüfen, ob der Port genug Strom zur Verfügung stellen kann? Wenn es 
sich beim Host um eine USB-C Source handelt, ließe sich das eventuell 
mit dem richtigen IC oder Mikrocontroller über die CC Pins lösen, denke 
ich?

Gruß

von Arno (Gast)


Lesenswert?

Ja, du erstellst zwei Sätze Device-Deskriptoren. Einen (bevorzugten) mit 
900mA, einen mit 500mA (oder was auch immer die Schaltung braucht, wenn 
der "andere Teil" nicht eingeschaltet wird).

Wenn das Gerät dann an einem Port hängt, der 900mA ausgeben kann, wird 
es schon bei der ersten Enumeration akzeptiert. Wenn nicht, wird die 
erste Enumeration verweigert und du darfst es mit dem zweiten Satz 
Device-Deskriptoren nochmal versuchen.

Und wenn dein Gerät mit max. 100mA noch etwas sinnvolles anfangen kann, 
auch noch einen dritten Satz, falls dein Gerät mal an einem Bus-Powered 
Hub angeschlossen wird. Wenn nicht, kannst du dir den dritten natürlich 
sparen und bei fehlgeschlagener 500mA-Enumeration einfach ganz 
abschalten.

So war das jedenfalls, als ich das letzte Mal ernsthaft auf dem Niveau 
USB gemacht habe. Die Geräte von damals sind inzwischen fast volljährig, 
kann durchaus sein, dass sich der Ablauf mit USB 3 wesentlich geändert 
hat. Power Delivery ist jedenfalls hinzugekommen. Aber wenn du ein 
USB-A- zu USB-C-Kabel hast, wird Power Delivery dich ja nicht viel 
weiterbringen...

Das schöne an USB: Die Specs sind komplett offen: 
https://usb.org/documents
Das hässliche an USB: Sie sind reichlich komplex.

MfG, Arno

von Jim M. (turboj)


Lesenswert?

usb schrieb:
> Ein anderer Teil der
> Schaltung kann u.U. eine Stromaufnahme von > 500mA

Wieviel mehr? Die USB 2.0 HDDs hatten gerne mal >1A Anlaufstrom. Ging 
auch - meistens. War natürlich nie 100%ig konform zur spec.

Bei USB-C (und 5V) geben die Pullups den möglichen Strom vor, d.h. man 
müsste die nur auswerten.

Hat den dicken Perdefuß das man dann vom USB Kabel abhängt wenn noch 
USB-A verwendet wird. Denn da sind die Pullups im Kabel drin, und es 
gibt AFAIK 500mA, 1,5A und 3A Kabel die USB-A auf USB-C konvertieren. 
Letztere sind extrem muting in der Verwendung - 3A kann schon mal 
rauchen.

von Gerd E. (robberknight)


Lesenswert?

Was Du machen könntest wäre den Spannungsabfall im Kabel bzw. Netzteil 
zu messen.

Dafür müsstest Du aber die Stromaufnahme in Stufen schrittweise erhöhen 
können und jeweils die Spannung dabei messen. Wenn die Spannung zu 
niedrig wird dann war es zu viel Strom. Du solltest das mit Stufen 
machen, denn wenn Du gleich den Maximalstrom ziehst, kann es gut 
passieren daß das Netzteil in den Foldback geht und Dein Gerät dann 
einen Brownout-Reset macht.

von 123 (Gast)


Lesenswert?

Als USB 2.0 gerät sind meines wissens nur 500mA möglich. der host wird 
dich da nur usb 2.0 angeschlossen ist auch nur als usb 2 gerät erkennen 
und dir nur die 500mA freigeben, ...

Aber, da du usb C hast, ... sollten wenn die gegenstelle auch eine USB C 
ist, bis zu 5A möglich sein, (je nach kabel und je nach quelle, ... für 
5 A sind elektronisch markierte kabel notwendig) aber deutlich mehr als 
die 500mA. dafür sind die CC leitungen da, ... und ggf auch mehr als die 
5V (geht hoch bis 20V). Irgend wie müssen über ein USB C calbe ja die 
100Watt ja ausgehandelt werden können.

von Dieter Fauth (Gast)


Lesenswert?

Hi,
es gibt specs. bei usb.org.
Alles andere ist nicht garantiert.
PS: Ich entwickle USB-Geräte seit 1996.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.