W5500EVB UDP模式的测试与理解

之前的博文中已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)数据传输的实现过程,那么传输控制协议中,UDP也是非常常用的,这种无连接的协议在更多场合为用户提供了便捷,比如发电子邮件,QQ聊天发收消息等…好,那今天就学习一下,UDP模式在W5500EVB上的简单实现。

一 实验硬件及其连接

二 UDP实验相关知识

W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),用户无需特别关注TCP 和 UDP的实现过程,只需最好相应配置和查询工作即可。下面主要讲解TCP和UDP区别,供参考

1 基于连接与无连接

TCP—传输控制协议提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

每个数据包的传输过程是:先建立链路、数据传输、然后清除链路。数据包不包含目的地址。受端和发端不但顺序一致,而且内容相同。它的可靠性高。

UDP—用户数据报协议是面向无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。它的效率比较高,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

2、对系统资源的要求(TCP较多,UDP少)

3、UDP程序结构较简单

4、流模式与数据报模式

5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

6、TCP是面可靠的字节流服务 ,UDP 并不提供对 IP协议的可靠机制、流控制以及错误恢复功能等

下图为TCP 和UDP应用

三 关键程序介绍

3.1编译工具为IAR5.4

3.2 1-5 UDP实验例程实现功能:

以UDP模式不断向 目标 IP地址 和端口 发送数据 test:ecountr,同时若收到 目标IP发来信息,将信息copy回复。本例中用网线直接和PC机相连接。PC机ip作为 目标ip ,注意PC机的IP与EVB IP处于同一网段内。

3.3 实验函数流程:

Step 1 :初始化STM32时钟 GPIO USART 等

Step2: 初始化SPI 和W5500

Step3: 配置MAC地址 本机IP地址 子网掩码 默认网关等信息,配置完后再读取以上信息,并打印到串口

Step4:初始化8 个socket

Step5 :实时读取socket 0状态,如果是socket 0是关闭的,则打开socket 0 作为UDP端口。如果读取 socket 0为UDP模式则向 目标 IP地址 和端口 发送数据 test:ecountr,同时若收到 目标IP发来信息,将信息copy回复。

3.4 部分子程序讲解

uint8 getSn_SR(SOCKET s)//获取SOCKET s状态

{

return IINCHIP_READ(Sn_SR(s));

}

/*W5500 SPI 通信协议的实现

W5500 SPI数据帧 有三种 依次为数据段 控制段 和数据段 */

uint8 IINCHIP_READ(uint32 addrbsb)

{

uint8 data = 0;

IINCHIP_ISR_DISABLE();    //关闭中断

IINCHIP_CSoff();       // CS=0, SPI使能片选

IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);// 写入地址段高8位 Address byte 1

IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);// 写入地址段低8位Address byte 2

IINCHIP_SpiSendData( (addrbsb & 0x000000F8))    ;// 以读模式写入控制段

data = IINCHIP_SpiSendData(0×00);  // 写入数据段

/*SPI主从接口相当于一个循环串行移位寄存器,主机(STM32)发送数据 0×00,从机(W5500)就会接手0×00,并移数据到主机当中,该函数返回值就是读的数据*/

IINCHIP_CSon();      // CS=1,  SPI end  失能片选

IINCHIP_ISR_ENABLE();       // 打开关中断

return data;

}

Sn_SR(s)函数原型为  (0×000308 + (ch<<5)) 为目的是获取socket s的状态寄存器地址,类似函数还有很多,主要是获取寄存器绝对地址

其中0×0003为socket n的状态寄存器 16位偏移地址,就是SPI通信的地址段

08 + (ch<<5) 为控制段,指出偏移地址的归属,读写模式和

SPI工作模式 ,08 = 00001000

SPI 控制段:

BSB4 BSB3 BSB2 就是ch表示地址是socket ch的状态寄存器地址

BSB1 BSB0 为选择寄存器类型 01指选择 socket寄存器

RWB :0读 1写

OM1 OM0 控制SPI为可变数据长度工作模式还是 固定数据长度工作模式

00 可变数据长度 (推荐使用可变数据长度工作模式)

01 1字节数据长度

10 2字节数据长度

11 4字节数据长度

四 程序下载和实验现象

4 .1 下载

打Flash loader 找到EVB的com 口,按BOOT0键使之为1,进入ISP模式进行下载。

4.2观察实验现象

运行网络调试助手软件,

PC机IP :192.168.1.119 端口8080

开发板IP:192.168.1.90 端口8080

常态下 开发板发送 test 并计数 ,收到信息时会回复,关闭PC机端口并再次打开会发现,部分UDP数据已经丢失了,这个和TCP 模式是不一样的。说明UDP在一定情况下会丢包,对数据完整性要求高的场合不能用。

五 总结

可通过本例程学习通过SPI接口配置W5500工作在UDP模式的方法。

更多学习笔记:

W5500EVB
TCP Client模式设置说明

W5500EVB
TCP Server演示

欢迎登陆:

