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.
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
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.