Ich entwerfe ein Gerät um den STM32L476. Mein Gerät ist hauptsächlich batteriebetrieben, verfügt jedoch über einen USB-Anschluss, den ich nach dem Anschließen 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, ohne dass Batterien vorhanden sind.
Ich möchte erkennen können, wann der USB-Anschluss angeschlossen ist, daher verwende ich PA9 als OTF_FS_VBUS.
Die gute Nachricht : Das Datenblatt besagt, dass der PA9-Pin 5 V tolerant ist.
Die schlechte Nachricht : 5V-tolerante Pins scheinen tatsächlich nur dann 5V-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.
In meinem Fall, wenn keine Batterien vorhanden sind und der Benutzer den USB-Anschluss anschließt, gibt es eine Zeit vor dem Start des Reglers, in der die Spannung an PA9 5 V beträgt, während an den CPU-Versorgungsstiften überhaupt keine Stromversorgung anliegt.
Die noch schlechtere Nachricht : Strominjektion ist nicht erlaubt: Datenblatt §6.2, Tabelle 19, sagt:
Eingespritzter Strom an 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 an PA9 während des Startvorgangs des Reglers zu begrenzen. Jegliche Strommenge, die von VBUS zu PA9 fließen würde, bevor der VDD hochfährt, ist anscheinend verboten.
Was haben die anderen gemacht?
Ich habe mir zahlreiche Designs rund um STM32-Chips angesehen, ihre VBUS-Verbindungen, und sie scheinen sich nicht darum zu kümmern. Sie verbinden VBUS direkt mit PA9 oder schließlich über einen Widerstand, aber ich habe nie etwas Komplizierteres gesehen. Aber es handelt sich meistens um Entwicklungsboards, daher 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. Es wird davon ausgegangen, dass der Benutzer den USB-Anschluss nicht anschließt, bevor er die Karte mit Strom versorgt.
Was ist mein Plan?
Legen Sie dies zwischen VBUS am USB-Anschluss und dem PA9-Pin der MCU:
Ich habe wirklich versucht, es einfach zu halten. Grundsätzlich wird sichergestellt, dass VUSB_CPU (der PA9-Pin) niemals über VCPU + 4 V (Vz + Vbe) liegen kann, ohne Strom zu verbrauchen, wenn dies in Ordnung ist.
Meine Hauptfragen sind : Habe ich Recht mit meiner Analyse? Ist diese Schaltung eine gute Lösung? Sorge ich mich 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 der SRP VBUS-Impulse verwenden müsste, aber diese Methode ist anscheinend veraltet. Bin ich also gut, unabhängig von der Rolle (Gerät / Host) meines Geräts?
Ein letzter : Was ist der maximale Strom, der vom VDDUSB-Versorgungsstift gezogen wird? Das Datenblatt gibt für das USB-Peripheriegerät Folgendes 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).