USB-Typ-C-Design

Ich hätte gerne eine Antwort zur Implementierung eines USB-Typ-C-Geräts. Im Vergleich zu USB 2.0, wo der Pull-Up-Widerstand auf D+ benötigt wird, um die Kommunikationsgeschwindigkeit auszuwählen, habe ich die Spezifikation für Typ C nicht gefunden. Meine Frage: Wird der Pull-Up-Widerstand auf D+ (DP1 und DP2) benötigt? , oder kann es wie das Bild unten eingestellt werden?Geben Sie hier die Bildbeschreibung ein

Hier in diesem ST Application Note for USB Hardware ( https://www.st.com/resource/en/application_note/dm00296349-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf ), it Es ist möglich zu lesen, dass VBUS für Geräte mit eigener Stromversorgung an Pin PA9 obligatorisch ist (das ist mein Fall):

Geben Sie hier die Bildbeschreibung ein

Darüber hinaus heißt es im selben Dokument, dass der Chip bereits Pull-up-Widerstände hat:

Geben Sie hier die Bildbeschreibung ein

Im Bild unten wird gezeigt, dass eine VBUS-Referenz zum STM32F405 benötigt wird, um zu kennzeichnen, wenn das USB-Kabel angeschlossen ist.

Geben Sie hier die Bildbeschreibung ein

Schließlich auf dem Datenblatt ( https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32- bit-mcus-stmicroelectronics.pdf ), habe ich festgestellt, dass es tatsächlich erforderlich ist, den VBUS mit dem Chip zu verbinden, um die Kabelverbindung zu kennzeichnen:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Zusammenfassend wird für den STM32F405 der Pull-up-Widerstand auf D + NICHT benötigt, und außerdem wird ein VBUS-Widerstandsteiler benötigt, um dem STM32-Chip mitzuteilen, dass das USB-Kabel zum Host angeschlossen ist. Korrigieren Sie mich, wenn ich falsch liege!


[BEARBEITEN: ENDGÜLTIGE VERSION OHNE USB-CONTROLLER] Einige Punkte, danke an diejenigen, die versucht haben zu helfen:

  1. Das Ziel dieses Designs besteht darin, über USB-C als reines Peripheriegerät zu kommunizieren und außerdem den VBUS des Hosts zu verwenden, um das gesamte System mit unterschiedlichen VBUS-Spannungen zu versorgen. Berücksichtigen Sie also, dass VBUS von 0 V auf 20 V gehen kann, was später implementiert wird ein USB-Controller-Chip. Das System verfügt über eine eigene Stromversorgung, die in meinem Schaltplan VM genannt wird, sodass der VBUS das System je nach Wunsch des Benutzers mit Strom versorgen kann oder nicht.
  2. Z1-Zenerdiode (plus R48 und R49) hinzugefügt, um zu vermeiden, dass der VBUS höher als 3,3 V wird, vorausgesetzt, VBUS kann von 4 V bis 20 V variieren (ich plane, einen USB-C-Controller zu implementieren, damit er für die mögliche Variation einwandfrei funktioniert der VBUS-Spannung).
  3. T1 ist eine 20-V-Vrwm-TVS-Diode, um Transienten zu vermeiden. Gleich wie T2 und T3, beide 3,6-V-Vrwm-TVS-Dioden.
  4. Z2 und Z3 sind einfach Zenerdioden, um Probleme mit illegalen USB-Kabeln zu vermeiden, die falsche Werte für Rp haben. Unter der Annahme, dass die CC-Leitung im schlimmsten Fall bis zu 10,4 V erreichen kann, aber eine maximale Grenze von 6 V hat, schützen sowohl Z2 als auch Z3 die CC-Leitung.
  5. Das VBUS-Label geht an den PA9-Pin des STM32F405-Chips, um das Vorhandensein der VBUS-Spannung zu erfassen (der Pin erkennt eine Spannung von 0 bis 3,3, selbst wenn VBUS von 0 V auf 20 V geht).

Geben Sie hier die Bildbeschreibung ein


[BEARBEITEN: ENDGÜLTIGE VERSION MIT USB-CONTROLLER]

Hier poste ich eine Vollversion, die als reines Gerät mit eigener Stromversorgung funktioniert, wobei die VM die Stromversorgung des Systems ist, die entweder über VBUS ODER die Batterie versorgt werden kann. Das FUSB302B-Datenblatt zeigt eine typische Anwendungsschaltung, und der AN6102 zeigt seine Ergänzung, bei der eine 5-V-1-Zenerdiode hinzugefügt wird, um die CC-Leitungsspannung zu begrenzen, um zu verhindern, dass die Spannung über 6 V steigt – wenn illegale Kabel verwendet werden.

Geben Sie hier die Bildbeschreibung ein

Der Host muss einen geeigneten Pullup-Widerstand sehen, der jedoch im Allgemeinen intern vom USB-Chip im Gerät bereitgestellt wird.
Eigentlich ist dies in meinem Schaltplan ein Stecker, kein USB-Chip, Idk, wenn Sie diese Referenz gesehen haben. In diesem Fall funktioniert der Schaltplan bereits gut?
Ja, ich weiß. Aber vermutlich werden USB+/USB- irgendwann mit einem IC verbunden, oder nicht? Es ist dieser IC, der einen internen Pullup liefern kann oder nicht. Wenn Sie sich nicht sicher sind, fügen Sie den Widerstand am besten in den Schaltplan ein - Sie können ihn immer nicht bestücken.
@td127, ich habe den Beitrag aktualisiert, jetzt enthält er eine vollständige Beschreibung dessen, was ich gesucht habe. Ist das Ergebnis für Sie sinnvoll?
Gut gemacht! Während USB-C in der Lage ist, VBUS über 5 V zu erzeugen, ist dies ohne einen ausgehandelten Stromliefervertrag nicht möglich. Bei einer passiven Verbindung wie Ihrer sehen Sie auf VBUS- und CC-Leitungen nur maximal 5 V. ESD-Schutz ist sinnvoll, aber 5-V-Zener sollten nicht erforderlich sein. Ein Host stellt bis zu 1,5 A oder 3 A für VBUS bereit, wenn er diese 5,1-K-Pulldowns auf CC1/CC2 sieht. Andernfalls kann es zu schwachen USB2-Strompegeln zurückkehren. Idealerweise werden die 5.1K aus dem Stromkreis geschaltet, wenn Ihre eigene Stromversorgung ausgeschaltet ist, da der Host sonst ein Gerät erkennt, aber nicht mit ihm sprechen kann – das ist ein USB-IF-Konformitätsfehler. Viel Glück!
@td127, die 5v1-Zenerdiode ist ein Schutz, wenn der Benutzer ein illegales Kabel anwendet, wie in AN6102 beschrieben . Sie haben völlig Recht, es wird für einen einfachen USB-C-Anschluss nicht benötigt, obwohl 5k1-Widerstände an CC-Pins ausreichen. Ich habe gerade die Version mit dem USB-Controller-Chip hochgeladen, um die VBUS-Spannung ändern zu können. In diesem Fall werden, wie im Anwendungshinweis gezeigt, 5v1-Zenerdioden benötigt. (Eigentlich brauche ich mindestens 6 V auf der Platine, das kommt über VBUS, der bis zu 20 V liefern könnte!)
@td127, wenn du kannst, bitte ich dich, in der endgültigen Version nach Fehlern zu suchen. Danke für die Aufmerksamkeit und vielen Dank für das Teilen von Wissen!!
Nun, jetzt haben Sie einen Power Delivery Controller hinzugefügt, also haben Sie mein Fachwissen übertroffen. Aber ich denke, es bedeutet, dass VBUS möglicherweise viel höher werden kann, in diesem Fall möchten Sie R49 vielleicht größer machen, weil es VBUS-3.3 darüber sehen wird.
@td127, du hast Recht, es war ein Fehler! Ich habe dies für einen N-MOSFET geändert, um den VBUS_SENSE-Pin anzusteuern, der um 0,20 uA sinkt (analoger Pin zum Erkennen, wenn VBUS angeschlossen ist). Denken Sie daran, dass VBUS maximal von 5 V auf 20 V geht und VBUS_SENSE von 2,31 V auf 4,0 V gehen kann. Ist es gerade jetzt? Empfehlen Sie einen besseren SMD-N-Mosfet?
Ich war mit dem Zener einverstanden und machte R49 eher wie 3,3 K (und ich glaube nicht, dass Sie R48 überhaupt brauchen). Aber die größere Frage ist, wenn dies mit eigener Stromversorgung erfolgt, warum sollten Sie dann einen Stromvertrag mit dem Host aushandeln? Was Sie beschreiben, ist ein Dual-Power-System, das mit eigener oder Bus-Stromversorgung betrieben werden kann, was noch komplizierter ist. Ist das Ihre Absicht?
1. In dieser Konfiguration der Zenerdiode könnte der Widerstand keinen solchen Wert haben, er müsste einen niedrigen Wert haben, damit er mit der 5-V-VBUS-Spannung funktioniert. 2. Ohne den R48 auf dem neuen Design würde es immer 0 V auf dem VBUS_SENSE geben. 3.Ja, das meinte ich. Ich muss einen Stromvertrag mit dem Host aushandeln, um eine höhere Spannung als 6 V zu erhalten. Ich habe einen weiteren Chip an Bord, der unter 6 V nicht funktioniert, sodass er nur mit einem USB-Kabel funktioniert, dh ohne ein anderes Stromkabel als USB-C. –
Ich meinte, dass R48 durch einen Kurzschluss ersetzt werden könnte. Der Zener garantiert eine sichere Spannung, sodass R48 Ihnen keinen weiteren Vorteil verschafft. Auf jeden Fall viel Glück dabei - es ist ein bedeutendes Unterfangen!
Könntest du eigentlich das letzte Bild sehen? Ich denke, Sie haben wahrscheinlich nicht bemerkt, dass ich den Schaltplan mit einem N-MOSFET hochgeladen habe. Danke!
Es sieht so aus, als würde es funktionieren, wenn auch nicht mit großem Spielraum. VBUS_SENSE wird am Ende 2,5 V betragen, was etwas über der Mindestanforderung von 3,3 V * 0,7 = 2,3 V liegt. Aber Sie können es nicht viel höher als 2,5 V machen, da Vgs dann weniger als 2,5 V wird, was sich dem grauen Bereich für die FET-Schwelle nähert. Ich denke also, Sie haben optimale Werte für diesen Ansatz ausgewählt.
Das ist eine großartige Analyse, das dachte ich während des Projekts. Ich habe diese Werte berücksichtigt, und ja, es ist ein kleiner Spielraum!
Wenn der VBUS_SENSE nur zum Prozessoreingangspin geht, können Sie ihn einfach zu einem aktiven niedrigen Signal machen (niedrig = VBUS erkannt). Auf diese Weise würde ein einfacher NPN (Basis 10K an VBUS, Emitter geerdet, Kollektor an VBUS_SENSE mit Pullup) bei jeder VBUS-Spannung leicht 0 V auf 3,3 V schwingen. Aber der MOSFET ist auch cool.
Dies ist ein guter Ansatz, aber ich bin mir nicht sicher, ob das System mit einer umgekehrten Methode umgehen kann, um abzufangen, wenn VBUS verbunden ist. Wenn ja, wäre es tatsächlich eine bessere Lösung.
@ td127, ich plane, dies auf einem 4-Layer-Board zu entwickeln. Erste Schicht: USB und andere HF-Signale; Zweite Schicht: GND-Ebene; Dritte Schicht: Vcc-Signale (Vbat-, 5V- und 3v3-Ebenen); Vierte Schicht: Niederfrequenzsignale und Platzieren der restlichen SMD-Komponenten (auf beiden Seiten werden keine PTH-Komponenten verwendet). 1. Wenn Sie eine bessere Lösung haben, würde ich mich freuen, sie zu bekommen! 2. Es wird empfohlen, eine GND-Ebene unter den USB- und HF-Signalen zu haben. Schlagen Sie mir vor, sie in Ebenen aufzuteilen, damit sich jeder Rückweg nicht gegenseitig stört?
Dein Stapel ist gut. Sie führen keine Superspeed-Signale aus, daher ist das USB-Routing nicht besonders kritisch. Ich würde keine Grundplatten teilen - das verursacht oft mehr Probleme als es löst.
Wenn Sie, wie Sie sagten, eine solide GND-Ebene in Betracht ziehen und zwei Schichten für das Signalrouting haben - die oberste Schicht als HF- und USB-Signale und die untere Schicht für verbleibende Niederfrequenzsignale: Gibt es ein Problem beim Routing von Niederfrequenzsignalen und Anschlüssen direkt unter den Antennen? und HF-Spuren auf der unteren Schicht unter Berücksichtigung von GND- und VCC-Ebenen zwischen der oberen und der unteren Schicht?
Nein, es sollte dir gut gehen.
Gibt es ein Problem beim Platzieren von Durchkontaktierungen zum Routing der USB-Spuren?
Nein, manchmal ist das aufgrund der Stecker- und IC-Pinbelegung unvermeidlich. Nur nicht übertreiben. Sollte nicht mehr als 2 Durchkontaktierungen pro Spur setzen müssen.

Antworten (1)

USB2-Geschwindigkeit definierendes Pull-up ist eine Funktion eines Geräts selbst (das sich auf der rechten Seite Ihrer Schaltpläne befinden sollte). Typ-C an sich kümmert sich nicht um die USB-Kommunikation, es ist eine unabhängige Steckerspezifikation. Die beiden 5,1k-Pulldowns auf Ihren Schaltplänen definieren die Gerätefunktion, es ist ausreichend.

Ich bin verwirrt, also ist mein Schaltplan in Ordnung, um mit dem Host zu kommunizieren? Durch dieses Schema kann der Host die maximale Kommunikationsgeschwindigkeit definieren?
@EmanuelM, "shcematics is fine" für welche Funktion? Sie müssen wahrscheinlich mehr von dem definieren, was Sie machen. Bisher sehen Ihre Schaltpläne wie ein Typ-C-Anschluss für ein USB-Gerät aus. Wenn Sie etwas an Ihren Typ-C-Anschluss anschließen, identifiziert die Hostseite (wenn es sich um einen Host handelt) die Verbindung als „zum Gerät“ und schaltet VBUS ein. Danach ist es Sache des Geräteendes, einen beliebigen Pull zu signalisieren, und der Host erkennt die Verbindungsgeschwindigkeit.
Es ist ein Typ-C-Anschluss zu einem Gerät, nicht zu einem Host. Der Host wird an diesen Stecker angeschlossen, um mit dem stm32f405-Chip zu kommunizieren. Ich habe gestern gelesen, dass dieser Chip interne Pull-Ups hat. Der Zweifel ist jetzt: Muss ich den VBus an den PA9 anschließen, damit der Chip erkennt, dass das Host-Gerät angeschlossen ist?
@EmanuelM, ja, ich vermutete, dass dies ein Gerät ist. Ich möchte nicht wissen, was der PA9 ist, aber ja, sobald die CC-Pins eine ordnungsgemäße Verbindungserkennung bereitstellen, wird der Vbus aktiviert. Dann schaltet sich Ihr (nicht rechts gezeigtes) Gerät ein, wenn es über den Bus mit Strom versorgt wird, und bestätigt DP als USB-Verbindungsereignis. Wenn es selbstversorgt ist, sollte VBUS als logischer Eingang dienen, der die Aktivierung von DP steuert.
Ja, macht total Sinn. Das Problem besteht darin, zu wissen, ob diese Verbindung (VBUS zum Pin des PA9-Mikrocontrollers) wirklich benötigt wird. Und ja, es ist ein autarkes System. Ich habe den Beitrag hinzugefügt, um zu zeigen, dass ein ST-Dokument (uC-Hersteller) besagt, dass diese Verbindung benötigt wird, aber das Handbuch von STM32F405 erwähnt sie nicht. Was schlagen Sie vor?
Ale..chenski, zuerst einmal vielen Dank für die große Hilfe! Und nach diesen 2 Seiten mit Kommentaren und den anderen Vorschlägen von Leuten hier, zusätzlich zu meinen Studien, habe ich die "endgültige" Version (hoffe ich!) für dieses Design erreicht, ich bitte Sie, zu analysieren, weil Sie es getan haben viel mehr Erfahrung mit diesem Wissen. (Ich habe den Beitrag bearbeitet und die "endgültige" Version ans Ende gestellt)