Skip to main content
Associate
September 4, 2026
Question

Ethernet is not working on STM32H747IITX Custom PCB.

  • September 4, 2026
  • 6 replies
  • 50 views

Hii All,

I am working on a custom PCB based on the STM32H747IITX MCU, and I am facing an issue with the Ethernet interface.

The Ethernet connection is currently not working on my custom board. I have checked the basic hardware connections, but I am unable to identify the root cause.

I have attached the Ethernet schematic of my custom PCB for reference.

Could someone please help me review the schematic and suggest what I should check?

In particular, I would appreciate guidance on:

  • STM32H747IITX Ethernet RMII configuration and pin assignments
  • PHY hardware connections and required configuration
  • PHY reset and power-supply requirements
  • 25 MHz/50 MHz Ethernet clock configuration
  • PHY address and MDIO/MDC communication
  • Required Ethernet termination/bias components
  • STM32 Ethernet GPIO alternate-function configuration
  • Any hardware-specific requirements or common mistakes when designing Ethernet on a custom STM32H747 board
  • Recommended steps to debug whether the issue is on the MCU, PHY, clock, or PCB side

Hardware: STM32H747IITX custom PCB
Interface: Ethernet (RMII)

Issue: Ethernet is not working on the custom board

I have attached the schematic for your reference. Any feedback on the schematic or suggestions for debugging would be greatly appreciated.

Thank you!

 

6 replies

LCE
Principal II
September 4, 2026

Schematic looks okay on that side, so can’t say if your STM32 side and GPIO setup / alternate functions are correct.

Except for one resistor value at RBIAS pin: you have 120R, I think there should be 12k1 - but I don’t remember what this “bias resistor” actually does… check datasheet: no description * of RBIAS, but it’s always 12k1.

 

* I absolutely hate that when no description is given what such a resistor does, and even worse it it’s not a super-common value.

 

EDIT: what is actually working? At least the MDIO interface? Check that first, then if the REF_CLK is actually there. Use scope...

Associate
September 7, 2026

According to the LAN8742A datasheet, the RBIAS pin requires a 12.1 kOm resistor to ground. 

 

Andrew Neil
Super User
September 4, 2026

Issue: Ethernet is not working on the custom board

That’s not a useful issue description.

What investigation/testing/debugging have you done to find what’s going on?

As ​@LCE said, have you checked the basic comms with the PHY ?

Is the STM32 even running?

Has this design ever worked before?

Is anything at all happening on the Ethernet?

What IP Stack are you using? Have you investigated its diagnostic facilities?

etc, etc ?

 

 

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
junagadhAuthor
Associate
September 7, 2026

Hii,

Thanks for the questions. I have done some debugging and can provide more details.

The issue is on a custom STM32H747 board. I am using the STM32 HAL Ethernet driver with LwIP.

Here is what I have checked so far:

  1. Is the STM32 running?
    Yes. The MCU is running and I can execute/debug the application before Ethernet initialization. I added a debug_step variable at different points in HAL_ETH_Init() and MX_LWIP_Init() to determine exactly where execution stops.

  2. Where does it stop?
    The code reaches HAL_ETH_Init() and gets stuck waiting for the Ethernet DMA software reset to complete:

    while (READ_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR) > 0U)

    The timeout occurs and I reach my debug point after the timeout.

  3. PHY communication / basic PHY checks
    I am currently investigating the PHY communication more closely. The Ethernet pins are configured as follows:

    • PA1 – ETH_REF_CLK

    • PA2 – ETH_MDIO

    • PC1 – ETH_MDC

    • PA7 – ETH_CRS_DV

    • PB11 – ETH_TX_EN

    • PB12 – ETH_TXD0

    • PB13 – ETH_TXD1

    • PC4 – ETH_RXD0

    • PC5 – ETH_RXD1

    The Ethernet peripheral clocks are also enabled:

    __HAL_RCC_ETH1MAC_CLK_ENABLE();
    __HAL_RCC_ETH1TX_CLK_ENABLE();
    __HAL_RCC_ETH1RX_CLK_ENABLE();

  4. Has this design worked before?
    This is a custom board, and Ethernet has not yet been successfully brought up on this hardware. So I cannot currently say that the exact hardware/software configuration has previously worked.

  5. Is anything happening on Ethernet?
    At this point I have not confirmed successful link/network communication. I am therefore trying to separate the problem into:

    • MCU Ethernet MAC configuration

    • PHY communication/configuration

    • RMII clock

    • RMII pin/alternate-function configuration

    • PHY reset/power

    • DMA/MAC initialization

    • LwIP configuration

  6. LwIP diagnostic/debugging
    I am using LwIP generated through STM32CubeMX. I have added debug checkpoints around MX_LWIP_Init() and HAL_ETH_Init() to identify the exact initialization stage where execution stops.

  7. MPU/cache investigation
    Since this is an STM32H7, I have also investigated the MPU and D-Cache configuration because Ethernet DMA requires careful memory/cache handling on the H7. I initially suspected the cache/MPU configuration because Ethernet initialization appeared to interact with SCB_EnableDCache().

    However, the current failure is reproducibly associated with the Ethernet initialization/software-reset sequence, so I am now focusing on the MAC/PHY/clock side as well.

I can also check the RMII reference clock with a scope/logic analyzer and verify that the expected 50-MHz clock is actually reaching the STM32.

If there are any specific STM32H7 Ethernet registers or PHY diagnostics you recommend checking first, I would appreciate the guidance.

Thank You!

Andrew Neil
Super User
September 7, 2026

This is a custom board,

So, again, please post the schematic.

 

I am using LwIP

Enable LwIP diagnostics

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
LCE
Principal II
September 7, 2026

> The code reaches HAL_ETH_Init() and gets stuck waiting for the Ethernet DMA software reset to complete

 

Classic.

This means that either there is no REF_CLK, or it is configured in the “wrong direction”.

 

> If there are any specific STM32H7 Ethernet registers or PHY diagnostics you recommend checking first, I would appreciate the guidance.

 

Does that communication work at all?

Check the datasheet of the PHY which registers tell you what.

 

If you are unsure about the custom HW at all, get a Nucleo and bring up ETH on that.

ETH is one of the most complicated peripherals, and on top you need some IP-stack, so what you need is good nerves and attention to detail.

For example, have you placed the ETH descriptors in the correct RAM areas? → check H7 datasheet

Same for any lwIP memory.

For example, on the H723.. H735 parts ETH DMA cannot access DTCM.