0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32驱动W5500作为客户端进行通讯

jf_88434166 来源:jf_88434166 作者:jf_88434166 2025-10-14 17:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

模块简介

SR-ES1内嵌Wiznet的W5500芯片,使用硬件逻辑门电路实现TCP/IP协议栈的传输层及网络层(如:TCP,UDP,ICMP,IPv4,ARP,IGMP,PPPoE等协议),并集成了数据链路层,物理层,以及32K字节片上RAM作为数据收发缓存。使得上位机主控芯片,只需承担TCP/IP应用层控制信息的处理任务。从而大大节省了上位机对于数据复制、协议处理和中断处理等方面的工作量,提升了系统利用率及可靠性。
在操作过程中,用户可以近似的将W5500作为MCU的一个外设RAM来使用,非常简易。W5500对外接口为通用的80MHz高速SP1,供不同平台拓展高速以太网方案选用。自动协商LED状态显示SP接口速度快稳定性高。尺寸与引脚兼容Wiznet官方的模块WIZ820io。
W1.png

引脚说明

GND:地,电源
VIN3.3: ==3.3V==电源正
PWDN: 引脚用于断电模式
高电平: 断电模式启用
低电平: 正常模式启用
nREST: 该引脚低电平有效,用于复位重新初始化W5500
MISO: SPI主输入从输出.
MOSI: SPI主 输出从输入
SCLK: SPI时钟引脚
nSS: SPI片选引脚,低电平有效
nINT: 中断引脚,低电平有效

接线

使用的单片机STM32F103ZET6

STM32F103ZET6W5500
PC5RST
PC4INT
PA4CS
PA5SCK
PA6MISO(MI)
PA7MOSI(MO)
3.3VV
GNDG

代码

这里采用的是中断方式,W5500工作在客户端模式,并且以500ms的时间间隔定时给服务端发送字符串"rnWelcome To YOUXINDIANZI rn",电脑作为服务端接收数据,打开对应的测试软件可以接收到"Welcome To YOUXINDIANZI"的数据。
通讯之前需要设置好IP地址等参数,这里选择设置为与程序相同的IP地址和网关,具体设置如下。
目的IP地址是需要修改的电脑的IP地址参数,以及对应的网关和掩码。

/*例程网络参数*/
//网关: 192.168.1.1
//掩码: 255.255.255.0
//目的IP(电脑)地址: 192.168.1.190
//目的端口号: 6000

设置如图:

在这里插入图片描述

部分代码

这里仅展示5500初始化部分的代码,具体代码有需要下方留言哦!

void W5500_Init(void)
{
	u8 i=0;
	Write_W5500_1Byte(MR, RST);
	Delay(10);
	Write_W5500_nByte(GAR, Gateway_IP, 4);
	Write_W5500_nByte(SUBR,Sub_Mask,4);		
	Write_W5500_nByte(SHAR,Phy_Addr,6);		
	Write_W5500_nByte(SIPR,IP_Addr,4);		
	for(i=0;i< 8;i++)
	{
		Write_W5500_SOCK_1Byte(i,Sn_RXBUF_SIZE, 0x02);//Socket Rx memory size=2k
		Write_W5500_SOCK_1Byte(i,Sn_TXBUF_SIZE, 0x02);//Socket Tx mempry size=2k
	}
	Write_W5500_2Byte(RTR, 0x07d0);
	Write_W5500_1Byte(RCR,8);
	Write_W5500_1Byte(IMR,IM_IR7 | IM_IR6);
	Write_W5500_1Byte(SIMR,S0_IMR);
	Write_W5500_SOCK_1Byte(0, Sn_IMR, IMR_SENDOK | IMR_TIMEOUT | IMR_RECV | IMR_DISCON | IMR_CON);
}

测试是否通讯成功

将模块和STM32用杜邦线连接好,W5500端口连接电脑的网口,实际接线如图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/65fc3c365cdadec2dca71f11d5a41400.jpeg#pic_center =250x)
接好线后下载程序并运行,在PC端打开测试软件,填入服务端对应的IP地址和端口号,单击connect即可看到客户端发送过来的数据了,接收页面如下:
W3.jpeg

