folgende Frage:
ich würde gerne meinen PHY(DP83848) mit dem MAC/uC betreiben. Ich nutze RMII und mein PHY stellt mir meine 50Mhz. Jetzt möchte ich die 50MHZ doch als Input an PA1 (ETH_RMII_REF_CLK oder so) haben.
Oder sehe ich hier etwas falsch?
Wie kann ich in der Cube IDE meinen PIN als Input labeln und einen zusätzlichen Takt in der Clock Configuartion hinzufügen?
Hier sind grad nur die vorgefertigten clocks (...) ich nutze das STM32F407VG Disco Kit.
Oder wird der PA1/ETH_RMII_REF_CLK sobald ich mein ETH eibinde als INPUT gelabeld? Steht aber wenn nirgends... oder zumindest habe ich das nicht gefunden. Wie würde ich dann meinem MAC sagen, dass ich einen 50Mhz Clock nutzen möchte?
Bin neu in dem Bereich :-)
Hoffe mir kann jemand von Euch helfen!
Danke im Voraus! :D
Oder wird der PA1/ETH_RMII_REF_CLK sobald ich mein ETH eibinde als INPUT
gelabeld? Steht aber wenn nirgends... oder zumindest habe ich das nicht
gefunden. Wie würde ich dann meinem MAC sagen, dass ich einen 50Mhz
Clock nutzen möchte?
Zwei Schritte:
Pin PA1 auf die Alternate Function 11 stellen - damit hat er automatisch entweder die Funktion ETH_MII_RX_CLK oder ETH_RMII_REF_CLK. Diese Funktion ist immer ein Eingang.
Den Ethernet MAC per MII_RMII_SEL Bit auf RMII stellen. RMII erfordert grundsätzlich einen 50 MHz Takt, MII 25 MHz bei 100 MBit/s oder 2.5 MHz bei 10 MBit/s.
Siehe RM0090, 33.4.4 MII/RMII selection
Wenn du in CubeMX unter Connectivity "ETH" auswählst/aktivierst
bekommst du einen Satz von GPIOs konfiguriert wo der RefClock
dabei ist. Der Codegenerator erzeugt dir einen Satz von Pins
zu Initialisierung für deinen PHY.
Der Code steht dann in <ethernetif.c>
Damit deine Frage(n) beantwortet?
Ich nutze RMII und mein PHY stellt mir meine 50Mhz.
Nein! Dein PHY erzeugt keinen Referenzclock! Du brauchst einen
externen Oszillator. Empfehlung: nimm nicht die Clock-Erzeugung
deines F407 sondern spendiere einen eigenen Oszillator fürs
Ethernet. Sparsame Gesellen verwenden 50MHz generiert aus einer
PLL im F407, das ist nicht günstig und fehleranfällig wegen hohem
Jitter.
ich meine damit, dass auf dem PCB wo der PHY sitzt auch ein cmos oszi
sitzt der mir meinen Takt generiert
Tja, wenn man sich nich klar ausdrückt dann kommt es zu solchen
Misverständnissen. Die Version mit dem PHY-Modul mit Oszillator
ist natürlich die optimale für den RefClock.
Oder wird der PA1/ETH_RMII_REF_CLK sobald ich mein ETH eibinde als INPUT
gelabeld? Steht aber wenn nirgends... oder zumindest habe ich das nicht
gefunden. Wie würde ich dann meinem MAC sagen, dass ich einen 50Mhz
Clock nutzen möchte?
Zwei Schritte:
Pin PA1 auf die Alternate Function 11 stellen - damit hat er
automatisch entweder die Funktion ETH_MII_RX_CLK oder ETH_RMII_REF_CLK.
Diese Funktion ist immer ein Eingang.
Den Ethernet MAC per MII_RMII_SEL Bit auf RMII stellen. RMII
erfordert grundsätzlich einen 50 MHz Takt, MII 25 MHz bei 100 MBit/s
oder 2.5 MHz bei 10 MBit/s.
Siehe RM0090, 33.4.4 MII/RMII selection
fchk
okay, der PHY befindet sich im RMII Modus - logisch.
PIN PA1 ist als ETH_RMII_REF_CLK gelabeld als "Alternate Function". Alternate Function 11 bedeutet ja, dass der GPIO als ETH_RMII_REF_CLk genutzt wird, oder muss ich hier noch etwas in den Registern ändern?
Der PIN ist also ein Input, oder?
Mein PHY und MAC sollen (müssen) doch synchron laufen, d.h. beide brauchen doch auch die gleiche Quelle für die Referenzclock, oder nicht (also meine 50Mhz)?
Mein PHY und MAC sollen (müssen) doch synchron laufen, d.h. beide
brauchen doch auch die gleiche Quelle für die Referenzclock, oder nicht
(also meine 50Mhz)?
okay, der PHY befindet sich im RMII Modus - logisch.
PIN PA1 ist als ETH_RMII_REF_CLK gelabeld als "Alternate Function".
Alternate Function 11 bedeutet ja, dass der GPIO als ETH_RMII_REF_CLk
genutzt wird, oder muss ich hier noch etwas in den Registern ändern?
Der RefClock ist Input ("alternate") und geht direkt zu MAC.
Da braucht man nichts weiter konfigurieren.
Das ist allerdings etwas verwirrend, offensichtlich überstimmt
"alternate" die anderen GPIO-Attribute (Input). Jedenfalls
funktioniert das so, ich habe das am F407 explizit schon gemacht.
ja, ich weiß. Aber genau daher ja meine Frage. Die 50 Mhz bekommt der PHY und der STM32, die 50Mhz liegen am MAC/STM32 nur am PA1 Pin an, oder?
Auf dem Datenblatt sieht es ja so aus, als würden die 50Mhz einmal durch ETH_RMII_REF_CLK kommen, aber auch durch einen anderen "PIN" um den HCLK mit einem PLL zu "gestalten".
Wie konfiguriere ich das nun in der Clock Config die 50MHz, ich muss das ja irgendwie definieren, oder wird direkt davon ausgangen das am PA1 Pin im RMII Mode die 50MHz anliegen und ich muss nicht mehr machen?
Der STM würde doch immernoch mit den Frequenzen laufen, die ich im CubeMX konfiguiert habe. Beim STM32F407VG Disco Board also 8MHz HSE oder 32.768KHz LSE.
Ich möchte hier aber doch meine 50Mhz anliegen haben. Der STM32 soll diese ja auch als Takt "benutzen".
Also quasi statt dem HSE mit 8MHz meine 50MHz, oder nicht?
Wie konfiguriere ich das nun in der Clock Config die 50MHz, ich muss das
ja irgendwie definieren, oder wird direkt davon ausgangen das am PA1 Pin
im RMII Mode die 50MHz anliegen und ich muss nicht mehr machen?
Der STM würde doch immernoch mit den Frequenzen laufen, die ich im
CubeMX konfiguiert habe. Beim STM32F407VG Disco Board also 8MHz HSE oder
32.768KHz LSE.
Der Controller selbst läuft mit dem Takt was du in CubeMx
konfiguriert hast.
Dazu dient die Clock-Konfiguration von CubeMX. Die 8 MHz sind
nur die Ausgangsbasis für die PLLs um auf die hohen Frequenzen
(üblicherweise 168 MHz) zu kommen.
okay, der PHY befindet sich im RMII Modus - logisch.
PIN PA1 ist als ETH_RMII_REF_CLK gelabeld als "Alternate Function".
Alternate Function 11 bedeutet ja, dass der GPIO als ETH_RMII_REF_CLk
genutzt wird, oder muss ich hier noch etwas in den Registern ändern?
nein, das reicht.
Der PIN ist also ein Input, oder?
ja, und das unabhängig von der GPIO Config.
Mein PHY und MAC sollen (müssen) doch synchron laufen, d.h. beide
brauchen doch auch die gleiche Quelle für die Referenzclock, oder nicht
(also meine 50Mhz)?
Wie konfiguriere ich das in der Clock Config?
gar nicht, das ist fest verdrahtet. Bei RMII braucht der MAC immer einen Takt an ETH_RMII_REF_CLK, und das sind auch immer 50 MHz.