Forum: Mikrocontroller und Digitale Elektronik USB -Zustand bei gezogenem Kabel?


von Mike (Gast)


Lesenswert?

Hallo,

ich verwende einen MCP2200 um meiner Schaltung zu eine 
Kommunikationsmöglichkeit mit einem externen PC zu verhelfen. Schaltung 
und MCP sollen über eine Batterie mit 3.3V versorgt werden. Da der MCP 
im aktiven Zustand aber >10mA verbraucht, soll er im Normalfall (kein PC 
angeschlossen) in den Suspend-Modus geschickt werden. Erst wenn der 
externe PC angeschlossen wird, soll sich der MCP aktivieren. Laut 
Spezifikation geht der MCP in den Suspend, wenn der Bus sich mehr als 
3ms im Idle-Zustand befindet. Ich weiss aber nicht, ob ein abgezogenes 
Kabel Idle bedeutet. Einerseits hat der MCP als Fullspeed-USB-Device 
einen Pullup an D+. Für einen stabilen Idle-Zustand müsste aber 
gleichzeitig D- auf Low-Pegel sein. Ich kann aus dem Datenblatt nicht 
erkennen, ob der hierzu notwendige Pulldown-Widerstand im MCP2200 
bereits integriert ist.

Macht es Sinn, dem D_ einen schwachen Pulldown (~100kOhm) zu spendieren?

Eine Alternative wäre, den MCP über den Bus mit 3.3V zu versorgen, was 
dann aber einen separaten Spannungregler erfordert.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Der Suspend-Zustand wird üblicherweise nicht anhand der Idle-Pegel 
erkannt, sondern auf Grund der fehlenden SOF-Pakete. Zusätzlich sollte 
eine Überwachung von VBUS erfolgen, denn das Gerät darf den 
Pull-Up-Widerstand eigentlich nur bei vorhandener Speisung aktivieren. 
Das vermeidet zusätzlich einen Haufen Probleme, wenn nämlich das Host 
tatsächlich schneller sein sollte als das Gerät und versucht, bei dem 
nicht betriebsbereiten Gerät eine Enumeration durchzuführen. Scheitert 
diese nämlich, wird das unter Windows mit einem gelben Warndreieck 
belohnt, und es werden (bis zum nächsten Busreset) keine weiteren 
Enumerationsversuche unternommen.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mike schrieb:
> Eine Alternative wäre, den MCP über den Bus mit 3.3V zu versorgen, was
> dann aber einen separaten Spannungregler erfordert.

Wozu dient der separate Spannungsregler? Der MCP2200 kann direkt mit den 
5V des USB verbunden werden. Für die Anpassung des Spannungspegels auf 
der RxD-Leitung zu Deinem mit 3V betriebenen µC genügt ein 
Spannungsteiler, in der Gegenrichtung (TxD, µC sendet an MCP2200) ist 
keine Pegelanpassung erforderlich, weil der minimale Highpegel hier bei 
nur 2V liegt.

Insofern ist die "bus-powered"-Variante einfacher; Du musst allerdings 
darauf achten, bei fehlender USB-Versorgung die USB-Seriell-Bridge nicht 
vom µC aus mit irgendwelchen High-Pegeln zu versorgen. D.h. Du wirst die 
TxD-Leitung vom µC in diesem Fall deaktivieren müssen.

von Mike (Gast)


Lesenswert?

>Wozu dient der separate Spannungsregler? Der MCP2200 kann direkt mit den 5V >des 
USB verbunden werden.

Um eine Pegelwandelung der TX und RX - Signale zu vermeiden.

> Für die Anpassung des Spannungspegels ... in der Gegenrichtung (TxD, µC
> sendet an MCP2200) ist keine Pegelanpassung erforderlich, weil der
> minimale Highpegel hier bei nur 2V liegt.

Da bin ich mir nicht so sicher. Ist RX ein Eingang mit TTL oder 
CMOS-Pegeln? Im Datenblatt des MCP steht dazu nichts.

Da der MCP2200 wohl ein mit spezieller Firmware versehener PIC18F1XK50 
ist, habe ich dort mal im Datenblatt nachgeschaut. Hier ist RX eindeutig 
ein Schmitt-Trigger-Eingang mit VDD*0.8 als minimalem High-Pegel. Bei 
VDD=5V und 3.3V-Ausgängen kommt das nicht hin.

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.