USB-Verpolungsschutz - MOSFET

Ich denke an einen relativ billigen und einfachen Schutz gegen USB-Verpolung/Verpolung. Im Moment denke ich über P-Kanal-MOSFET nach, wobei der Drain zur USB-Buchse gerichtet ist. Ich habe gehört, dass TVS-Dioden neben dem ESD-Schutz auch eine Verpolung verhindern können, aber ich könnte sie nicht genau auswählen. Die Pins D+ und D- sind über Widerstände mit dem STM-Mikrocontroller verbunden.

Da es sich um einen MOSFET vom Typ P handelt, bewirkt das niedrige Gate, dass der Transistor vom Drain zur Source leitet. Ich sage voraus, dass das MOSFET-Gate hoch ist und der MOSFET abschaltet, wenn der USB-Stecker umgekehrt eingesteckt wird, wodurch eine Beschädigung der Empfangsschaltung verhindert wird.

Aber das sind nur meine bescheidenen theoretischen Überlegungen, und ich möchte fragen, ob ich hier nicht einen logischen Fehler gemacht habe oder ob aus praktischer Sicht etwas nicht in Ordnung ist.

Geben Sie hier die Bildbeschreibung ein

Das wird gut funktionieren. In der Praxis wird der Verpolungsschutz durch den Stecker selbst gewährleistet (dh Sie können ihn nicht falsch einstecken). Wenn Sie Ihr Gerät nur mit kommerziellen Produkten (dh nicht mit Bastlerteilen) verwenden, würde ich mir keine Gedanken über den Verpolungsschutz machen. Habe es noch nie in freier Wildbahn gesehen, auch mit den billigen Kabeln.
Stimmen Sie zu - Wenn jemand kein eigenes USB-Kabel herstellt, können Sie sehr sicher sein, dass VCC VCC und GND GND ist. 2A-Sicherung ist möglicherweise auch etwas überflüssig, da USB-Anschlüsse intern auf etwa diesen Wert (oder viel weniger) strombegrenzt sind.

Antworten (1)

Es sieht so aus, als ob der FET vor Verpolung schützt, aber es wird nicht benötigt, da ein USB-Kabel keine falsche Polarität haben kann.

Ich möchte auch darauf hinweisen, dass das Binden des D + -Pins über einen Widerstand direkt an 3,3 V der MCU nicht ermöglicht, zu steuern, wann sie zum Aufzählen bereit ist. Je nachdem, was das MCU-Programm tut, kann es möglicherweise nicht aufzählen, wenn dies nicht der Fall ist sofort bereit mit dem USB-Peripheriegerät beim Booten.

Eine andere Sache ist, dass Sie durch Erden des ID-Pins signalisieren, dass dieses Gerät ein OTG-Master und kein USB-Gerät ist, sodass das nicht funktioniert.

Außerdem ist die Steckerabschirmung direkt mit Masse verbunden, was möglicherweise auch nicht das ist, was Sie wollen.

Ob Sie es glauben oder nicht, aber ich hatte eine Erfahrung mit werksseitig verwechselten Drähten im USB-Kabel :) Ich versuche, ein wenig über ID- und Schirmverbindung zu lesen, aber ich verstehe das D + -Verbindungsproblem noch nicht. Ist es ein Spannungswert von 3,3 V oder sollte nur D + ohne diese Verbindung belassen werden?
Das Problem ist die permanente Verbindung zu 3,3 V. Selbst wenn sich die MCU im Reset- oder Boot-Zustand befindet oder anderweitig noch nicht für die Aufzählung bereit ist, signalisiert der Widerstand dem PC, dass das Gerät für die Aufzählung bereit ist. Der PC kann feststellen, dass die Aufzählung fehlschlägt, und die Kommunikation mit dem Gerät beenden. Es besteht auch die Möglichkeit, dass sich der Pull-up-Widerstand in der MCU befindet, sodass er möglicherweise nicht erforderlich ist.
Hmm, ich verwende STM32F103C8 (Datenblatt sagt: "Um mit der elektrischen Spezifikation von USB 2.0 Full-Speed ​​kompatibel zu sein, sollte der USBDP (D +) -Pin mit einem 1,5-kΩ-Widerstand auf einen Spannungsbereich von 3,0 bis 3,6 V hochgezogen werden"). Ich denke, du meinst diese Variante mit Ansteuerung über einen Bipolartransistor, der von einem Mikrocontroller am Ende der Basis angesteuert wird. Ehrlich gesagt habe ich z. B. in Bluepill nicht gesehen, dass es eine solche Lösung gibt (es gab auch nur einen fest angeschlossenen Widerstand). Wenn die Klimmzugsteuerung auf diese Weise der beste Weg ist, würden Sie mir empfehlen, wo ich nachlesen kann, wie man sie richtig programmiert?
Wenn Sie bei STM32F103 (und vielleicht auch STM32F303) einen permanenten Pull-up auf D + haben, können Sie eine Trennung simulieren, indem Sie PA12 in den Ausgangsmodus schalten und 0 ausgeben. Um USB erneut anzuschließen, schalten Sie PA12 in den Eingangsmodus. Ihr USB-Stack bietet möglicherweise eine Möglichkeit, Ihre eigenen Funktionen oder Makros für diesen Zweck bereitzustellen – z. B. können Sie für ChibiOS usb_lld_connect_bus()und usb_lld_disconnect_bus()in ersetzen board.h.