调试lan8720a遇到的奇葩问题,自动协商永远10M。

这里记录一下调试stm32f407+lan8720a遇到的奇葩问题,如果有朋友遇到了相同的问题,并且解决了的话欢迎评论或私信交流。
一、电路图
在这里插入图片描述
二、问题说明
lan8720采样自动协商模式,连接的是100M口的交换机,无论如何测试lan8720都工作在10M模式下,表现为speed led引脚输出高。
这时又会引来另一个问题,那就是由于speed led引脚输出高之后,由于speed led的初始电平决定了REFCLK/nINT引脚的功能,为高后该引脚默认作为INT功能,由于我的电路设计上将这个引脚配置为REFCLK输出,所以会出问题。表现出来的现象就是,上电后REFCLK输出正常,但是只要对芯片进行复位,则REFCLK会消失。还有就是不插网线的情况下,由于没有自动协商,无论怎么复位REFCLK都不会消失。这个问题后面通过减小speed led上的下拉电路解决。
后面为了将芯片强制设置到100M全双工模式,在csr_dv/mode2引脚上接了一个下拉电阻,设置mode[2:0]=011,此时禁止了自动协商功能,模式选择100M全双工模式,然后又出现了另一个问题,此时软件中读取phy的BSR寄存器bit2值为 0(link is down),软件中就会卡死在

do
    {
      timeout++;
    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO));

复位多次发现还是一样的情况。看来100M模式是有问题了,认命了10M就10M吧。
之后又去掉了MODE2上的下拉电阻,软件倒是没有卡在哪个地方,lwip成功的跑起来了,然后我就想ping一下看看,是不是能ping通,结果还是ping不通啊。由于没有用过10M模式的情况,不知道是不是软件上的处理有需要注意的地方。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶凋凌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值