WIZnet官方中文网站:http://www.iwiznet.cn

WIZnet官方微博:http://weibo.com/wiznet2012

时间: 2024-10-02 19:36:43

W5500EVB UDP模式的测试与理解的相关文章

W5500EVB UDP模式的测试与理解-新华龙电子

WIZnet 之前已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)数据传输的实现过程,那么传输控制协议中,UDP也是非常常用的,这种无连接的协议在更多场合为用户提供了便捷,比如发电子邮件,QQ聊天发收消息等…好,那今天就学习一下,UDP模式在W5500EVB上的简单实现. 一 实验硬件及其连接 二 UDP实验相关知识 W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案.W5500集成了TCP/IP协议栈,10/100M以

装饰者模式(不太理解的设计模式)

对于装饰者模式一直不太理解,不懂的他与桥接模式的区别在哪???? 23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰模式的特点编辑 (1) 装饰对象和真实对象有相同的接口.这样客户端对象就能以和真实对象相同的方式和装饰对象交互. (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求.它把

A/B测试的理解

关于A/B测试的理解: A / B测试 -->"对比测试" 是让两个版本的登陆页面的相互pk测试.看看哪个版本能更好地引导访问者达到你的预设目标,如注册或订阅.可以通过测试两个设计方式迥异的登陆页面或者尝试一些局部调整,例如某一版本基础上的细节微调形成另一版本. 在网站上运行A / B两个测试版,可以提升与访问者的有效沟通,同时可以基于真实用户群实际数据的反馈来实现重要的设计决断.通过掌握下面将详细讲述的各种工具的使用方法,对比测试的易用性会极大提升,甚至能够实现非技术人员的设计

我对测试的理解的变迁过程

从入行一开始就决定了不走技术路线,因为游戏之所以是游戏是因为其游戏性而不是技术性,我爱的是游戏,而不是技术. 1:刚入行的时候:找严重bug,或者操作步骤很多的bug,很有成就感,因为找到别人找不到的bug 2:后来意识到,基础的简单的bug价值不见得比严重的难找的bug价值低,开始转向追求覆盖.不漏基础简单的bug 3:开始关注流程,流程可以减少人为失误导致的bug,开始关注预防bug,特别是通过流程来预防人为bug 4:认为流程最重要,几乎所有的bug都可以通过流程来预防和解决 5:认为测试

用非GUI模式执行测试,[email&#160;protected] - PerfMon Metrics Collector会出现无法获取正确数据的解决办法

用非GUI模式执行测试,[email protected] - PerfMon Metrics Collector会出现无法获取正确数据(实际显示的是Response Times Over Time),解决办法:在GUI模式下,给[email protected] - PerfMon Metrics Collector指定一个已经存在的.jtl文件用于保存数据,如下图.然后非GUI模式执行测试后,打开该.jtl文件即可获得相应的数据.

简单使用SOCKET,TCP,UDP模式之间的通信

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1] 另一个重要的传输协议.在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层.不同主机的应用层之间经常需要可靠的.像管道一样的连接,但是IP层不提供这样的流机制,而是提

关于HA-MIR镜像双机虚拟IP与周立功CANET-200T采用UDP模式通讯技巧

系统环境 Windows Server2008R2 Enterprise X64: 双机热备软件HA-MIR: CAN通讯模块采用周立功CANNET-200T: 实验说明 本实验通过笔记本搭建VMware workstations 12版本虚拟机,分别创建两台Server2008 R2服务器两台,名称分别为主机servera和备机serverb虚拟机两台,并分别配置服务器为双网卡,网卡1作为心跳设置,网卡2作为业务IP使用,使用HA-MIR软件实现2台服务器的双击热备制作,需要对2台服务器的网卡

大数据架构和模式(三)——理解大数据解决方案的架构层

摘要:大数据解决方案的逻辑层可以帮助定义和分类各个必要的组件,大数据解决方案需要使用这些组件来满足给定业务案例的功能性和非功能性需求.这些逻辑层列出了大数据解决方案的关键组件,包括从各种数据源获取数据的位置,以及向需要洞察的流程.设备和人员提供业务洞察所需的分析. 概述 这个 “大数据架构和模式” 系列的 第 2 部分 介绍了一种评估大数据解决方案可行性的基于维度的方法.如果您已经使用上一篇文章中的问题和提示分析了自己的情况,并且已经决定开始构建新的(或更新现有的)大数据解决方案,那么下一步就是

jmeter的non-gui模式分布式测试

由于Jmeter是一个纯JAVA的应用,用GUI模式运行压力测试时,对客户端的资源消耗是相当惊人的,所以在进行正式的压测时一定要使用non-gui模式运行, 如果并发数很高或者客户端的硬件资源比较一般的话,还可以以server模式用多个client进行分布式测试. 准备工作 配置JMETER_HOME,步骤: Linux & MacOS X vim ~/.profile 在文件末尾增加以下代码: export JMETER_HOME=/yourpath/apache-jmeter-x.y #yo