Hallo zusammen, ich versuche zum ersten Mal eine USB Funktion mit einem STM32 zu realisieren. Dazu wollte ich einen STM32F302RBT6 einsetzen. Ich habe mir das Datenblatt angeschaut und sehe nur, dass ich den Pin PA11 für USB_DM und den Pin PA12 für USB_DM verwenden soll. Wie soll aber die komplette Schaltung dazu aussehen? Es muss doch noch VBUS angeschlossen werden. Ich werde aus dem Datenblatt nicht schlauer. MfG
S.T.M schrieb: > Ich werde aus dem Datenblatt nicht schlauer. Suche dir ein User Manual zu einem STM Nucleo Board mit deinem Prozessor, dort ist eine vollständige Beschaltung angegeben.
USB hardware and PCB guidelines using STM32 MCUs https://www.st.com/content/ccc/resource/technical/document/application_note/group0/0b/10/63/76/87/7a/47/4b/DM00296349/files/DM00296349.pdf/jcr:content/translations/en.DM00296349.pdf
Vielen Dank euch beiden. Das was ich gesucht habe, steht in der Application Note, was Harry gelinkt hat. Die Datenblätter von ST sind ja eigenartig, wenn man für jede Funktion ein passendes Application Note raussuchen muss. MfG
S.T.M schrieb: > Die Datenblätter von ST sind ja eigenartig, wenn man für jede Funktion > ein passendes Application Note raussuchen muss. Genau das finde ich gut, die Informationen sind auf das wichtigste des jeweiligen Szenarios heruntergebrochen. Nicht jeder nutzt z.b. USB etc... Das schrumpft die eigentliche Datenblattstärke um einiges. Wenn man nun aber z.b. aus dem Atmel Lager kommt, ist das schon verfremdlich, das stimmt schon ? Da muss man sich umgewöhnen.
S.T.M schrieb: > Wie soll aber die komplette Schaltung dazu aussehen?
1 | USB Buchse Mikrocontroller |
2 | |
3 | 1,kΩ |
4 | +----[===]---o 3,3V |
5 | | |
6 | D+ o----------+--o DP PA12 |
7 | D- o-------------o DM PA11 |
8 | GND o-------------o GND |
Siehe http://stefanfrings.de/stm32/stm32f3.html#usb > Es muss doch noch VBUS angeschlossen werden. VBUS kannst du benutzen, um dein Gerät mit Strom zu versorgen. Dann kommt da ein Low-Drop 3.3V Spannungsreler dran. Wenn deine Schaltung eine andere Stromversorgung hat, brauchst du VBUS nicht zu benutzen. In realen Schaltungen empfehlen sich zusätzlich Suppressor-Dioden zum Schutz gegen Überspannung. Zum Debuggen kann es hilfreich sein, den Pull-Up Widerstand schaltbar zu machen, damit man nicht nach jedem Reset das USB Kabel aus- und wieder einstecken muss. Das Programm soll dann den Pull-Up nach jedem Reset ca. 1 Sekunde verzögert einschalten.
Rene K. schrieb: > Wenn man nun aber z.b. aus dem Atmel Lager kommt, ist das schon > verfremdlich, das stimmt schon ? Da muss man sich umgewöhnen. Ja ich komme aus dem AVR Lager :) Daher auch die Verwirrung. Stefanus F. schrieb: > Wenn deine Schaltung > eine andere Stromversorgung hat, brauchst du VBUS nicht zu benutzen Ist es nicht sinnvoll, wenn man den VBUS über einen Spannungsteiler an einen GPIO hängt? Damit der Controller weiss, dass ein USB Kabel angeschlossen wurde? Mein Schaltplan habe ich angehängt. Auf deiner Homepage steht, dass man einen 48MHz Quarz nehmen soll. In der Application Note steht aber, es würde auch ein 16MHz gehen. Was stimmt denn nun? MfG
S.T.M schrieb: > Ist es nicht sinnvoll, wenn man den VBUS über einen Spannungsteiler an > einen GPIO hängt? Damit der Controller weiss, dass ein USB Kabel > angeschlossen wurde? Das erfährt er schon durch die USB Kommunikation. > Auf deiner Homepage steht, dass man einen 48MHz Quarz nehmen soll. Nein, dort steht, dass die USB Schnittstelle mit 48MHz getaktet werden muss. Dort steht auch, dass daher der Systemtakt entweder 48MHz oder 72MHz sein muss und dass man dementsprechend den Prescaler auf 1 oder 1,5 einstellt. Von Quarz ist das alles wiederum ziemlich unabhängig, da dessen Frequenz mittels PLL auf 48 oder 72MHz erhöht wird. Alle mir bekannten Evaluation Kits und Development Boards haben einen 8MHz Quarz.
S.T.M schrieb: > Auf deiner Homepage steht, dass man einen 48MHz Quarz nehmen soll. Der Controller kann nur max 32 MHz als Quarz. Auf der Website ist vom Systemtakt die Rede, welcher über eine PLL erzeugt wird. Viele Schaltungen verwenden 8MHz-Quarze. Die 48 MHz für USB werden über eine weitere interne PLL erzeugt. Hier die USB-Schaltung vom Olimexino, als Inspiration: https://www.mikrocontroller.net/articles/Datei:Olimexino_STM32_USB.png S.T.M schrieb: > Damit der Controller weiss, dass ein USB Kabel > angeschlossen wurde? Das sollte er ja auch an den SOF-Paketen vom Host erkennen, ist also eher für Testzwecke sinnvoll. Edit: Zu spät!
Stefanus F. schrieb: > Von Quarz ist das alles wiederum ziemlich unabhängig Nö, da man nur mit bestimmten Basis-Frequenzen des Quarzes die notwendigen 72 bzw 48 MHz erreichen kann. S.T.M schrieb: > Auf deiner Homepage steht, dass man einen 48MHz Quarz nehmen soll. Eine so hohe Frequenz für den Quarz würde nicht funktionieren.
Quarzrechner schrieb: > Nö, da man nur mit bestimmten Basis-Frequenzen des Quarzes die > notwendigen 72 bzw 48 MHz erreichen kann. Das wird er früh genug merken, wenn er die Taktkonfiguration berechnet oder es in CubeMx zusammen klickt.
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.
