lan8720ping不通|识别不到网线|0x7809

lan8720ping不通|识别不到网线|0x7809问题描述 根据正点原子的 LAN8720 原理图我自己画了一块板子 测试用的是 LWIP 的 TCP 客户端和服务器的两个例程 始终是无法通过初始化

大家好,欢迎来到IT知识分享网。

问题描述:根据正点原子的LAN8720原理图我自己画了一块板子,测试用的是LWIP的TCP客户端和服务器的两个例程,始终是无法通过初始化。

先说解决办法:是网口的4个电容容值标错了,应该使用10pf电容法,或者直接拆掉。

还需要注意差分对走线和阻抗匹配(100ohm阻抗),以保证稳定性。

前提概念

差分线:网线输入输出分别由两条差分线构成。

阻抗特性:再高速网络信号中,PCB走线需要达到指定的阻抗值。

网线阻抗值:100ohm 。

嘉立创PCB计算参数如下 线距6mil 到铜10mil,需要的线宽为9.09mil

lan8720ping不通|识别不到网线|0x7809

原理图如下,不说十分相似,也可以说是一模一样。

有一点需要注意,8720的复位引脚,原子的电路是通过一个三极管进行了取反操作,如果用GPIO复位,注意电平变化。

lan8720ping不通|识别不到网线|0x7809

 在初始化函数HAL_ETH_Init中有一条读取LAN8720状态寄存器,代码如下。运行过程中printf打印出来的数值为0x7809,while判断没有网线接入,那么问题就出现在LAN8720和网口之间。

 /* We wait for linked status */ do { //读取状态寄存器 HAL_ETH_ReadPHYRegister(heth, PHY_BSR, &phyreg); printf("PHY_BSR 01 :0x%x\r\n",phyreg); /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > LINKED_STATE_TIMEOUT_VALUE) { /* In case of write timeout */ err = ETH_ERROR; /* Config MAC and DMA */ ETH_MACDMAConfig(heth, err); heth->State= HAL_ETH_STATE_READY; /* Process Unlocked */ __HAL_UNLOCK(heth); return HAL_TIMEOUT; } }while (((phyreg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS));// //通过值判断是否链接网线。

网线是差分信号传输,感觉加电容不太合理,就把电容拆掉,然后就可以正常通信了。

lan8720ping不通|识别不到网线|0x7809

LAN8720手册给出的电路图中也并没有电容,不知道原子的板子为什么加电容,而且还没有问题。

lan8720ping不通|识别不到网线|0x7809

也可以加10pf电容(我没有测试)。

布局布线参考图

lan8720ping不通|识别不到网线|0x7809

设计参考文章链接https://www.cnblogs.com/tureno/articles/11829586.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139871.html

(0)
上一篇 2025-06-01 16:10
下一篇 2025-06-01 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信