NUCLEO-H5E5ZJ 以太网(Ethernet)移植记录
# d* ~* N9 I2 h! c6 K2 P9 _# x 1. 硬件分析1.1 方案概述 NUCLEO-H5E5ZJ 通过 LAN8742A-CZ-TR(U17)PHY + RJ45(CN14)支持 10/100M 以太网,PHY 与 STM32H5E5 之间走 RMII 接口。 关键硬件事实(来源:UM3601 §7.11 + MB2129 原理图交叉核对):
REF_CLKPA1CRS_DVPD10 c/ B, |# |) J& U( Y% E: D MDIOPA2RXD0PC4 MDCPC1RXD1PC5' b. u$ W/ a+ m2 u* p TX_ENPA5TXD0PB121 ]& y- S7 \ P* K4 ]8 | TXD1PG12 文档勘误:UM3601 Table 10 末尾列了 "ETH CLK → PD4",这是从其他板型 UM 拷贝的残留错误——原理图中 PD4 实际接电源开关控制信号 T_PWR_SEL1,与以太网完全无关。UM 表格本身是双栏排版,PDF 文本提取后会错位(例如把 RXD1 错标成 PB7),一切以原理图网络标号 RMII.xxx 为准。 与 LED 无冲突:本板 RMII_RXD1 走 PC5(部分 Nucleo 板型占用 PE5,会与 LD3 冲突,本板不存在此问题)。 2. Zephyr 侧改动2.1 设备树(nucleo_h5e5zj.dts)/* LAN8742A PHY (U17), RMII; PHY nRST tied to board NRST via SB35, addr 0 */&mac { status = "okay"; pinctrl-0 = <ð_rmii_rxd0_pc4 ð_rmii_rxd1_pc5 ð_rmii_ref_clk_pa1 ð_rmii_crs_dv_pd1! e( U6 Z/ B: c4 ^ S' @ ð_rmii_tx_en_pa52 ?# [% D/ M" [8 j6 [# _4 S Z ð_rmii_txd0_pb128 C/ V# `2 n' i4 T: I* c* n ð_rmii_txd1_pg12>; c5 t" |; S" z pinctrl-names = "default";9 f$ |& q, C9 j' T+ @% U* z phy-connection-type = "rmii";! x0 k; V# j8 t% I phy-handle = <ð_phy>; }; &mdio { status = "okay"; pinctrl-0 = <ð_mdio_pa2 ð_mdc_pc1>; p+ S, K0 ^6 | pinctrl-names = "default";: V1 d* t0 M+ G( W4 t6 d( A6 z( ] % N: R" w5 Y8 |/ O eth_phy: ethernet-phy@0 { compatible = "ethernet-phy"; reg = <0x00>;: c* G. X8 s+ c9 I3 G! y1 N3 W };7 o2 M# Q3 I6 Q8 Z/ V7 i" x5 z }; 说明:
configdefault NET_L2_ETHERNET8 R9 Y' f1 X! `- h default y3 B; C2 F7 t/ C) N; ?' }( |* ? endif # BOARD_NUCLEO_H5E5ZJ 这里有个坑(详见 §3):不要照抄 stm32h5f5j_dk 的 configdefault ETH_DRIVER,在 Zephyr v4.4 中必须默认打开 NET_L2_ETHERNET;ETH_DRIVER 自身带 default y if NET_L2_ETHERNET,链路会自动闭合,ETH_STM32_HAL 由设备树 DT_HAS_ST_STM32_ETHERNET_ENABLED 自动使能。 2.3 其他
现象:配置好设备树后编译 samples/net/dhcpv4_client,报: subsys/net/lib/shell/iface.c:899: error: implicit declaration of function 'net_eth_get_phy'排查过程:
修复:参考 nucleo_h563zi / nucleo_f429zi 的 Kconfig.defconfig,默认打开 NET_L2_ETHERNET(见 §2.2)。 经验:跨 Zephyr 版本抄板级 Kconfig 时要小心,同系列新板(main 上的)的写法在旧版本里可能不成立;遇到"隐式声明"错误先查 autoconf.h 里相关配置项的组合是否一致。 4. 构建与验证export ZEPHYR_SDK_INSTALL_DIR=/d/Zephyrproject/zephyr-sdk-1.0.1/zephyr-sdk-1.0.12 e( l" E& u, [9 L9 ]5 Q9 X ) ]7 K: v Z7 w: P' v# [2 Z6 N5 ?; l( i west build -b nucleo_h5e5zj zephyr/samples/net/dhcpv4_client -d build_h5e5_net -p always -- -DBOARD_ROOT=D:/STM32/STM32H5E5/NUCLEO_H5E5ZJ west flash -d build_h5e5_net 网线插到 RJ45(CN14),对端需有 DHCP 服务(路由器/交换机)。串口(ST-LINK VCP,115200 8N1)观察启动日志。 实测结果(2026-10-16)[00:00:00.050,000] <inf> phy_mii: PHY (0) ID 7C131: E2 a- ~7 ^- K4 ]+ f- Q) Z*** Booting Zephyr OS build v4.4.0-25-ga51fc4394abb ***# z$ ?5 `4 a! ?8 r, y [00:00:00.051,000] <inf> net_dhcpv4_client_sample: Run dhcpv4 client [00:00:00.051,000] <inf> net_dhcpv4_client_sample: Start on ethernet: index=1 [00:00:02.853,000] <inf> phy_mii: PHY (0) Link speed 100 Mb, full duplex [00:00:05.941,000] <inf> net_dhcpv4: Received: 192.168.3.150 T1 a7 I* o) h- {) g/ X0 c [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Address[1]: 192.168.3.15 U3 y8 t* i2 f [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Subnet[1]: 255.255.255.0 [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Router[1]: 192.168.3.1 PC 侧反向验证: C:\> ping 192.168.3.15已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),最短 = 0ms,最长 = 1ms,平均 = 0ms
|
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】内存读写性能 - STM32H5E5实测Flash,SRAM读写速度,用DMA搬运大块数据
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】3、STM32H5 Lwip 移植、官方例程和UDP发送数据
【STM32H5 评测】基于NUCLEO_H5E5ZJ+Zephyr数字电源
【STM32H5 评测】2、Keil中添加RTX5 RTOS和Event Record
【STM32H5 评测】1、开发板资源和程序开发
STM32C542RC开发板PWM呼吸灯及多功能按键实验
NUCLEO-H5E5ZJ 移植 LVGL
NUCLEO-H5E5ZJ 移植 ST7735 SPI LCD 驱动
微信公众号
手机版