STM32 W5500 TCP Server 回环测试

12 篇文章 7 订阅
2 篇文章 0 订阅

做了STM32 W5500联网通讯几个月了,回头总结一下 STM32 W5500 的TCP Server要注意的一些点:

1、有好用的W5500基础支持库

2、在PC的CMD命令窗口中可以PING通W5500设备

3、在测试的时候,条件允许登录到路由器的管理页面,查看连接设备是否有W5500的有线连接(非必须)。

满足以上几点,基本可以测通TCP Server的回环测试了。

贴出测试的主函数代码:

#ifndef __STM32F10X_H
#define __STM32F10X_H
#include "stm32f10x.h"
#endif

#ifndef __Z_UTIL_TIME_H
#define __Z_UTIL_TIME_H
#include "z_util_time.h"
#endif

#ifndef __Z_HARDWARE_LED_H
#define __Z_HARDWARE_LED_H
#include "z_hardware_led.h"
#endif

#ifndef __Z_HARDWARE_SPI_H
#define __Z_HARDWARE_SPI_H
#include "z_hardware_spi.h"
#endif

#include "w5500.h"
#include "socket.h"
#include "w5500_conf.h"

uint8 buffer[2048];

int main(void)
{
	uint8 mac[6]={0x00, 0x0C, 0x32, 0xDA, 0x07, 0x4C};
	uint8 lip[4]={192,168,1,112};
	uint8 sub[4]={255,255,255,0};
	uint8 gw[4]={192,168,1,1};
		
	uint8 remote_ip[4] = {192,168,1,105};
	uint16 remote_port = 9000;
	uint16 local_port = 5000;
	uint16 len;
	u8 sock_status;
	
	init_led();
	init_system_spi();
	func_w5500_reset();
		
	setSHAR(mac);
  setSUBR(sub);
  setGAR(gw);
  setSIPR(lip);
	
	sysinit(txsize, rxsize);
	setRTR(2000);
  setRCR(3);
	setkeepalive(0);
	
//	socket(0,Sn_MR_UDP,local_port-1,0);
//	buffer[0] = 0x55;
//	buffer[1] = 0xAA;
//	len = 2;
//	sendto(0, buffer, len, remote_ip, remote_port);
	

	for(;;)
	{	
		sock_status = getSn_SR(1);
		switch(sock_status)
		{
			case SOCK_CLOSED:
				socket(1 ,Sn_MR_TCP,local_port,Sn_MR_ND);
				break;    
			case SOCK_INIT:
				listen(1);
				break;		
			case SOCK_ESTABLISHED:		
				if(getSn_IR(1) & Sn_IR_CON)
				{
					setSn_IR(1, Sn_IR_CON);
				}
				len=getSn_RX_RSR(1);
				if(len>0)
				{
					len = recv(1, buffer, len);
					send(1, buffer, len);
				}
				break;
			case SOCK_CLOSE_WAIT:
				close(1);
				break;
		}
						
		func_led1_on();
		delay_ms(500);
		func_led1_off();
		delay_ms(500);
		
	}
	
	
}

通过PC的CMD命令窗口PING设备:

回环测试的效果如下:

W5500的库函数,可以参考 《测试工程代码00_W5500_ping.rar》。

将以上的主函数替换到工程的主函数即可。

TCP Server的拓展应用场景,可以做一个小型的嵌入式Web网站。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值