目录
1.实验目标
2.实验准备
3.主流程图
4.驱动代码
5.实验步骤
1.实验目标
本实验使用W5500服务器功能,通过串口实现与本地客户端透传数据。
2.实验准备
硬件搭建:ZW-HC32F460-BZ标准版开发板1套
软件搭建:MDK5.22
3.主流程图

4.驱动代码
【W5500 tcp server函数】
该函数需要W5500在TCP模式下,才能当服务器使用。
void do_tcp_server(void)
{ 
  uint16 len=0; 
  switch(getSn_SR(SOCK_TCPS))                             // 获取socket的状态
  {
    case SOCK_CLOSED:                                     // socket处于关闭状态
      socket(SOCK_TCPS ,Sn_MR_TCP,local_port,Sn_MR_ND);   // 打开socket
      break;    
   
    case SOCK_INIT:                                       // socket已初始化状态
      listen(SOCK_TCPS);                                  // socket建立监听
      break;
   
    case SOCK_ESTABLISHED:                                // socket处于连接建立状态
   
      if(getSn_IR(SOCK_TCPS) & Sn_IR_CON)
      {
        setSn_IR(SOCK_TCPS, Sn_IR_CON);                   // 清除接收中断标志位
      }
      len=getSn_RX_RSR(SOCK_TCPS);                        // 定义len为已接收数据的长度
      if(len>0)
      {
        recv(SOCK_TCPS,tcp_server_buff,len);              // 接收来自Client的数据
        tcp_server_buff[len]=0x00;                        // 添加字符串结束符
        printf("%s\r\n",tcp_server_buff);
        send(SOCK_TCPS,tcp_server_buff,len);              // 向Client发送数据
      }
      break;
   
    case SOCK_CLOSE_WAIT:                                 // socket处于等待关闭状态
                     disconnect(SOCK_TCPS);                              // 断开当前TCP连接
      close(SOCK_TCPS);                                   // 关闭当前所使用socket
      break;
  }
}W5500作为服务器时,本机IP地址和端口号就是服务器的IP地址和端口号,如下所示:
/*定义默认IP信息*/
uint8 local_ip[4]={192,168,1,25};                                      /*定义W5500默认IP地址*/
uint8 subnet[4]={255,255,255,0};                                     /*定义W5500默认子网掩码*/
uint8 gateway[4]={192,168,1,1};                                      /*定义W5500默认网关*/
uint8 dns_server[4]={114,114,114,114};                           /*定义W5500默认DNS*/5.实验步骤
【第一步:新建/配置工程】
将DCHCP实验工程复制到实验目录下,将工程名改为W5500_Server,FWLibCfg.h文件中的配置与DCHCP实验一样。
【第二步:添加W5500模块应用驱动】
将W5500_APP头文件和源复制到\实验41 TCP Server实验\Hardware\Peripheral路径下,同时将文件添加到工程中Hardware/Peripheral下。

【第三步:初始化编程】
1)添加相关头文件
在main.c文件中添加。
#include "hc32_ddl.h"
#include "w5500_conf.h"
#include "w5500.h"
#include "W5500_APP.h"2)配置W5500的SPI引脚
配置与实验39:DHCP实验一致。
3)相关函数初始化
在main函数中初始化W5500相关函数
       HardwareInt();
       gpio_for_w5500_config();     //W5500 SPI接口reset 及中断引脚
       reset_w5500();                                          // w5500硬件复位
       PHY_check();              // 网线检测程序
       set_w5500_mac();          // 设置w5500MAC地址
       set_w5500_ip();                                         //配置W5500的IP地址
       socket_buf_init(txsize, rxsize);    // 初始化4个Socket的发送接收缓存大小
       printf("\r\n W5500为TCP Server,建立侦听。等待PC作为TCP Client建立连接。\r\n");
  printf(" TCP Server IP:%d.%d.%d.%d。\r\n",local_ip[0],local_ip[1],local_ip[2],local_ip[3]);
  printf(" TCP Server Port:%d。\r\n",local_port);
  printf(" 正常现象:连接成功,TCP Client发送数据给W5500,W5500将返回对应数据。\r\n");【第四步:W5500做TCP服务器等待连接】
使用do_tcp_server()函数在主循环中等待客户端连接。
       while(1)
       {
              do_tcp_server();
              Ddl_Delay1ms(10);
       }【第五步:下载验证】
将电脑和HC32F460开发板连接到同一个路由器,处于同一局域网下,连接好硬件,编译下载运行该程序,查看串口助手收到信息是否与自己配置的信息一致。

打开卓物物联网工具集合软件,选择网络工具类-TCP客户端,输入W5500服务器IP地址和端口号,连接即可。

在客户端发送区输入字符串“test”,发送成功后,接收区也会收到字符串“test”。

此时串口助手接受到字符串“test”。




















