5-V-Toleranz am VBUS-Erfassungseingang

Ich entwerfe ein Gerät um den STM32L476 herum. Mein Gerät ist hauptsächlich batteriebetrieben, hat aber einen USB-Anschluss, den ich, wenn er angeschlossen ist, als alternative Stromquelle (über einen 3,3-V-Regler) verwenden möchte, um den Batterieverbrauch zu begrenzen. Es ist auch möglich, dass der Benutzer den USB-Anschluss anschließt, während keine Batterien vorhanden sind.

Ich möchte erkennen können, wann der USB-Port angeschlossen ist, also verwende ich PA9 als OTF_FS_VBUS.

Die gute Nachricht : Das Datenblatt sagt, dass der PA9-Pin 5V-tolerant ist.

Die schlechte Nachricht : 5-V-tolerante Pins scheinen tatsächlich nur dann 5-V-tolerant zu sein, wenn Strom angelegt wird. Datenblatt §6.2 Tabelle 18 sagt:

Maximale Eingangsspannung an FT_xxx-Pins: min (VDD, VDDA, VDDIO2, VDDUSB, VLCD) +4,0 V

Wenn in meinem Fall keine Batterien vorhanden sind und der Benutzer den USB-Anschluss anschließt, gibt es eine Zeit, bevor der Regler startet, während der die Spannung an PA9 5 V beträgt, während an den CPU-Versorgungspins überhaupt kein Strom anliegt.

Die noch schlimmere Nachricht : Stromeinspeisung ist nicht erlaubt: Datenblatt §6.2, Tabelle 19, sagt:

Eingespeister Strom auf FT_xxx: -5/+0 (siehe Anmerkung 4)

Anmerkung 4: Eine positive Injektion wird durch VIN > VDDIOx induziert, während eine negative Injektion durch VIN < VSS induziert wird. IINJ(PIN) darf niemals überschritten werden.

Es scheint also, dass ich keinen einfachen Widerstand verwenden kann, um den Überstrom auf PA9 während des Starts des Reglers zu begrenzen. Jegliche Strommenge, die von VBUS zu PA9 fließen würde, bevor VDD hochfährt, ist offensichtlich verboten.

Was haben die anderen gemacht?

Ich habe mir zahlreiche Designs rund um STM32-Chips angesehen und mir ihre VBUS-Verbindungen angesehen, und es scheint sie nicht zu interessieren. Sie verbinden VBUS direkt mit PA9 oder eventuell über einen Widerstand, aber ich habe nie etwas Komplizierteres gesehen. Aber es sind meistens Entwicklungsplatinen, also denke ich, dass die Robustheit (ist das ein Wort?) nicht sehr wichtig ist. Und sie werden normalerweise nicht über den USB-Anschluss mit Strom versorgt und gehen sicherlich davon aus, dass der Benutzer den USB-Anschluss nicht anschließt, bevor er das Board mit Strom versorgt.

Was ist mein Plan?

Setzen Sie dies zwischen VBUS am USB-Port und dem PA9-Pin der MCU:

VBUS-Schutz

Ich habe wirklich versucht, es einfach zu halten. Grundsätzlich stellt es sicher, dass VUSB_CPU (das ist der PA9-Pin) niemals über VCPU + 4 V (Vz + Vbe) liegen kann, ohne Strom zu verbrauchen, wenn es in Ordnung ist.

Meine Hauptfragen sind : Liege ich mit meiner Analyse richtig? Ist diese Schaltung eine gute Lösung? Mache ich mir Sorgen um Dinge, die irrelevant sind? Warum scheint sich sonst niemand um dieses potenzielle Problem zu kümmern?

Zusätzliche Frage : Ich plane, USB OTG zu verwenden. Ist das ein Problem, wenn sich zwischen dem Stecker und dem PA9-Pin ein 4,7-kΩ-Widerstand befindet? Ich denke, es wäre, wenn ich während SRP VBUS-Pulsierung verwenden müsste, aber diese Methode ist anscheinend veraltet. Bin ich also unabhängig von der Rolle (Gerät/Host) meines Geräts gut?

Eine letzte : Was ist der maximale Strom, der vom VDDUSB-Versorgungsstift gezogen wird? Das Datenblatt gibt für das USB-Peripheriegerät an: 16,4 µA/MHz für die AHB-Taktdomäne + 23,2 µA/MHz für die unabhängige Taktdomäne, aber wir wissen nicht, woher es stammt (VDD oder VDDUSB).

Eine weitere PA9-Schutzoption wäre, einen Mos-Schalter zwischen +5 V und PA9 des USB zu setzen und dann das Gate des Schalters mit dem Ausgang des Reglers anzusteuern.
Warum nicht einen Widerstandsteiler verwenden? 430k und 630k ergeben 3,3 V am Pin.
Aber ein Widerstandsteiler wird das Injektionsproblem nicht lösen. Der Teiler injiziert 3,3 Volt in den Stift, bevor das Teil eingeschaltet ist.
Ich verstehe aus dem Datenblatt, dass der Stift 4 V standhalten kann, auch wenn er ausgeschaltet ist (ist das richtig?). Ein Widerstandsteiler wäre also eine gute Lösung, würde aber dauerhaft Strom ziehen. Ich habe vergessen zu erwähnen, dass ich diesbezüglich strenge Einschränkungen habe.

