Enabling Ethernet Interface on Nucleo-H743ZI2
- January 27, 2021
- 3 replies
- 8458 views
Hi,
I am developing a TCP/IP server for my application on the Nucleo-H743ZI2 board. I want to use LWIP with FreeRTOS to allow threading and have a similar syntax to POSIX sockets.
So far I found the following two examples:
(1) This tutorial targets the same CPU family STM32H7 but a different board. https://community.st.com/s/article/How-to-create-project-for-STM32H7-with-Ethernet-and-LwIP-stack-working
(2) An example in STM32 Repository in the following path: STM32Cube_FW_H7_V1.8.0\Projects\NUCLEO-H743ZI\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS
However, this example does not use CubeMX which is extremely important in my case as I use it to manage many interfaces in my project (QSPI, I2C, ADC, etc)
I followed the first example steps and I adapted some stuff based on what I found in the source files of the second example. However, I could not ping the board at all. I attached project files (Test_Ethernet).
Here are the steps that I've done (I attach snapshots at the end):
- Created a new project on STM32CubeIDE 1.4.0 using STM32Cube_FW_H7_V1.8.0.
- Started configuring the project using the embedded CubeMX in CubeIDE.
- I select "No" to "Initialize all peripherals in default mode.
- Here is a snapshot of my clock configuration. I configure the clock to 400 MHz. I also set the high-speed clock (HSE) to bypass mode.
- Configure the Ethernet interface
- Setting the mode to RMII with all the GPIOs maximum output speed set to High.
- Enable ethernet global interrupt with preemption priority set to 5.
- Configure Cortex-M7. Here I enable ICache and DCache with MPU Contro Mode set to Background Region Privileged accesses only. Then, I set two memory protection units as follows:
- Configure FreeRTOS
- Enable the FreeRTOS with CMSIS_V1 API.
- Increase the size of the default task stack to 256 words.
- Configure LwIP as in example (1).
- Add DATA_IN_D2_SRAM to macro definitions in the project.
- Modify linkerscript as in example (1).
So what am I missing in my steps or configurations?
Thanks