每隔500ms出现一次 Welcome To YOUXINDIANZI 就证明通讯成功了。
如果点击connect后没有出现数据,下方也没有出现客户端的地址,那可能是

  1. IP地址设置有误或者没有改IP地址
  2. 单片机下载程序后没有复位运行
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371180
  • 通讯
    +关注

    关注

    9

    文章

    940

    浏览量

    36361
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1418

    浏览量

    83020
  • 客户端
    +关注

    关注

    1

    文章

    305

    浏览量

    17415
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于W5500的Modbus TCP服务器设计

     前面我们设计实现了W5500驱动程序,也讲解了驱动的使用方式。在最近一次的项目应用中,正好有一个使用W5500实现TCP通讯的需求,所以
    的头像 发表于 12-14 16:03 4903次阅读
    基于<b class='flag-5'>W5500</b>的Modbus TCP服务器设计

    w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题

    测试1 w5500 作为tcp server,上位机labveiw程序作为clinet,正常第二次交互结束后,客户端发送一个【RST,ACK】报文断开了连接; (1)使用wiresha
    发表于 10-14 14:01

    W5500 keep-alive的用途与用法

    不上了。为什么?下面对这个问题进行解释说明,并提出解决办法。图1中的上位机程序作为客户端,连接W5500服务器。图2是对这个问题的wireshark抓包说明。其中192.168.11.
    发表于 08-04 09:44

    w5500 tcp客户端中断方式

    我想用w5500中断方式实现tcp客户端的功能,请问只需要对中断相关寄存器进行配置吗?spi程序需要使用中断方式接受发送数据吗?
    发表于 05-07 09:02

    W5500芯片通信问题

    w5500网络通信问题:电脑做服务器,w5500客户端,自发自收,500ms一次,刚开始正常,过一会电脑收到的数据就不对了,如图:可能是哪儿的问题, 程序里面的接收buff吗
    发表于 12-11 21:23

    w5500新手请教

    板子使用udp参考代码,然后网线连接pc通讯,使用tcpudp工具。发现:pc这边要使用服务器模式!为什么??然后是pc这边发送请求过去。不是应该是客户端先发送请求么???然后,还有一个问题,如果让
    发表于 04-07 16:02

    W5500连接自动断开的问题

    W5500设置为客户端模式,长时间运行,当运行几个小时后,发现W5500连接自动断开了,就好像是W5500死机一样,通过复位或者重新下载程序,回复正常,程序中设置有程序运行标志,并非
    发表于 12-06 09:49

    PC利用PHP编写socket实现与W5500之间通信

    有没有大佬能够利用PHP语言编写一个PC作为socket服务器与W5500作为客户端通信进行
    发表于 04-30 13:18

    基于FPGA和W5500的以太网传输系统实现

    W5500模块顶层综合RTL图2.4 系统测试本系统的设计,将下位机(FPGA和W5500作为服务器,上位机采用测试软件“TCP&UDP测试工具”作为
    发表于 08-07 10:10

    【求助】W5500UDP组播,客户端和服务区分?以及接收怎么加入组播组?

    本人学生,最近的项目用到STM32+W5500的开发板,需要用W5500完成UDP组播功能,目前有以下两个问题,求各位大神帮忙解答一下:1、UDP组播中客户端和服务怎么区分,比如电脑
    发表于 04-03 16:47

    【求助】W5500 UDP组播问题 怎么加入组播组

    本人学生,最近的项目用到STM32+w5500的开发板,需要用W5500完成UDP组播功能,目前有以下两个问题,求各位大神帮忙解答一下:1、UDP组播中客户端和服务怎么区分,比如电脑
    发表于 04-03 16:50

    以太网芯片W5500的移植过程

    W5500在单片机上的移植代码的移植代码的修改讲解为W550做客户端的例子,首先W5500作为一个以太网的芯片与单片机是通过SPI接口
    发表于 01-19 06:39

    STM32F103驱动W5500程序的问题

    我用STM32驱动W5500成功了,不过成立有个地方不明白,想请教大家。unsigned char Read_W5500_1Byte(unsigned short reg){
    发表于 01-15 16:53

    STM32L4R5硬件SPI驱动W5500网口的问题

    我用STM32F303硬件SPI驱动W5500网口好了,TCP服务器好了,UDP好了,只有TCP客户端不行。 这次我用STM32L4R5硬件
    发表于 06-07 16:46

    基于STM32F105RE和W5500的双CAN及硬件TCP通讯设计

    内容介绍: 1、8-28V输入 2、W5500硬协议TCP通讯,通过SPI与STM32通讯; 3、双CAN口,可进行双CANopen
    的头像 发表于 01-27 14:54 4609次阅读
    基于<b class='flag-5'>STM32</b>F105RE和<b class='flag-5'>W5500</b>的双CAN及硬件TCP<b class='flag-5'>通讯</b>设计