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.