W5500的UDP建立过程也是非常方便的,通过简单的读写寄存器便可以轻松实现。程序初始化完成以后,进入主循环函数。当Socket处于关闭状态时,在进行通信之前,我们先将该UDP模式的Socket端口初始化。当socket将处� 初始化完成状态即SOCK_UDP状态,此时就可以通过广播方式发送数据了。在测试之前要注意两个问题,首先建议关闭PC的防火墙;其次,若W5500模块与PC直接通过网线连接,需要修改PC的IP地址为静态IP,且保持与W5500的IP� 同一个网段;如果直接连接路由器,可以不用修改PC的IP地址�
UDP通信流程图如�while(1) // Socket状态机 { switch(getSn_SR(0)) // 获取socket0的状� { case SOCK_UDP: // Socket处于初始化完�(打开)状� Delay_ms(100); if(getSn_IR(0) & Sn_IR_RECV) { setSn_IR(0, Sn_IR_RECV); // Sn_IR的RECV位置1 } // 数据回环测试程序:数据从远程上位机发给W5500,W5500接收到数据后再回给远程上位机 if((len=getSn_RX_RSR(0))>0) { memset(buffer,0,len+1); recvfrom(0,buffer, len, remote_ip,&remote_port); // W5500接收来自远程上位机的数据,并通过SPI发送给MCU printf("%s\r\n",buffer); // 串口打印接收到的数据 sendto(0,buffer,len, remote_ip, remote_port); // 接收到数据后再回给远程上位机,完成数据回� } break; case SOCK_CLOSED: // Socket处于关闭状� socket(0,Sn_MR_UDP,local_port,0); // 打开Socket0,并配置为UDP模式,打开一个本地端� break; } }UDP的测试步骤如