cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 Ethernet Not Working

PMart.1
Associate III

Hi There,

I am trying to run the ethernet example from the 1.7.0 version of the STM32H7 firmware at STM32Cube_FW_H7_V1.7.0\Projects\NUCLEO-H743ZI\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS.

The only modifications I have performed from the provided example code is I have disabled DHCP to use a static IP address (#define LWIP_DHCP 0).

I am trying to run this on the Nucleo-H743ZI2 development board and I cannot get any response to ping. If I attach the debugger, I can see the STM32 is receiving ARP requests and trying to send out ARP responses. Additionally, if I probe the TXD0/TXD1/TXEN lines on the 8742A PHY chip I can see the lines moving periodically in response to ARP queries. Duration looks good, but I have not parsed out the individual bits.

I have tried this on multiple boards, and additionally on a custom STM32H753x board all with the same behavior.

I have also followed all advice here in this page https://community.st.com/s/article/FAQ-Ethernet-not-working-on-STM32H7x3

I have also tried adding the SCB_CleanInvalidateDCache() in the ethernet low_level_output() function.

I have disabled all firewalls and verified I can ping other devices no problem.

I have double checked all SolderBridges and Jumper Wires are set correctly for ethernet based on the Nucleo data sheet.

My questions are:

  1. Can someone verify the latest 1.7.0 LwIP_HTTP_Server_Netconn_RTOS example project is functioning on the Nucleo-H743ZI2 dev board? 
  2. Does someone have a known working hex file you could provide so that I can verify my hardware is working?

Thank you for any assistance you can provide.

#NUCLEO

#NUCLEO-H743ZI2

#STM32H743ZI

#[STM32 MCUs]​

#STM32H7​

29 REPLIES 29
Piranha
Chief II

> I have also tried adding the SCB_CleanInvalidateDCache() in the ethernet low_level_output() function.

That is pure nonsense. You can get more information at Alister's and my topic:

https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32

> Can someone verify the latest 1.7.0 LwIP_HTTP_Server_Netconn_RTOS example project is functioning on the Nucleo-H743ZI2 dev board?

None of ST's Ethernet/lwIP examples are actually working and never (in a foreseeable future) will. For H7 it's totally true, for other series it's "less terrible".

@Community member​ @Manu Abraham​ 

Yep it looks like VDDIO going into the PHY is 1.8V when JP5 is jumped to 1.8V mode (VDD for the PHY stays at 3.3V). There is no VDDIO setting for the STM32H7 as far as I can tell.

I still cannot get the example code running on the Nucleo running with 1.8VDD.

I have scoped the TXD0/TXD1/TXEN signals going into the PHY for arp responses and they look exactly the same shape as when running in 3.3V VDD (but of course smaller amplitude).

What else could be missing to get this running with 1.8V VDD for the STM32? I have also played with the HSLV settings but those dont seem to change anything. Its like the PHY just can't interpret 1.8V signals, even though it's VDD is still 3.3V and it's VDDIO is 1.8V.

Once I switched JP5 to 3.3V the examples worked perfectly.

Asantos
Senior

The fault for the problems of ethernet in H7 is the fact that DMA does not access DTCM. This is the biggest disadvantage of the H7 and I hope ST will fix it in the future.

>DMA does not access DTCM. This is the biggest disadvantage of the H7

It wouldn't make my top 100 problems list.

Please elaborate.

Asantos
Senior

alister,

There are few questions on this forum about F7 ethernet, but there is a lot about the H7.

The difference between H7 and F7 is that in the F7 DMA accesses DTCM and so there is no need to deal with cache coherence issues.

>so there is no need to deal with cache coherence issues

I guess you're right. But it's a poor reflection on the state of software development today really.

Ok I got the nucleo dev board at 1.8V running the LwIP_HTTP_Server_Netconn_RTOS example by enabling HSLV and compensation correction. That was the piece I was missing.

Wish the Nucleo reference manual mentioned something about that. Hope this helps someone running into this issue in the future!

Hi Manu

Your hex.file is working great on ping test :  192.168.1.40

Could you share entire data please? (including .ioc file)

I'm currently using NUCLEO-H743ZI2 for Ping test with ETH(RMII) / LwIP(static IP address). However, it doesn't work on mine.

Thank you in advance.

Umm, what is not working ?

Are you using some example code ?

You mean the source for HTTP server netconn RTOS ?

It's already with you .. If you have the Cube package ..