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.
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.pngS.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.