Forum: Mikrocontroller und Digitale Elektronik Ethernet PHY für STM32F4Discovery


von THaala (Gast)


Lesenswert?

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

von Christian G. (christian_g83)


Lesenswert?

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

von Roland H. (batchman)


Lesenswert?

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"

von Christian G. (christian_g83)


Lesenswert?

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

von THaala (Gast)


Lesenswert?

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.

von THaala (Gast)


Lesenswert?

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

von hp-freund (Gast)


Lesenswert?


von Sven (Gast)


Lesenswert?

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 ;-)

von ./. (Gast)


Lesenswert?

Das IAR-Board für den F4 benutzt fürs Ethernet einen separaten
50 MHz Oszillator.

von THaala (Gast)


Lesenswert?

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

von Sven (Gast)


Lesenswert?

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.

von Sven (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Gerd E. (robberknight)


Lesenswert?

> 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"

von Sven (Gast)


Lesenswert?

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.

von Rubenswerk (Gast)


Lesenswert?

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

von Tilo (Gast)


Lesenswert?

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?

von Alt (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.