Antworten (2)

Gehen Sie mit dem Widerstandsteiler (430k/620k) auf Vbus - dies hält den Mikrocontroller in der Spezifikation, und die parasitäre Stromaufnahme ist kein Problem, da sie ausschließlich von Vbus und nicht von der Batterie bezogen wird (was was ist Ich nehme an, Sie möchten sparen).

Ich bin dumm ... Ich habe den Widerstandsteiler wegen des Stromverbrauchs ausgeschlossen, aber meine Argumentation war offensichtlich unvollständig. Tatsächlich ist es kein Problem, Strom vom vbus zu beziehen. Nun, warum tut das niemand in seinen Boards? ST selbst (Discovery Board), Olimex, ... ? Ich verstehe den Punkt immer noch nicht.

Die wahrscheinlich einfachste Methode: Verwenden Sie einen Widerstand mit hohem Wert (10-100 k), der einen größeren Kondensator (einige uF oder mehr) speist, sodass es einige Zeit dauert, bis die Spannung ansteigt. Ich würde mir keine Sorgen um den Bruchteil eines Volts machen baut sich über dem Kondensator auf, während der Regler hochfährt. Wenn das Mikro ESD-Schutz hat, können die Eingänge 5-10 V für einige zehn US-Dollar verarbeiten

Das klingt großartig ... aber nur, bis Sie darüber nachdenken, was passiert, wenn die Stromversorgung unterbrochen wird. Der Kondensator kann die Dinge tatsächlich noch schlimmer machen, als nur den Widerstand mit großem Wert zu haben - der Widerstand kann nicht viel Strom liefern, aber der geladene Kondensator kann es.
Könnten Sie es durch einen kleinen Zener fahren? In diesem Abschnitt des Datenblatts stand VDD + 4V, richtig? Wenn Sie einen Zener hätten, der die Schiene auf weniger als VDD + 4 V absenkt, wäre das in Ordnung?
Ich kann Ihren Zener-Vorschlag ohne Schaltplan nicht gut visualisieren. Aber wenn die Lösung die gleiche Komplexität wie meine hat (3 billige diskrete Komponenten), werde ich nicht viel gewinnen.
Grundsätzlich: Eingang-> Zener-> PA9, Zener in Reihe mit dem Eingang im Gegensatz zu einem Vorwiderstand, Zener fällt ein oder zwei Volt ab, sodass die Spannung an PA9 immer etwas niedriger ist. Wenn die Entwicklungsplatinen sie nur binden, ist es wahrscheinlich in Ordnung. Ich denke, die Warnungen gelten möglicherweise, nachdem die MCU eingeschaltet wurde. Sehen Sie nach, ob es einen Abschnitt zur Stromsequenzierung oder zum Startverhalten gibt.
Mmh. Laut Datenblatt kann der PA9-Pin unter diesen Bedingungen einen Strom zwischen 0 und 650 nA ziehen. Bei solch niedrigen Strömen ist der Zener überhaupt nicht genau, insbesondere die Niederspannungs-Zener. Es ist schwer vorherzusagen, wie viele Volt abfallen werden.
Ja, ein Zener wird im Nanoamp-Maßstab nicht sehr zuverlässig sein, das ist ein ziemlich kleiner Strom. Sieht so aus, als müssten Sie sich doch für Ihre ursprüngliche Lösung entscheiden. Die einzige andere Sache, die ich überprüfen würde, wäre zu sehen, was ST selbst auf ihren eigenen Entwicklungsboards macht. Es ist ziemlich unwahrscheinlich, dass Hersteller ein Entwicklungsboard herstellen, das sich selbst fritiert, da es ein schlechtes Licht auf sie und ihren Ruf wirft. Was ST also tut, ist wahrscheinlich in Ordnung, der Trick wird darin bestehen, einen tatsächlichen Schaltplan von ihnen zu finden.
@Tom das ist eigentlich mein Hauptproblem. Ich habe nachgesehen, sie tun nichts. PA9 ist direkt mit VBUS am USB-Anschluss (nicht einmal über einen Widerstand) auf ihrem Discovery-Demoboard verbunden. Wenn ich also nichts übersehen habe, steht dies im völligen Widerspruch zum Datenblatt. Mein Problem ist nicht wirklich die Schutzschaltung an sich. Ich denke, dass meine Lösung, auch wenn sie sicherlich verbessert werden kann, die Arbeit erledigen kann. Um ehrlich zu sein, mein Hauptproblem ist nur: ist das alles wirklich nötig?
Link zum STM32L476-Discovery-Board-Handbuch, einschließlich Schaltplänen hier .