w5500 PHY和作为TCPCLIENT 断线重连问题请教?

2020-01-01 17:49发布

各位好:
        自己做了一块STM32+W5500 板,有两个问题请教一下
        1 , 发现如果不插网线的话,板子的程序好像允许不下去,插入网线后,程序继续执行,好像在网络初始化的时候,会等待网线状态?
        2 ,做了一个tcp client 客户端,如果TCP服务端先打开,在执行程序,tcp client 能连接上,如果服务端断开重新打开,就连接不上?网络断了 如何重连?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
zcllom
2020-01-03 15:39
楼主的第二个问题实际上是个普遍现象,原因就在于int8_t connect(uint8_t sn, uint8_t * addr, uint16_t port)这个函数
wiznet公司写的有问题。尤其是
while(getSn_SR(sn) != SOCK_ESTABLISHED)
{
       if (getSn_IR(sn) & Sn_IR_TIMEOUT)
      {
                setSn_IR(sn, Sn_IR_TIMEOUT);
                #if _WIZCHIP_ == 5200   // for W5200 ARP errata
                        setSUBR((uint8_t*)"x00x00x00x00");
                #endif
                return SOCKERR_TIMEOUT;
        }
}

它几乎不能执行return return SOCKERR_TIMEOUT;
导致connect卡死在这里。。。
查到这个原因后,我改造了它,用定时器监测这个函数的运行,如果超过2秒,没有connect上,直接跳到return SOCKERR_TIMEOUT; 然后再connect,总有一次能够连上服务器

一周热门 更多>