Zynq中lwip“自动协商失败(Auto negotiation error)”的解决办法

博主在将lwIP以太网程序移植到RedPitaya开发板时遇到自动协商失败的问题,通过调整lwIP配置解决了该问题。关键在于设置正确的以太网速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博主今天在将lwIP以太网程序移植到RedPitaya(火龙果)开发板上时,发现了一个问题。

我们一般都会使用SDK自带的“lwIP Echo Server”例程测试以太网硬件是否正确。然而在Redpitaya开发板上测试时出现了“自动协商失败(Auto negotiation error)”的问题,如下图。或者自动协商完成了,但以太网链路速度检测错误,如“autonegotiation complete; link speed for phy address 1: 0”,也完全没法用。

在这里插入图片描述
其实这是由于硬件的PHY芯片不支持自动协商导致的。《学会Zynq》系列第12篇详细介绍了lwIP库的配置,其中有个选项:phy_link_speed,其值默认为“AUTO”,表示由物理层自动协商链路速度,lwIP据此配置TEMAC/GigE,某些PHY可能不支持自动检测,此时这个值必须设置正确。

在这里插入图片描述
RedPitaya开发板的PHY芯片支持100M/1000M以太网,因此手动将其设置为1000Mbps。此时lwIP便不会自动协商,直接连接成功。

在这里插入图片描述
博主去年在第一次使用RedPitaya开发板时,使用以太网也出现了这个问题。但当时对lwIP了解的不多,百度也没有找的任何信息,毫无头绪,因此只好暂时放下。

今日重新拿起这个板子,使用时又出现了这个问题,然而博主已经对lwIP、TCP、UDP等有了较深的理解,有了一定的理论知识储备,马上也有了解决思路。

所以写代码前,最好不要直接上手修改别人的代码。有时间的情况下,还是先对理论知识有清晰的了解。这也是博主在总结《学会Zynq》系列时的总体方法。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值