2026-02-13 4:59 AM - last edited on 2026-03-04 3:48 AM by Andrew Neil
Hi @mƎALLEm @Adam BERLINGER ,
Ethernet is currently working on the Nucleo-H755ZI-Q development board. However, I would like to understand Ethernet from the basics, similar to how we understand protocols like I2C and SPI.
Could you please suggest any resources or reference links to help me understand the Ethernet protocol and RMII interface in depth?
This is my custom board ethernet
LED_G+ needs to be pulled down, so I have pulled that pin down.
2026-03-04 3:45 AM
Hello @kavyamm,
Regarding the resources, if you want to understand how Ethernet works at the protocol level, I suggest searching online for the OSI model and TCP/IP networking courses.
If you want to understand the theory of operation of the physical interface, I recommend checking the PHY manufacturer’s application notes and datasheets. They usually provide detailed explanations on the theory of operation, PHY register programming, and recommendations for PHY PCB integration.
Best regards,
2026-03-04 3:51 AM - edited 2026-03-04 4:08 AM
Ethernet and RMII and both well-established and widely-used standards - nothing specifically to do with ST or STM32.
Try your favourite internet search engine and/or AI assistant.
Here's a couple for starters
https://en.wikipedia.org/wiki/Ethernet
https://en.wikipedia.org/wiki/Media-independent_interface#Reduced_media-independent_interface
PS:
@kavyamm wrote:I would like to understand Ethernet from the basics, similar to how we understand protocols like I2C and SPI.
When you say "Ethernet", do you really mean IP networking ?
That is significantly more complex than simple interfaces like I2C and SPI !
As @STackPointer64 suggests, that involves a whole stack of protocols - which is where the OSI 7-Layer model comes in ...
2026-03-04 3:57 AM
And to answer your questions:
> Can I use the same libraries that are used in the Nucleo-H755ZI-Q board for this LAN?
Yes, you can use them.
> If I use the same library and it gets stuck at netif_add(), what could be the issue?
You should check your configuration. Try placing a breakpoint inside the low_level_init function and step-debug through it to see whether the link negotiation completes successfully. If it does, it should select one of the available speed/duplex options. If not, check the wiring and clocking of your PHY, as it is very sensitive to timing.
Best regards,