STM32H723 (lwIP) – Ping not working, ARP reply generated but not visible on PC
Hello!
I have been using the STM32H723ZG Nucleo board and am now trying to ping the STM32 device from a PC through an Ethernet connection, but the ping is not working.
For ex:
ping 192.168.10.XX (STM32 Static IP)
No response is received.
My board setup and module details are given below.
Board / Setup
- MCU: STM32H723ZG (Nucleo)
- Interface: Ethernet (RMII)
- PHY: (e.g., LAN8742 – please confirm)
- Stack: lwIP (CubeMX generated)
- RTOS: FreeRTOS
- Connection: Ethernet cable through splitter (PC ↔ STM32)
- PC IP: 192.168.10.XX (static)
- STM32 IP: 192.168.10.XX (static)
- STM cube IDE version: 1.18.1
Observed Behavior (STM32 side logs):
- STM32 successfully receives ARP requests from PC.
Who has 192.168.10.50? Tell 192.168.10.100 (Captured by wireshark).
2. lwIP processes the request and generates an ARP reply.
3. ARP reply frame content (from debug log):
192.168.10.XX is at 00:80:XX:XX:XX:XX
4. Transmission status:
HAL_ETH_Transmit_IT status = HAL_OK
5. TX complete callback is triggered:
HAL_ETH_TxCpltCallback()
Expected Behavior:
- PC should receive ARP reply
- PC should update ARP table
- ICMP Echo Request / Reply should occur
- Ping should succeed
Actual Behavior (PC side)
Using Wireshark:
- ARP request from PC is visible
- No ARP reply from STM32 is visible
- PC does not learn STM32 MAC
- Ping fails
Memory Configuration (lwIP / DMA)
- Ethernet DMA descriptors placed in D2 SRAM:
- lwIP heap configuration (lwipopts.h:(
#define MEM_SIZE 16360
#define LWIP_RAM_HEAP_POINTER 0x30040000
- D2 SRAM size: 32 KB
- Heap size adjusted to fit within D2 SRAM
Additional Observations
- STM32 receives Ethernet frames correctly (ARP and IPv4 traffic visible)
- lwIP stack appears functional
- ARP reply frame format is correct
- Transmission completes at software level
For your reference I have given the STM log that I get while I sent the ping command.
STM log:
RX: ARP request (broadcast)
Sender MAC: XX:XX:XX:XX:XX:XX
Sender IP : 192.168.10.XX
Target IP : 192.168.10.XX
TX: ARP reply
Sender MAC: XX:XX:XX:XX:XX:XX
Sender IP : 192.168.10.XX
Target MAC: XX:XX:XX:XX:XX:XX
Target IP : 192.168.10.XX
HAL_ETH_Transmit_IT status = 0
Questions
- Can TX complete callback be triggered even if the frame is not physically transmitted on the cable?
- Are there known STM32H7 RMII TX issues where RX works but TX does not?
- Any recommended way to verify TX signal activity without oscilloscope?
- Any CubeMX configuration that is critical for TX but easy to miss?
Any guidance would be appreciated.
Regards,
Siva
