你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32+DP83848+Lwip网线热插拔问题

[复制链接]
huhao-2025368 提问时间:2020-10-31 10:36 /
使用STM32+Lwip+DP83848进行网络通信,如果网线先插好,后板卡上电,通信正常;如果先上电,再插网线,通信异常。在网上看了很多贴子,都是检测到网线插入后重新对DP83848进行初始化,目前检测插拔的步骤已经完成,可重新对83848进行初始化设置后出现了问题,表现在1.网络还是无法正常通信;2.程序会出现卡死情况。现在想请问大家,为什么重新对83848进行再初始化配置会出问题,再配置初始化调用了Ethernet_Configuration();    LwIP_Init(IP);这两个函数。注:函数来源于STM32官方DEMO代码。

收藏 1 评论2 发布时间:2020-10-31 10:36

举报

2个回答
shenxiaolin_mai 回答时间:2020-11-3 10:34:44
这个有两个地方需要注意,在早期的LWIP的1.41的版本会出现ping超时的现象,是由于底层接受函数处理的问题,需要更改代码,网上的代码现成的,然后关于热插拔的问题,需要在任务函数增加重连机制,这样的话就不会出现这个现象了。
w014017 回答时间:2020-11-10 20:52:07
在主循环中加入网络状态检测,比如:
                       if(Check_Link_Status())
                        NVIC_SystemReset();//系统重启

在lwip.c中加个函数Check_Link_Status(void),如:
               static uint32_t Link_Reg = 0;
               uint8_t Check_Link_Status(void)
                {
                         uint32_t    i = 0;
       
                          HAL_ETH_ReadPHYRegister(&heth, PHY_SR, &i);
       
                            i = i & PHY_LINK_STATUS;
       
                            if(i != Link_Reg)//网口连接状态发生改变
                                       return 1;//system reset
                           else
                            {
                                       Link_Reg = i;
                                       return 0;
                            }       
                }

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版