🛠 Serveur web sur l'Ethernet du STM32H743ZI : démo LwIP officielle, RMII et errata
What you will build
The H743ZI carries an IEEE-802.3-2002 Ethernet MAC with an on-board RJ45 connector — and ST ships a ready-made LwIP TCP/IP stack demo at Projects/NUCLEO-H743ZI/Applications/LwIP in STM32CubeH7, documented as the Ethernet web-server starting point. This tutorial stands that demo up as a live telemetry page, then covers the pin-level and errata knowledge you need when things misbehave.
Step 1 — Open the official demo
git clone --recursive https://github.com/STMicroelectronics/STM32CubeH7.git- Open
Projects/NUCLEO-H743ZI/Applications/LwIPin STM32CubeIDE; build and flash via the on-board ST-LINK/V2-1. - Cable the board to your LAN; grab the assigned IP from the demo's serial output (ST-LINK virtual COM port, 115200).
Step 2 — Wire the telemetry
Replace the demo's static page content with a live ADC value:
/* In the LwIP HTTP application's SSI handler (CubeH7 demo pattern): */
static int ssi_adc_handler(void *i, const char *tag, char *rs, ushort_t rs_max_len)
{
uint32_t raw;
HAL_ADC_Start(&hadc1); /* 3x 16-bit ADCs, up to 3.6 MSPS */
HAL_ADC_PollForConversion(&hadc1, 10);
raw = HAL_ADC_GetValue(&hadc1);
return snprintf(rs, rs_max_len, "%lu", raw);
}
/* In your page template: <!--#adc_value--> gets replaced on every request. */
Step 3 — Know your RMII map
The RMII signals are documented (Zephyr board doc) on PA1, PA2, PA7, PB13, PC1, PC4, PC5, PG11, PG13. If you re-wire anything near those morpho pins, Ethernet dies first — check this map before debugging the stack.
Step 4 — Errata and corner cases
- ST publishes errata sheet ES0392 for STM32H742/H743/H750/H753; the board sheet's advice is explicit: read it before using DMA/cache-heavy or Ethernet corner cases.
- The board also exposes 2× CAN FD on pins PD0/PD1 but has no external transceiver — if your project mixes Ethernet + CAN, the CAN side needs a transceiver board on the ST Zio/morpho headers.
- There is no Wi-Fi/Bluetooth radio on board: wired Ethernet (plus USB OTG FS/HS and 2× CAN FD) is the whole connectivity story of this board — that is its design philosophy.
Expected result
The browser shows the demo page; the <!--#adc_value--> field changes live as you turn a potentiometer on A0 — a 480 MHz MCU acting as an HTTP server with no OS beyond LwIP.
Common pitfalls
- Judging the stack while DHCP has not bound: read the serial console for the assigned IP before blaming HTTP.
- Touching the RMII pins with shield wiring: PG11/PG13 and friends are not free GPIOs on this board.
- Ignoring cache coherency when DMA-fed buffers back the web data — see the TCM/DMA advanced tutorial, and the ES0392 errata warning above.
- Following an Mbed OS guide for this board: Mbed was sunset in July 2026 (online builds disabled); migrate to CubeH7, Zephyr, or the Mbed CE community fork.
Other tutorials for this board
- Premiers pas sur le Nucleo-144 STM32H743ZI : core STM32duino, ST-LINK et premier Blink
- GPIO, ADC 16 bits et DAC sur le Nucleo STM32H743ZI : bouton, LED et potentiomètre
- MicroPython sur le Nucleo STM32H743ZI : le REPL 480 MHz via le port série ST-LINK
- Zephyr RTOS sur le Nucleo STM32H743ZI : west build, flash et le piège des 96 MHz
- STM32Cube HAL à 480 MHz sur le STM32H743ZI : VOS0, latence flash et HSE bypass
- FreeRTOS sur le Nucleo STM32H743ZI : le projet officiel CubeH7, tâches et file d'attente