pico-rmii-ethernet icon indicating copy to clipboard operation
pico-rmii-ethernet copied to clipboard

pico-rmii-ethernet

Enable 100Mbit/s Ethernet connectivity on your Raspberry Pi Pico with an RMII based Ethernet PHY module.

Leverages the Raspberry Pi RP2040 MCU's PIO, DMA, and dual core capabilities to create a Ethernet MAC stack in software!

Hardware

Modification to do

image schematic

We're generating the 50MHz RMII clock on the RP2040 instead of getting it from the LAN8720A crystal. For that, we remove the two R12 and R14 resistors, and connect one of them back on the two top pads instead to avoid connecting the onboard crystal to the clock, and instead connect the nINT/RETCLK pin from the connector to the XTAL1/CLKIN pin of the LAN8720A chip.

Wiring

RMII Module Raspberry Pi Pico Library Default
TX1 TX0 + 1 11
TX-EN TX0 + 2 12
TX0 any GPIO 10
RX0 any GPIO 6
RX1 RX0 + 1 7
nINT / RETCLK 21/23/24/25 21
CRS RX0 + 2 8
MDIO any GPIO 14
MDC MDIO + 1 15
VCC 3V3
GND GND

Examples

See examples folder. LWIP is included as the TCP/IP stack.

Current Limitations

  • Built-in LWIP stack is compiled with NO_SYS so LWIP Netcon and Socket API's are not enabled
  • Auto-negotiation to 10BASE-T is not supported
  • MDIO is bit-banged