Hallo - ich möchte gerne an mein STM32F4Discovery ein Adapterboard für ein LCD-Display, zwei RS232 - Schittstellen und ein 100Mbt Ethernet anschließen. Für die Ethernet RMII - Konfiguration wird ein 50 MHZ - Clock benötigt. Ich möchte gerne wissen ob das Discovery - Board dieses Clock (RMII_REF_CK) liefern kann oder ob ich einen eigenen 50 MHz - Oszillator für den PHY - Chip vorsehen muß. Das der STM32 dies prinzipiell liefern kann ist mir schon klar, aber ich möchte am (auf Maximalleistung + USB - Signale) getrimmten Timing des Discovery-Boards aber nichts ändern um USB gleichzeitig betreiben zu können. Gerade die Versorgung der einzelnen Bereiche mit Taktsignalen ist ja in der STM32 - Famlie eine Wissenschaft. Gruß Thilo
THaala schrieb: > Das der STM32 dies prinzipiell liefern kann ist mir schon klar Unter der Voraussetzung, dass weiterhin die 48MHz für USB anliegen sollen, sieht es für die 50MHz nicht sonderlich gut aus. > Gerade die Versorgung der einzelnen Bereiche mit Taktsignalen ist ja in > der STM32 - Famlie eine Wissenschaft. Eben. Nimm einen eigenen Quarz. Auf diese Weise musst Du dir auch keine Gedanken mehr darüber machen, wie das Taktsignal vom Discovery auf das Peripherie-Board gelangt. Christian
THaala schrieb: > ein Adapterboard für ein > LCD-Display, zwei RS232 - Schittstellen und ein 100Mbt Ethernet > anschließen. Selbst erstellt oder "zugekauft"? Sockel für den Quarz schon vorhanden? Link vorhanden? THaala schrieb: > Ich möchte gerne wissen ob das Discovery - Board dieses Clock > (RMII_REF_CK) liefern kann oder ob ich einen eigenen 50 MHz - Oszillator > für den PHY - Chip vorsehen muß. Zitat aus "reference manual", Seite 819/820:
1 | RMII: The same clock reference must be sourced externally to both MAC and external Ethernet PHY |
2 | |
3 | Either clock the PHY from an external 50 MHz clock or use a PHY with an embedded PLL to generate the 50 MHz frequency. |
THaala schrieb: > Das der STM32 dies prinzipiell liefern kann ist mir schon klar Wie? Haupt-PLL-Output auf 150 MHz einstellen + Timer mit Prescaler 3 wählen und diesen einen Pin togglen lassen? M. W. gibt es keine separate PLL für Eth. > aber ich > möchte am (auf Maximalleistung + USB - Signale) getrimmten Timing des > Discovery-Boards aber nichts ändern um USB gleichzeitig betreiben zu > können. Dann wären es 150 MHz statt 168 MHz :-) Christian Gudrian schrieb: > Unter der Voraussetzung, dass weiterhin die 48MHz für USB anliegen > sollen, sieht es für die 50MHz nicht sonderlich gut aus. M. W. gibt es eine separate PLL für USB. Das wäre dann nicht das Problem. Christian Gudrian schrieb: > Nimm einen eigenen Quarz. Auf diese Weise musst Du dir auch keine > Gedanken mehr darüber machen, wie das Taktsignal vom Discovery auf das > Peripherie-Board gelangt. Dem schließe ich mich an. Die bisherigen "Erfolgsmeldungen" bezüglich Ethernet waren mit dem Waveshare Ethernet PHY, welches über einen 50 MHz Quarz verfügt. Ich kenne mich mit der Signalführung im MHz-Bereich nicht aus. Welche Anforderungen an die Signalführung müsste man beachten, damit das mit den 50 MHz überhaupt klappen würde: Breite, Ecken, Übergänge an Stiftleisten etc.? Bezüglich des 50 MHz-Quarzes: Ob das relevant ist, weiß ich nicht, aber es soll nicht so einfach sein, Quarze > 20 MHz beschaffen zu können: Siehe Beitrag "Anfänger Microcontroller - bräuchte mal einen rat"
Roland H. schrieb: > Dann wären es 150 MHz statt 168 MHz :-) Auf den Gedanken bin ich auch gekommen. Der Excel-Konfigurator kann dann aber keinen 48MHz-USB-Takt mehr hinbekommen. Das habe ich dann einfach mal geglaubt. Christian
Ich habe als Referenz ein Board von den Chinesen. Allerdings mit einem STM32F107 - die nutzen den DM9161A, ohne zusätzlichen Oszillator, den ich auch verwenden will. Daher war ich davon ausgegangen, das die Refclock vom SMT32 kommt. (Tut sie auch, aber nicht mit 50MHz sondern 25MHz) 25MHz als Quarz geht noch, 50 MHz braucht man einen Oszillator! Ich habe etwas durcheinandergewürfelt mit MII- und RMII-Konfigurationen. Die Konfigurationen mit Referenzclock vom STM32 waren wahrscheinlich alle als MII - Vollausstattung ausgerüstet und demnach "nur" 25MHz. Das heißt aber auch definitiv: 50MHz - Oszillator wird benötigt. Danke für eure Kommentare.
P.S. >>> Selbst erstellt oder "zugekauft"? Sockel für den Quarz schon vorhanden? >>> Link vorhanden? Ich versuche es mal selbst! Mein Hauptaugenmerk liegt aber erst mal im Betrieb des Displays, der seriellen Schnittstellen und der SD-Karte auf dem Display-Board. Klar, das das Layout für Ethernet eine Herausforderung ist, aber wenn es nicht hinhaut ist das erst mal nicht weiter schlimm. Gruß Thilo
Nachdem ich dummerweise einen eigenen Thread eröffnet hatte (Beitrag "STM32F4 Clock für Ethernet RMII"), wurde ich freundlicherweise hierher verwiesen. Also ich denk schon dass es gehen müsste. Der F4 hat ja 2 PLL's. Wenn man den MCO2 (Pin PC9) verwendet, steht einem exklusiv die I2C PLL zur Verfügung. Die beeinflusst weder den Systemtakt noch den USB Takt. Wenn man z.B. mit 2MHz in die PLL reingeht, dann Multiplikator 200 und Divisor 4 hat man 50MHz die man auf den MCO2 routen kann. Ich hoffe ich hab hier nix übersehen. Das externe Routing der 50MHz ist dann wieder was anderes, bei Fertigmodulen mit Stiftleisten könnte das schwierig werden. Auf einer selbstgerouteten Platine verwende ich jedenfalls erfolgreich den F1 als Clock für den DP83848. Ich bitte um Bestätigung - oder Gegenargumente ;-)
Das IAR-Board für den F4 benutzt fürs Ethernet einen separaten 50 MHz Oszillator.
STM hat dafür ein Clock configuration tool als excel sheet. http://www.youtube.com/watch?v=L7i3QTYTezE http://www.st.com/stonline/stappl/resourceSelector/app?page=resourceSelectorPage&doctype=st_software_rsrc&SubClassID=1521 ich hatte mich damit nicht weiter beschäftigt, weil ich ETH unter ChibiOS zum Laufen bringen will, das aber seinen eigenen Setup mitbringt. Daran wollte ich nicht herumpfuschen. Gruß Thilo
Ja das kenn ich auch von manchen STM32F107 Boards, z.B. das Olimex oder STM3210EVAL. Bei denen wird auch ein externer Oszillator verwendet, aber zumindest lässt sich über Jumper auch der MCO Clock verwenden. Also allein aus der Tatsache dass es beim IAR Board einen Oszillator gibt würde ich noch nicht ableiten, dass es nicht geht. Übrigens hatte ich einen kleinen Rechenfehler. Divisor muss natürlich 8 sein.
Also ich hab das mal ausprobiert. An MCO2 kommt ein 50MHz Takt raus, das chinesische PHY Board mag den Takt aber wohl nicht. Die Link-LED leuchtet dauerhaft, also soweit korrekt, aber die Daten-LED an der RJ45-Buchse flackert sehr schnell - viel schneller als das normale Flackern durch gelegentliche Broadcasts im Netzwerk. Mit dem original 50MHz Oszillator vom DP83848 Board klappt alles. Mir ist nicht klar was an dem vom STM32F4 erzeugten Takt nicht passt. Ich habe die Clocks gemessen, leider hab ich nur ein Oszi mit 60MHz Bandbreite. Damit sehen beide Takte jedenfalls gleich aus. Verschiedene Port-Konfigurationen (2/25/50/100 MHz) bringen auch nichts, nur dass sich die Amplitude ändert. Warum ist der DP83848 so wählerisch, was stimmt hier nicht?
> leider hab ich nur ein Oszi mit 60MHz > Bandbreite. Damit sehen beide Takte jedenfalls gleich aus. Dem Screenshot nach sieht mir Dein Oszi sehr danach aus, als ob es 200 MHz könnte, man muß es Ihm nur sagen. Siehe Beitrag "TEKWAY DST1xx2B Oszilloskop"
Ja aber mit dem tunen lass ich mir noch Zeit. Erstmal schaun ob ich das Teil überhaupt behalte... Also ich hab jetzt das Layout am Discovery Board aufgebrochen, so dass der 50MHz Clock nicht über die vielen Stiftleisten muss, sondern direkt einen kurzen Fädeldraht vom MCO2 Pin zum Clock Eingang des DP83848 am China-Board gelötet. Selbes Ergebnis. Die Daten-LED flackert nur wild. Status ist dauerhaft an.
Falls es noch von Interesse ist, im ChibiOS Diskussionsforum wurde die Lösung gefunden. Die PLL hat einen zu starken Jitter. Beim STM32FF2 gibt es hierzu auch ein Erratum. http://forum.chibios.org/phpbb/viewtopic.php?f=3&t=23&start=100
Hi Sven schrieb: > Also ich denk schon dass es gehen müsste. Der F4 hat ja 2 PLL's. Wenn > man den MCO2 (Pin PC9) verwendet, steht einem exklusiv die I2C PLL zur > Verfügung. Die beeinflusst weder den Systemtakt noch den USB Takt. Wenn > man z.B. mit 2MHz in die PLL reingeht, dann Multiplikator 200 und > Divisor 4 hat man 50MHz die man auf den MCO2 routen kann. Ich hoffe ich > hab hier nix übersehen. Auch wenn das ein alter Beitrag ist passt meine Frage thematisch hier hin. Ich will einen PCM3168a Audiocodec an einen STM32F4 anschließen. Das blöde ist, dass der Codec nur dann aktiv ist, wenn die PLL I2S Clock am Chip anliegt. Der STM ist so konstruiert, dass MCK nur dann aktiv ist, wenn eine Übertragung aktiv st. Mein erster ansatz war nun per circular DMa Dummydaten zu versenden. DAs funktioniert auch, allerdings würde ich gerne eine Resourcenschonendere Lösung verwenden. Ich habe gelesen, dass man per MCO2 den PLLI2S ausgeben können soll. Ich habe daher PC9 als "AF" konfiguriert und mittels RCC_MCO2Config aktiviert. So lange HSE verwendet wird, wird wird der Quarztakt so ausgegeben, wie ich es gerne hätte, 8MHz mit 3Vpp. Wenn PLLI2S ausgewählt ist (PLL ist aktiv!) werden 1,5V DC mit 500mVpp PLL-Signal (ca. 12MHz) vom I2S ausgegeben. So bald ich den Teiler von MCO2 auf mind. 2 stelle stimmt die Amplitude wieder. Kennt jemand hier dieses Problem?
Hier eine Projektbeschreibung zum Thema, mit angepasstem Beispielcode: http://blog.tkjelectronics.dk/2012/08/ethernet-on-stm32f4discovery-using-external-phy/
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.