[STM32F4] ETH 和 lwIP卡在 lwIP init 中

[复制链接]
 楼主| Treasure101 发表于 2025-4-4 18:24 | 显示全部楼层 |阅读模式
BSP, ip, lwIP, ni, ST, TI
本帖最后由 Treasure101 于 2025-7-28 22:08 编辑

在STM32CubeIDE编写407程序完成初始化 freeRTOS、ETH 和 lwIP。
在 System Core 中, Timebase Source 更改为 Timer。
在 lwIP 中,我禁用了 DHCP 并使用静态 IP。
其他所有配置均为默认。现在我将 板卡通过网络连接到 PC , Ping不通。
在仿真时,。

公羊子丹 发表于 2025-4-5 07:40 | 显示全部楼层
你说lwIP init卡住,是在哪个函数里卡的?是MX_LWIP_Init()里面?我之前遇到过是PHY没初始化好,结果整个卡在等待link up。
周半梅 发表于 2025-4-5 07:41 | 显示全部楼层
你有加上MX_LWIP_Init()后启动一个处理网口数据的任务吗?比如用ethernetif_input()+sys_check_timeouts()那种循环?不加这个lwIP不会自动处理网络事件的。
帛灿灿 发表于 2025-4-5 07:42 | 显示全部楼层
试试用Wireshark抓一下板子端口,看看有没有发ARP或ICMP报文,有时候是MAC层正常但IP层没配置好。
童雨竹 发表于 2025-4-5 07:43 | 显示全部楼层
F4的ETH对DMA对齐有要求,你启用缓存的时候是不是忘了加SCB_CleanInvalidateDCache_by_Addr之类的操作?DMA用cache时容易出问题。
万图 发表于 2025-4-5 07:44 | 显示全部楼层
你用的什么开发板?官方的407E-DISC套件有个以太网扩展板,PHY是LAN8720还是DP83848?PHY芯片不一样初始化代码也可能要改。
Wordsworth 发表于 2025-4-5 07:45 | 显示全部楼层
你是不是把时钟源从SysTick改成了Timer?我记得lwIP默认是靠SysTick的,如果你改了没同步进去,timeout系统就可能卡住。
Bblythe 发表于 2025-4-5 07:45 | 显示全部楼层
你试过用DHCP吗?看看是不是只有静态IP的配置出问题了,DHCP有时候能帮忙发现网络层的问题。
Pulitzer 发表于 2025-4-5 07:46 | 显示全部楼层
建议你用HAL_ETH_ReadPHYRegister看一下PHY的寄存器,比如看Link状态(BMSR),确认是不是网线和PHY初始化有问题。
Uriah 发表于 2025-4-5 07:47 | 显示全部楼层
我那时候卡在ethernetif_init()的netif_add,结果发现是netif结构体没初始化好,你可以单步调一下看是不是过早调用了lwIP init。
Clyde011 发表于 2025-4-5 07:48 | 显示全部楼层
CubeMX默认生成的netif配置任务其实不适配FreeRTOS,得自己建个任务循环调用MX_LWIP_Process()或者直接自己撸网口任务。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

43

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部