微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > iEthernet W5200数据手册(版本1.2.4)之:功能说明

iEthernet W5200数据手册(版本1.2.4)之:功能说明

时间:09-18 来源:3721RD 点击:

发送的数据长度的计算方法是由之前Sn_TX_RD的数值与执行 SEND命令之后的数值的差别计算出来。如果实际发送的数据少于发送数据长度,SEND指令将会重试发送剩余的数据。因此,当实际发送数据的总与发送数据 的长度是相等时,表示SEND过程已完成。

一个发送过程的简单的例子如下:

例) Send Data Length Size = 10,

1) 连同发送的数据长度,执行SEND命令

2) 计算的实际发送的数据长度

如果实际发送的数据长度为7 (=Sn_TX_RD_after_SEND-Sn_TX_RD_befor_SEND),

剩余的数据长度= 3

3) 重试SEND命令直到实际发送的数据长度的总和与发送数据的长度是相同。

注意:不要复制的数据直到实际发送的数据长度的总是与发送数据的长度。

建立(ESTABLISHMENT) : 检查中断请求(FIN数据包)

检查是否收到中断请求(FIN包)。用户可以确认FIN数据包的接收如下。

建立(ESTABLISHMENT) : 检查中断或中断程序

当用户不再需要数据通讯,或当接收一个FIN数据包时,会中断Socket连接。

建立(ESTABLISHMENT) : 检查关闭

确认Socket n-th 是由DISCON或CLOSE命令而中断或关闭。

建立(ESTABLISHMENT) : 超时

超 时会由以下情况触发: 连接请求(SYN数据包)或它响应(SYN/ACK数据包)、数据包或它响应(DATA/ACK数据包)、中断请求(FIN数据 包)或它响应(FIN/ACK数据包)、传输所有的TCP数据包。如果它不能在RTR和RCR中配置的超时时间之内完全传输以上的数据包,那TCP会触发 最终超时(TCPTO)和Sn_SR的状态会设置为 SOCK_CLOSED。TCPTO的确认方法如下:

SOCKET关闭

它可以用来关闭 Socket n-th。其中可利用中断程序来中断、或利用TCPTO来关闭、或利

用主机的需要来关闭(没有中断程序)。

5.2.1.2 TCP 客户端

除了"CONNECT"状态外,与TCP服务器完全一样。用户可参考"5.2.1.1 TCP服务器"。

图 12 TCP客户端操作流程图

连接

发送连接请求(SYN包)到"TCP服务器"。当用套接字去连接服务器时,可能会触发像ARPTO、TCPTO这样的超时现象。

5.2.2 UDP

UDP 是一个非连接协议。它的通信不用"连接套接字"。TCP协议保证了可靠的数据通信,但基于UDP协议的数据报不能保证传输数据的可靠性。因为UDP不使用 "连接套接字",因此它可以通过已知的宿主IP地址和端口号与其他很多设备进行通信。只用一个Socket端口就能与其他设备进行通信,这是一个很大的优 势;但也有很多缺点,比如说丢失所传数据和从其他设备收到非计划接收数据等问题。为了避免这些问题以及保证可靠性,宿主采取重新传输损坏的数据或忽略从其 他设备发来的非计划接收数据。UDP协议支持单播、广播、多播的通信。

它遵循下面的通信流程:

图 13 UDP操作流程

5.2.2.1 单播和广播方式

单 播方式是UDP通信中的一种。它一次性将数据发到目的地。而广播式的通信则是用‘广播IP地址(255.255.255.255)’将数据发送到所有可以 接收的目的终端。例如,假设用户把数据发向A、B、C三个终端:单播传输模式每一次只能将数据发向A、B和C中的一个目的终端,

此 时,如果用户有A、B和C目的终端的MAC地址则即使有ARPTO也能实现通信。否则,用户不能将数据发送给有ARPT0的终端。广播方式传输能用 "255.255.255.255"或"本地地址|(子网地址)"一次性地同时将数据发到A、B和C这三个目的终端。这时候,没必要获取A、B和C的目的 终端MAC地址,而且ARPT0也不会被触发。

注意:广播IP

=>广播IP地址能通过子网掩码的位补码和宿主IP的‘位或’逻辑运算得到。

举例:如果IP是"222.98.173.123",子网掩码是"255.255.255.0",那广播IP应为"222.98.173.255"

套接字初始化

对 于UDP数据传输来说,套接字的初始化是必须的,它打开了套接字。套接字的打开过程如下所示:首先,选择W5200的其中的一个套接字(共8个),然后设 置已选套接字的协议类型(Sn_MR(P3:P0)),然后设置传输所用的源端口Sn_PORT0。最后执行OPEN命令。Sn_SR的状态将会被改为 SOCK_UDP.套接字初始化就完成了。

检查收到的数据

从目的终端检查收到的UDP数据。用户也可以检查通过TCP接收到的数据。但由于和TCP有相同的问题存在,强烈建议用户用第二种方法。请参考"5.2.1.1TCP服务器"

接收过程

在内部Rx缓存中处理接收到的UDP数据

接收到的UDP的数据结构如下所示:

图 14 接收UDP数据

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top