STM32
直播中

吴湛

10年用户 768经验值
擅长:可编程逻辑
私信 关注
[问答]

STM32+DP83848+Lwip网线热插拔,如果先上电,再插网线,通信异常为什么?

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

回帖(1)

崔映芬

2024-4-10 16:54:35
在主循环中加入网络状态检测,比如:
                       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;
                            }        
                }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分