如何实现STM32F407+LAN8720热插拔功能?

2019-07-20 02:33发布

  近期想实现一个LAN8720A热插拔功能,但是不想用跑什么UCOS等等系统,就是纯属裸跑,看了http://www.openedv.com/forum.php?mod=viewthread&tid=66604&highlight=%C8%C8%B2%E5%B0%CE 该作者的文章,释放了内存等等操作,但是还是不行。跪求论坛里的大神给点建议或者分享一下代码,因为搜索了一下关于网络这块的热插拔的相关内容,但是极少,希望大神们一起分享一下经验。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
1965969523
1楼-- · 2019-07-21 09:10
jiangyy 发表于 2019-3-4 13:23
你做过吗?分享一下

在stm32f4x7_eth.c中

  if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable)
  {  
    /* We wait for linked satus... */
    do
    {
      timeout++;
    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO));
    /* Return ERROR in case of timeout */
    if(timeout == PHY_READ_TO)
    {
      return ETH_ERROR;
    }
    /* Reset Timeout counter */
    timeout = 0;


中的ETH_AutoNegotiation_Disable,换成ETH_AutoNegotiation_Enable
ZHDX
2楼-- · 2019-07-21 14:36
我是用CubeMX生成的代码, 加CubeMX带的LAN8742, 直接用在LAN8720上完全OK.  热插拔也没任何问题.  就是程序方面需注意因为拔网线导致的通信超时问题, 做好重试的逻辑就可以了.
jiangyy
3楼-- · 2019-07-21 19:35
 精彩回答 2  元偷偷看……

一周热门 更多>