Die Frage ist sicherlich nicht neu, aber ich habe keine zufriedenstellende Antwort bisher finden können: Es geht um die Stromversorgung über USB und zusätzlich extern für einen STM32F1 mit USB. Das Gerät benötigt im idle Modus < 200mW aber während es etwas tut, bis zu 4 Watt maximal. Nur eine externe Stromversorgung ist sicherlich sehr ungünstig, da dann nur D+, D- und GND verbunden wird und sofern keine Spannungsversorgung vorhanden ist, D+ und D- über die internen Schutzdioden geclampt werden? Eine Andere Möglichkeit wäre, die 5V des USB Ports für die Spannungsversorgung zu nutzen und das externe Netzteil ebenfalls. Beide über Dioden, sodass wenn vorhanden, das externe Netzteil mit einer Spannung > 5V übernimmt (vor dem BuckConv.). Dazu würde ich dann noch eine Netzteil-Erkennung einbauen, bevor das Gerät in den Betriebsmodus wechselt prüft es, ob das Netzteil vorhanden ist und sobald es ausgesteckt ist, schaltet es sofort aus. Die Zeit dazwischen sollte ein kleiner Kondensator überbrücken können. (So kann die Software den Benutzer freundlich auf die Notwendigkeit des Netzteils hinweisen und das ganze wäre fast DAU kompatibel ...) Leider kommen mir beide Lösungen etwas unprofessionell vor, daher würde ich gerne von euch ein paar Ratschläge haben. Es ist zwar nur eine Hobby Bastelei, aber wenn man schon etwas bastelt, dann doch sinnvollerweise auch vernünftig. Danke :)
Dazu gibt die Application Note AN4879. Sie bestätigt, dass der STM32 mit Spannung versorgt sein muss, bevor die Datenleitungen kontaktiert werden. Dort empfehlen sie einen 3,3V Spannungsregler zwischen USB-Buchse und STM32. Zusätzlich kann der STM32 optional von extern versorgt werden. Die meisten Spannungsregler (ich kann dazu den LF33 empfehlen) kommen damit problemlos klar. Dioden sind nicht nötig. Auf die Clamping Dioden solltest du dich besser nicht verlassen. Denn an den 5V toleranten Eingängen (DP und DM) darf kein positiver Strom "injected" werden. Negativer Strom ist bis 5mA erlaubt. Siehe "Absolute maximum ratings" im Datenblatt. Vor DP und DM gehört eigentlich immer eine externe Schaltung zum Schutz.
Erwin schrieb: > Nur eine externe Stromversorgung ist sicherlich sehr ungünstig, da dann > nur D+, D- und GND verbunden wird und sofern keine Spannungsversorgung > vorhanden ist, D+ und D- über die internen Schutzdioden geclampt werden? D+ und D- werden im Host auf GND gezogen, d.h. es macht nix wenn da keine Spannung anliegt. USB Stecker stellen mechanisch sicher das GND vor D+ u. D- verbunden wird.
Stefan ⛄ F. schrieb: > Vor DP und DM gehört eigentlich immer eine externe Schaltung zum Schutz. Da hätte ich jetzt z.B. den typischen USBLC6-2SC6 genommen, der würde dann an USB 5V und USB GND angeschlossen. Danach würde dann der MCU kommen. Ich frage mich aber, wie jetzt folgendes Szenario wäre: Die gesamte Platine wird nur von externen 12V versorgt, woraus dann die 3.3V generiert werden. 12V ist jetzt nicht angesteckt. Per USB ist lediglich GND, D+ und D- verbunden. Das Gerät wird nur per USB eingesteckt. Was passiert nun? Liegen die Leitungen im "Nullzustand" beide mit Pulldowns auf low und warten darauf, vom MCU mit dem 1.5K auf D+ hochgezogen zu werden zwecks Initialisierung? Dann wäre das ja ok, denn das passiert ja erst, wenn wir 3.3V zur Versorgung des MCUs hätten? Sorry für meine Fragen, aber USB ist für mich Neuland
Erwin schrieb: > Was passiert nun? Der STM32 könnte kaputt gehen. Sonst hätte in der AN nicht gestanden, dass der STM32 vorher mit Spannung versorgt werden muss.
Erwin schrieb: > Liegen die Leitungen im "Nullzustand" beide mit Pulldowns auf low und > warten darauf, vom MCU mit dem 1.5K auf D+ hochgezogen zu werden zwecks > Initialisierung? Dann wäre das ja ok, denn das passiert ja erst, wenn > wir 3.3V zur Versorgung des MCUs hätten? Wenn danach jemand im laufenden Betrieb das Netzteil des STM32 abschaltet, hast du an den beiden USB Pins des STM32 Spannungen außerhalb der Spezifikation.
Stefan ⛄ F. schrieb: > Wenn danach jemand im laufenden Betrieb das Netzteil des STM32 > abschaltet, hast du an den beiden USB Pins des STM32 Spannungen > außerhalb der Spezifikation. Das stimmt leider. Gibt es denn eine andere Möglichkeit, das Gerät extern zu bestromen und dennoch (korrekt) per USB zu verbinden? Ein (USB) Isolator erscheint mir etwas teuer dafür?
Erwin schrieb: > Das stimmt leider. Gibt es denn eine andere Möglichkeit, das Gerät > extern zu bestromen und dennoch (korrekt) per USB zu verbinden? Ja, wir ich oben schrieb mit einem Spannungsregler. Schau in die Application Note!
Ja, natürlich könnte ich vom USB 5V einfach 3.3V für den MCU generieren. Dann würde der erst ein mal funktionieren. Jetzt habe ich aber noch eine Menge an anderem Kram auf dem Board, welches auch 3.3V aber eben bis zu 4W benötigt. Das würde dann mein Problem auf diese Seite verschieben, wenn im Betrieb die 12V wegfallen, würden die SPI & I2C Chips plötzlich kein VCC mehr haben und an ihren Eingängen außerhalb der Spezifikationen betrieben werden? Zudem lese ich: • Self-powered applications: platforms providing their own power supply and acting as an upstream port on the cable insertion. Not allowed, under any condition, to draw any current from the USB interface. • Bus-powered applications: a platform supplied only through VBUS and acting as an upstream port. Entweder ganz oder gar nicht? (3.1.1. vs. 3.1.2.)
Erwin schrieb: > Ja, natürlich könnte ich vom USB 5V einfach 3.3V für den MCU generieren. > Dann würde der erst ein mal funktionieren. Jetzt habe ich aber noch eine > Menge an anderem Kram auf dem Board, welches auch 3.3V aber eben bis zu > 4W benötigt. Der muss ja nicht zwingend an den gleichen 3,3V hängen. Freilich musst du dir dann Gedanken darüber machen, wie du den µC vor zu viel Spannung von dieser Peripherie schützt. Dort ist es aber oft leichter als am USB Bus, wo strenge Anforderungen an Layout und Widerstände gelten. Oder du nimmst einen größeren STM32, der für USB einen separaten VDDUSB Pin hat.
Stefan ⛄ F. schrieb: > Oder du nimmst einen größeren STM32, der für USB einen separaten VDDUSB > Pin hat. Das wird glaube ich nicht einfacher: When the VDDUSB is connected to a separated power supply, it is independent from VDD or VDDA, but it must be the last supply to be provided and the first to be removed. Ich werde mir das noch mal in Ruhe überlegen, wie ich das jetzt anstellen werde. Vielen Dank aber für deine Hinweise :)
Erwin schrieb: > Gibt es denn eine andere Möglichkeit, das Gerät > extern zu bestromen und dennoch (korrekt) per USB zu verbinden? Es kommt darauf an, wofür USB benutzt wird. Wenn ein virtueller COM-Port ausreicht, nehme ich einen FT230XS und 2 Optokoppler. Der FT230XS (und nur der) wird Bus Powered betrieben, die eigentliche Schaltung nur mit dem externen Netzteil. Das funktioniert absolut korrekt und sehr zuverlässig, egal, in welcher Reihenfolge ein- und ausgesteckt wird. Bonus: keine Masseschleife zwischen Maschine und PC-Schutzleiter.
Bauform B. schrieb: > Wenn ein virtueller COM-Port ausreicht, Zwei doofe, ein Gedanke. Ich wollte gerade darauf hinweisen, dass der Silabs CP2102 an seinen UART Port bis zu 5V verträgt auch wenn er selbst noch gar keine Spannungsversorgung hat.
Nein, er wird als HID Gerät verwendet. Bisher habe ich es allerdings ganz genauso gelöst, mit einem FTDI und einem Silabs Isolator ;-)
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.