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

一 实验硬件及其连接

attachment_id=6520" rel="attachment wp-att-6520" 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">

二 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 控制段:

attachment_id=6525" rel="attachment wp-att-6525" 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">

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观察实验现象

attachment_id=6524" rel="attachment wp-att-6524" 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">

执行网络调试助手软件,

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演示

欢迎登陆:

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

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

W5500EVB UDP模式的測试与理解的更多相关文章

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

    WIZnet 之前已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)数据传输的实现过程,那么传输控制协议中,UDP也是非常常用的,这种无连接的协议在更多场合为用户提供了便捷 ...

  2. Loopback測试软件AX1用户手冊 V3.1

    点击:AX1 软件下载 1. 什么是AX1 AX1程序是基于windows的PC程序,用来评估 iinChip™的性能,也即是wiznet的硬件TCP/IP芯片. AX1通过网络与iinChip™评估 ...

  3. Unity3D-RPG项目实战(4):角色性能測试

    前言 用一个新的引擎.还是要沉下心来学习.记得2007年用Unreal Engine 3做项目的时候.就有过慘痛的教训:前面话了个把月的时间学习Unreal.认为摸门了.于是就着急忙慌的进入项目正式开 ...

  4. OpenGL学习脚印:深度測试(depth testing)

    写在前面 上一节我们使用AssImp载入了3d模型,效果已经令人激动了.可是绘制效率和场景真实感还存在不足,接下来我们还是要保持耐心,继续学习一些高级主题,等学完后面的高级主题,我们再次来改进我们载入 ...

  5. spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)

    spark最新版公布了.之前的版本号就已经集成了graphx,这个版本号还改了一些bug. 我做了简单測试,只是网上关于集群模式执行spark资料太少了,仅仅有关于EC2(见參考资料1)的.可是还非常 ...

  6. java 搭建webservice服务+testclient測试

    整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...

  7. 玩转Linux网络namespace-单机自环測试与策略路由

    上周有厂商到公司測试,拿了一块据说非常猛的网络处理加速PCIe板卡,拎在手里沉甸甸的非常有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼. 可是,仅凭4个光口怎 ...

  8. .Net站点架构设计(八)測试

    .Net站点架构时间(八)測试 一般而言.总体測试策略是:先针对部分系统进行性能及压力測试,得到各部分的峰值处理性能:再模拟总体流程測试,此时倒不用依照峰值跑,重点測试总体业务流程及业务预期负荷. 在 ...

  9. PCI OP WiFi 測试(二):PCI对OP的要求

    PCI OP WiFi 測试(二):PCI对OP的要求 每次看PCI的文档.都一头雾水,本来就非常抽象.看英文就感觉更抽象.泛泛而谈的要求,看一次忘一次.仅仅好翻译成中文.没事就看看,知道指导思想. ...

随机推荐

  1. xtu字符串 D. 病毒侵袭

    D. 病毒侵袭 Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d      Java class nam ...

  2. Git上传的使用步骤

    Git上传的使用步骤 首先 git branch 查看当前的分支是否为本地自己分支 接着 git stash 保存本地自己的保存 git checkout earemote 查看本地共有开发分支 gi ...

  3. 66. No EntityManager with actual transaction available for current thread【从零开始学】

    [从零开始学习Spirng Boot-常见异常汇总] 具体异常信息: org.springframework.dao.InvalidDataAccessApiUsageException: No En ...

  4. 【数据传输 1】服务器—>客户端之间的数据类型转换

    导读:在做项目的时候,在controller中,将List数据类型转换为了JSON字符串,那么,为什么要将其数据转换为JOSN呢?这样的转换是否是必须的,在这个转换过程中,又经过了那些步骤?注:本篇博 ...

  5. hihocoder 1425What a Beautiful Lake(实验专用)

    Problem D. What a Beautiful Lake Description Weiming Lake, also named "Un-named Lake", is ...

  6. nginx1.6.3

    Nginx1.6.3安装配置 安装时关闭防火墙和selinuxservice iptables stopsed -i "s/selinux=enabled/selinux=disable/g ...

  7. Hashtable和HashMap 的区别

    Hashtable和HashMap 第一点不同 主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. 第二点不同 (也许 ...

  8. UINavigationController 小记

    1.以栈的形式管理视图控制器,push 和 pop 方法来弹入和弹出控制器,最多只能显示一个视图控制器. 2.使用pop方法可以移除栈顶控制器,当一个控制器被pop后,控制器内存会被释放了. 3.一层 ...

  9. React学习及实例开发(三)——用react-router跳转页面

    本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.定义路由 1.安装react-router npm install react-router@ --sav ...

  10. P2835 刻录光盘

    洛谷—— P2835 刻录光盘 题目描述 在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习.组委会觉得这个主意不错!可是组委会 ...