🛠 Serveur web sur l'Ethernet du STM32H743ZI : démo LwIP officielle, RMII et errata

STM32H7 Nucleo-144 (flagship: NUCLEO-H743ZI) · avance · Schéma : IMG-stm32h7-nucleo-avance-1-stm32h743zi-ethernet-lwip.svg — Nucleo-144 STM32H743ZI avec câble Ethernet RJ45 branché, flèches vers les broches RMII (PA1, PA2, PA7, PB13, PC1, PC4, PC5, PG11, PG13), navigateur web affichant une page de télémétrie, flat vector style, étiquettes en français, fond blanc.

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

  1. git clone --recursive https://github.com/STMicroelectronics/STM32CubeH7.git
  2. Open Projects/NUCLEO-H743ZI/Applications/LwIP in STM32CubeIDE; build and flash via the on-board ST-LINK/V2-1.
  3. 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

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

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials