找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4784|回复: 9
收起左侧

W5500资料与单片机源码(UDP,服务端,客户端模式)

  [复制链接]
ID:332794 发表于 2018-5-18 10:57 | 显示全部楼层 |阅读模式
W5500网络模块相关资料及51单片机和STM32应用程序的资料,STM32的程序资料太大无法添加到附件,如有需要可联系题主。
0.jpg

UDP模式例程:

* 描述    :W5500的端口0工作在客户端模式,主动与《TCP&UDP测试工具》上创建的服务端连接,
*             并且定时给服务端发送字符串"\r\nWelcome To YiXinElec!\r\n",同时将接
*             收到服务端发来的数据回发给服务端。
* 实验平台:用户51单片机开发板 + YIXIN_W5500以太网(TCP/IP)模块
* 硬件连接:  P3^2 -> W5500_RST   
*             P3^3 -> W5500_INT(本例程没有用到中断,此引脚可以不接)     
*             P3^6 -> W5500_SCS      
*             P3^7 -> W5500_SCK   
*             P3^4 -> W5500_MISO   
*             P3^5 -> W5500_MOSI  

---------------------------------------------------------------------

* 描述    :W5500的端口0工作在UDP模式,端口通信不需要建立连接即可接收其它UDP模式端口发来的数据,
*             数据的前4个字节为对方端口IP地址,第5、6个字节为端口号,获得对方IP和端口号后W5500端口0
*             将定时给对应端口发送字符串"\r\nWelcome To YiXinElec!\r\n",同时将接收
*             到的数据回发给对应端口。
* 实验平台:用户51单片机开发板 + YIXIN_W5500以太网(TCP/IP)模块
* 硬件连接:  P3^2 -> W5500_RST   
*             P3^3 -> W5500_INT(本例程没有用到中断,此引脚可以不接)     
*             P3^6 -> W5500_SCS      
*             P3^7 -> W5500_SCK   
*             P3^4 -> W5500_MISO   
*             P3^5 -> W5500_MOSI  


服务端模式单片机源程序如下:
  1. /***************************************************************************************
  2. * 描述    :W5500的端口0工作在服务端模式:等待《TCP&UDP测试工具》上创建的客户端主动与服务端连接,
  3. *                         连接成功后,服务端定时给客户端发送字符串"\r\nWelcome To YiXinElec!\r\n",
  4. *                         同时将接收到客户端发来的数据回发给客户端。
  5. * 实验平台:用户51单片机开发板 + YIXIN_W5500以太网(TCP/IP)模块
  6. * 硬件连接:  P3^2 -> W5500_RST   
  7. *             P3^3 -> W5500_INT(本例程没有用到中断,此引脚可以不接)     
  8. *             P3^6 -> W5500_SCS      
  9. *             P3^7 -> W5500_SCK   
  10. *             P3^4 -> W5500_MISO   
  11. *             P3^5 -> W5500_MOSI   

  12. * 淘宝    :http://yixindianzikeji.taobao.com/
  13. ***************************************************************************************/

  14. /*例程网络参数*/
  15. //网关:192.168.1.1
  16. //掩码:        255.255.255.0
  17. //物理地址:0C 29 AB 7C 00 01
  18. //本机IP地址:192.168.1.199
  19. //端口0的端口号:5000
  20. //端口0的目的IP地址:192.168.1.190
  21. //端口0的目的端口号:6000

  22. #include <reg51.h>
  23. #include "W5500.h"                               
  24. #include <string.h>

  25. void Delay(unsigned int d);                        //延时函数(ms)

  26. /*******************************************************************************
  27. * 函数名  : W5500_Initialization
  28. * 描述    : W5500初始货配置
  29. * 输入    : 无
  30. * 输出    : 无
  31. * 返回值  : 无
  32. * 说明    : 无
  33. *******************************************************************************/
  34. void W5500_Initialization(void)
  35. {
  36.         W5500_Init();                //初始化W5500寄存器函数
  37.         Detect_Gateway();        //检查网关服务器
  38.         Socket_Init(0);                //指定Socket(0~7)初始化,初始化端口0
  39. }

  40. /*******************************************************************************
  41. * 函数名  : Load_Net_Parameters
  42. * 描述    : 装载网络参数
  43. * 输入    : 无
  44. * 输出    : 无
  45. * 返回值  : 无
  46. * 说明    : 网关、掩码、物理地址、本机IP地址、端口号、目的IP地址、目的端口号、端口工作模式
  47. *******************************************************************************/
  48. void Load_Net_Parameters(void)
  49. {
  50.         Gateway_IP[0] = 192;//加载网关参数
  51.         Gateway_IP[1] = 168;
  52.         Gateway_IP[2] = 1;
  53.         Gateway_IP[3] = 1;

  54.         Sub_Mask[0]=255;//加载子网掩码
  55.         Sub_Mask[1]=255;
  56.         Sub_Mask[2]=255;
  57.         Sub_Mask[3]=0;

  58.         Phy_Addr[0]=0x0c;//加载物理地址
  59.         Phy_Addr[1]=0x29;
  60.         Phy_Addr[2]=0xab;
  61.         Phy_Addr[3]=0x7c;
  62.         Phy_Addr[4]=0x00;
  63.         Phy_Addr[5]=0x01;

  64.         IP_Addr[0]=192;//加载本机IP地址
  65.         IP_Addr[1]=168;
  66.         IP_Addr[2]=1;
  67.         IP_Addr[3]=199;

  68.         S0_Port[0] = 0x13;//加载端口0的端口号5000
  69.         S0_Port[1] = 0x88;

  70. //        S0_DIP[0]=192;//加载端口0的目的IP地址
  71. //        S0_DIP[1]=168;
  72. //        S0_DIP[2]=1;
  73. //        S0_DIP[3]=190;
  74. //       
  75. //        S0_DPort[0] = 0x17;//加载端口0的目的端口号6000
  76. //        S0_DPort[1] = 0x70;

  77.         S0_Mode=TCP_SERVER;//加载端口0的工作模式,TCP服务端模式
  78. }

  79. /*******************************************************************************
  80. * 函数名  : W5500_Socket_Set
  81. * 描述    : W5500端口初始化配置
  82. * 输入    : 无
  83. * 输出    : 无
  84. * 返回值  : 无
  85. * 说明    : 分别设置4个端口,根据端口工作模式,将端口置于TCP服务器、TCP客户端或UDP模式.
  86. *                        从端口状态字节Socket_State可以判断端口的工作情况
  87. *******************************************************************************/
  88. void W5500_Socket_Set(void)
  89. {
  90.         if(S0_State==0)//端口0初始化配置
  91.         {
  92.                 if(S0_Mode==TCP_SERVER)//TCP服务器模式
  93.                 {
  94.                         if(Socket_Listen(0)==TRUE)
  95.                                 S0_State=S_INIT;
  96.                         else
  97.                                 S0_State=0;
  98.                 }
  99.                 else if(S0_Mode==TCP_CLIENT)//TCP客户端模式
  100.                 {
  101.                         if(Socket_Connect(0)==TRUE)
  102.                                 S0_State=S_INIT;
  103.                         else
  104.                                 S0_State=0;
  105.                 }
  106.                 else//UDP模式
  107.                 {
  108.                         if(Socket_UDP(0)==TRUE)
  109.                                 S0_State=S_INIT|S_CONN;
  110.                         else
  111.                                 S0_State=0;
  112.                 }
  113.         }
  114. }

  115. /*******************************************************************************
  116. * 函数名  : Process_Socket_Data
  117. * 描述    : W5500接收并发送接收到的数据
  118. * 输入    : s:端口号
  119. * 输出    : 无
  120. * 返回值  : 无
  121. * 说明    : 本过程先调用S_rx_process()从W5500的端口接收数据缓冲区读取数据,
  122. *                        然后将读取的数据从Rx_Buffer拷贝到Temp_Buffer缓冲区进行处理。
  123. *                        处理完毕,将数据从Temp_Buffer拷贝到Tx_Buffer缓冲区。调用S_tx_process()
  124. *                        发送数据。
  125. *******************************************************************************/
  126. void Process_Socket_Data(SOCKET s)
  127. {
  128.         unsigned short size;
  129.         size=Read_SOCK_Data_Buffer(s, Rx_Buffer);
  130.         memcpy(Tx_Buffer, Rx_Buffer, size);                       
  131.         Write_SOCK_Data_Buffer(s, Tx_Buffer, size);
  132. }

  133. /*******************************************************************************
  134. * 函数名  : main
  135. * 描述    : 主函数,用户程序从main函数开始运行
  136. * 输入    : 无
  137. * 输出    : 无
  138. * 返回值  : int:返回值为一个16位整形数
  139. * 说明    : 无
  140. *******************************************************************************/
  141. int main(void)
  142. {
  143.         unsigned int W5500_Send_Delay_Counter =0;

  144.         Load_Net_Parameters();                //装载网络参数       
  145.         W5500_Hardware_Reset();                //硬件复位W5500
  146.         W5500_Initialization();                //W5500初始货配置
  147.         while (1)
  148.         {
  149.                 W5500_Socket_Set();//W5500端口初始化配置
  150.                
  151.                 W5500_Interrupt_Process();//W5500中断处理程序框架

  152.                 if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到数据
  153.                 {
  154.                         S0_Data&=~S_RECEIVE;
  155.                         Process_Socket_Data(0);//W5500接收并发送接收到的数据
  156.                 }
  157.                 else if(W5500_Send_Delay_Counter >= 3000)//定时发送字符串
  158.                 {
  159.                         if(S0_State == (S_INIT|S_CONN))
  160.                         {
  161.                                 S0_Data&=~S_TRANSMITOK;
  162.                                 memcpy(Tx_Buffer, "\r\nWelcome To YiXinElec!\r\n", 23);       
  163.                                 Write_SOCK_Data_Buffer(0, Tx_Buffer, 23);//指定Socket(0~7)发送数据处理,端口0发送23字节数据
  164. ……………………

  165. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
0.jpg
0.jpg

51单片机程序例程.rar

237.25 KB, 下载次数: 113, 下载积分: 黑币 -5

W5500封装库.rar

6.63 KB, 下载次数: 43, 下载积分: 黑币 -5

W5500开发官网资料.rar

13.02 MB, 下载次数: 95, 下载积分: 黑币 -5

芯片资料.rar

2.22 MB, 下载次数: 52, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:316613 发表于 2019-7-25 15:45 | 显示全部楼层
不错 代码好阅读 简介,好用 顶一个
回复

使用道具 举报

ID:20672 发表于 2019-9-27 08:32 | 显示全部楼层
谢谢分享~~
回复

使用道具 举报

ID:101832 发表于 2020-6-6 16:22 | 显示全部楼层
下载,试试咋样,学习了。谢谢楼主资料
回复

使用道具 举报

ID:101832 发表于 2020-6-6 16:34 | 显示全部楼层
好东西,下载试试
回复

使用道具 举报

ID:101832 发表于 2020-6-6 16:35 | 显示全部楼层
不错 代码好阅读 简介,好用 顶一个
回复

使用道具 举报

ID:900223 发表于 2021-4-3 10:43 | 显示全部楼层
stc89c52+w5500模块 单独RST置0 硬件复位,但是网卡link灯不亮,是不是复位没有成功,可能是什么问题?
回复

使用道具 举报

ID:508359 发表于 2022-2-16 10:19 | 显示全部楼层
不错的代码,谢谢了。
回复

使用道具 举报

ID:995755 发表于 2022-3-8 15:30 | 显示全部楼层
htiger189 发表于 2021-4-3 10:43
stc89c52+w5500模块 单独RST置0 硬件复位,但是网卡link灯不亮,是不是复位没有成功,可能是什么问题?

我也遇到相同情况,目前还没查出原因
回复

使用道具 举报

ID:932719 发表于 2023-6-13 11:14 | 显示全部楼层
请问有http的使用方法嘛?或者教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表