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—传输控制协议提供的是面向连接、可靠的字节流服务。当客户和server彼此交换数据前。必须先在两方之间建立一个TCP连接,之后才干数据传输。TCP提供超时重发。丢弃反复数据,检验数据,流量控制等功能,保证数据能从一端传到还有一端。
每一个数据包的传输过程是:先建立链路、传输数据、然后清除链路。数据包不包括目的地址。受端和发端不但顺序一致,并且内容同样。它的可靠性高。
UDP—用户数据报协议是面向无连接的。每一个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中无论其顺序。数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况。通过请求重发来解决。
它的效率比較高,是一个简单的面向数据报的运输层协议。UDP不提供可靠性。它仅仅是把应用程序传给IP层的数据报发送出去,可是并不能保证它们能到达目的地。因为UDP在数据传输报前不用在客户和server之间建立一个连接。且没有超时重发等机制,故而传输速度非常快。
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地址 和port 发送数据 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 作为UDPport。
假设读取 socket 0为UDP模式则向 目标 IP地址 和port 发送数据 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 port8080
开发板IP:192.168.1.90 port8080
常态下 开发板发送 test 并计数 ,收到信息时会回复。关闭PC机port并再次打开会发现。部分UDP数据已经丢失了,这个和TCP 模式是不一样的。说明UDP在一定情况下会丢包,对数据完整性要求高的场合不能用。
五 总结
可通过本例程学习通过SPI接口配置W5500工作在UDP模式的方法。
很多其它学习笔记:
W5500EVB
TCP Client模式设置说明
p=6501" rel="bookmark" style="margin:0px; padding:0px; border:0px; font-family:inherit; font-size:undefined; font-style:inherit; font-variant:inherit; font-weight:inherit; line-height:inherit; vertical-align:baseline; color:rgb(33,117,155); text-decoration:none">W5500EVB
TCP Server演示
TCP Server演示
欢迎登陆:
WIZnet官方中文站点:http://www.iwiznet.cn
WIZnet官方微博:http://weibo.com/wiznet2012
W5500EVB UDP模式的測试与理解的更多相关文章
- W5500EVB UDP模式的测试与理解-新华龙电子
WIZnet 之前已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)数据传输的实现过程,那么传输控制协议中,UDP也是非常常用的,这种无连接的协议在更多场合为用户提供了便捷 ...
- Loopback測试软件AX1用户手冊 V3.1
点击:AX1 软件下载 1. 什么是AX1 AX1程序是基于windows的PC程序,用来评估 iinChip™的性能,也即是wiznet的硬件TCP/IP芯片. AX1通过网络与iinChip™评估 ...
- Unity3D-RPG项目实战(4):角色性能測试
前言 用一个新的引擎.还是要沉下心来学习.记得2007年用Unreal Engine 3做项目的时候.就有过慘痛的教训:前面话了个把月的时间学习Unreal.认为摸门了.于是就着急忙慌的进入项目正式开 ...
- OpenGL学习脚印:深度測试(depth testing)
写在前面 上一节我们使用AssImp载入了3d模型,效果已经令人激动了.可是绘制效率和场景真实感还存在不足,接下来我们还是要保持耐心,继续学习一些高级主题,等学完后面的高级主题,我们再次来改进我们载入 ...
- spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)
spark最新版公布了.之前的版本号就已经集成了graphx,这个版本号还改了一些bug. 我做了简单測试,只是网上关于集群模式执行spark资料太少了,仅仅有关于EC2(见參考资料1)的.可是还非常 ...
- java 搭建webservice服务+testclient測试
整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...
- 玩转Linux网络namespace-单机自环測试与策略路由
上周有厂商到公司測试,拿了一块据说非常猛的网络处理加速PCIe板卡,拎在手里沉甸甸的非常有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼. 可是,仅凭4个光口怎 ...
- .Net站点架构设计(八)測试
.Net站点架构时间(八)測试 一般而言.总体測试策略是:先针对部分系统进行性能及压力測试,得到各部分的峰值处理性能:再模拟总体流程測试,此时倒不用依照峰值跑,重点測试总体业务流程及业务预期负荷. 在 ...
- PCI OP WiFi 測试(二):PCI对OP的要求
PCI OP WiFi 測试(二):PCI对OP的要求 每次看PCI的文档.都一头雾水,本来就非常抽象.看英文就感觉更抽象.泛泛而谈的要求,看一次忘一次.仅仅好翻译成中文.没事就看看,知道指导思想. ...
随机推荐
- 发布tomcate时报A configuration error occurred during startup.please verify the preference field with the prompat:null
发布tomcate时报A configuration error occurred during startup.please verify the preference field with the ...
- reactNative 介绍
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的UI框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安 ...
- [转]Selenium-Webdriver系列Python版教程(1)————快速开始
elenium的历史,selenium2与WebDriver的关系本文就不讲了,想了解的同学们百度一下就可以Ok. 本系列教程是以Selenium-WebDriver的Python版本,首先从 ...
- 如何使用werkzeug创建WSGI APP
注意 : 1.定义__call__的意义 class App(): def __init__(self): pass def method(self): pass app=App() app() #错 ...
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)
A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 潜伏者(codevs 1171)
题目描述 Description [问题描述]R 国和S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的R 国间谍小C 终于摸清了S 国军用密码的编码规则:1. ...
- unbuntu下安装多个JAVA JDK版本及如何切换
当前环境已经安装过jdk1.6.0_45安装JDK 1.7.x时,若安装错误,可执行以下步骤:sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-ge ...
- vs2010 相对路径
相对路径是针对后缀为vcxproj文件而言的. 在VS的工程中常常要设置头文件的包含路径,当然你可以使用绝对路径,但是如果你这样设置了你只能在你自己的机器上运行该工程:如果其他人拷贝你的工程到其他机器 ...
- D. Spongebob and Squares--cf599D(数学)
http://codeforces.com/problemset/problem/599/D 题目大意:给你一个数k 让你求一个n*m的矩形里面包含k个正方形 输出有几个这样的矩形 分别是什么 ...
- MAC地址泛红攻击
一.环境 IP地址: Windows10 IP:10.13.153.55 Windows7: IP:192.168.83.130 Linux: IP:192.168.83.129 ...


