Connecting to Ethernet on the STM32F429 Discovery Print

 

This note explains how to connect to Ethernet on the STM32F429 Discovery board. With a network connection available, U-Boot can load images via Ethernet and TFTP quickly and easily. This is the development and software manufacturing option one wants to have available with U-Boot and Linux.

The STM32F429 device does provide a 10/100Mb Ethernet controller. There are U-Boot and Linux device drivers available for the Ethernet interface and they work just fine, providing for a very convinient development environment using TFTP and NFS. At the architectural level, being able to use the full Linux TCP/IP stack, with the multitude of protocols and services it supports, speaks for itself.

That all having been said, the STM32F429 Discovery board design does not make it easy for an engineer to get access to the Ethernet interface. There is no Ethernet PHY device, nor an RJ-45 connector, on the board. What is worse, even the RMII (Reduced Media Independent Interface) signals available on the extension interfaces of the STM32F429 have certain conflicts with some other devices installed on the board. It is possible to get access to the RMII using an external Ethernet RMII device ("dongle"), however this requires that certain hardware re-works be applied to the board.

Before implementing the hardware re-works described below, please make sure that you understand that you will be manually modifying the Discovery board hardware, with obvious implications. Emcraft did that so we know it is doable, however you have to be a reasonably experienced hardware engineer to implement these reworks.

The hardware reworks that are required on the STM32F429 Discovery board in order to make the RMII signals available on the expansion headers are described by the following table:

STM32F429 Pin RMII Signal Conflict with
Muxed I/O Interface
on the STM32F429 Discovery
Rework Alternative
Implementation
of the Muxed I/O
Interface with Rework
Notes
PA1 RMII_REF_CLK U3 (gyroscope MEMS) Cut the trace coming from the U3 pin 7 before the first via - U3 (gyroscope MEMS) can't be controlled when RMII is used
PA2 ETH _MDIO U3 (gyroscope MEMS) Cut the trace coming from the U3 pin 6 before the first via -
PA7 ETH_RMII _CRS_DV CN3 (ACP/RF E2P connector) - - Don't insert a cable into connector CN3 when RMII is used
PC1 ETH _MDC U3 (gyroscope MEMS) - - U3 (gyroscope MEMS) can't be controlled when RMII is used
PC4 ETH_RMII_RXD0 U8 (USB power switch) Remove resistor R72 Connect pin 3 of U8 (USB power switch) to pin PG3 of the STM32F429 MCU, available on pin 61 of connector P2 Pin 3 of U8 can be controlled by pin PG3 of the STM32F29 MCU
PC5 ETH _RMII_RXD1 U8 (USB power switch) Remove resistor R69 Connect pin 4 of U8 (USB power switch) to pin PG2 of the STM32F429 MCU, available on pin 62 of connector P2 Pin 4 of U8 can be controlled by pin PG2 of the STM32F29 MCU
PG11 ETH _RMII_TX_EN CN5 (LCD connector) - - When RMII is used there could appear artifacts on the LCD
PG13 ETH _RMII_TXD0 LD3 (User LED) Remove resistor R26 Connect LD3 (User LED3) through 510 Ohm resistor to pin PE3 of the STM32F429 MCU, available on pin 16 of connector P1 LD3 can be controlled by pin PE3 of the STM32F29 MCU
PG14 ETH _RMII_TXD1 LD4 (User LED) Remove resistor R27 Connect LD4 (User LED4) through 680 Ohm resistor to pin PG9 of the STM32F429 MCU, available on pin 33 of connector P1 LD4 can be controlled by pin PG9 of the STM32F29 MCU


Having applied the above reworks, you need to connect an external Ethernet board to the RMII interface available on the expansion headers of the STM32F429 Discovery board. One specific Ethernet board Emcraft has been using is the WaveShare DP83848 accessory board that includes an onboard Ethernet Physical Layer Transceiver, RJ-45 connector, and control interface:

 

The connections between the STM32F429 Discovery expansion headers and the WaveShare DP83848 accessory board are described by the following table:

STM32F429 Pin STM32F429 Function STM32F429 Discovery Board
Connection
WaveShare DP83848 Board
Connection
Notes
PA1 ETH_RMII_REF_CLK P2.17 P2.7 (OSCIN)
PA2 ETH _MDIO P2.20 P2.5 (MDIO)
PA7 ETH_RMII _CRS_DV P2.23 P2.8 (CRS_DV)
PC1 ETH _MDC P2.13 P2.6 (MDC)
PC4 ETH_RMII_RXD0 P2.26 P2.9 (RXD0)
PC5 ETH _RMII_RXD1 P2.25 P2.10 (RXD1)
PG11 ETH _RMII_TX_EN P1.31 P2.11 (TX_EN)
PG13 ETH _RMII_TXD0 P1.29 P1.12 (TXD0)
PG14 ETH _RMII_TXD1 P1.30 P1.13 (TXD1)
VDD VDD P2.1 PP2.1 (VCC) +3.3V power for the Waveshare board
GND GND P2.11 P2.3 (GND)


It should be possible to use other third-party Ethernet RMII boards as well. The U-Boot and Linux kernel device drivers should be able to support most of today's RMII PHY devices with minimal modifications to the source files, or perhaps even with no modifications at all. Please note however that the only device that Emcraft has explicitly validated is the WaveShare accessory board described above.