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

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

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

5 功能说明

通过设置一些寄存器和内存操作,W5200会提供互联网连接。本章描述了它如何可以操作。

5.1 初始化

基本设置

对于 W5200操作,选择和利用适当的寄存器(如下所示)。

1. 模式寄存器(MR)

2. 中断掩码寄存器(IMR)

3. 重试时间值寄存器(RTR)

4. 重试计算寄存器(RCR)

如欲了解更多以上寄存器的信息,请参阅"寄存器说明"。

网络设置信息

基本的网络信息设置以: 它必须设置基本的网络信息。

① SHAR(硬件源地址寄存器)

SHAR中的硬件源地址已经被规定,它使用的是以太网MAC层的唯一的MAC地址作为其硬件地址。IEEE负责管理MAC地址的分配。而生产网络设备的制造商会替其产品分配MAC地址。

如欲了解更多MAC地址分配详情,请参阅以下网址:

Uhttp://www.ieee.org/U, Uhttp://standards.ieee.org/regauth/oui/index.shtmlU

② GAR(网关地址寄存器)

③ SUBR(子网掩码寄存器)

④ SIPR(IP源地址寄存器)

设置Socket 的内存信息

这一步骤设置Socket发送或接收的内存信息。每个Socket的基址地址和掩码地址在这个步骤中被确定并保存。

图 9 Socket n-th内部发送或接收的内存配置数据通信

5.2 数据传输

完成初始化过程后,W5200可以‘开启’TCP、UDP、 IPRAW、MACRAW模式的Socket,对外传输和接收数据。 W5200可同时支持8个Sockets独立使用。在本节中,将会介绍每个模式的通讯方式。

5.2.1 TCP

TCP是一个面向连接(connection-oriented) 的协议。TCP使用其自己的IP地址、端口号、目标IP地址、目标端口号来建立连接Socket。然后通过此Socket发送和接收数据。

利用"TCP服务器"和"TCP客户端"两个方法来连接到Socket,然后通过传输连接请求(SYN数据包)来分开。

"TCP服务器"监听(Listen)由"TCP客户端"发出的连接请求,然后通过接受已发出的连接请求(被动打开) 建立连接Socket。

在"TCP客户端"先发送一个连接请求到"TCP服务器"来进行连接(主动打开)。

图 10 TCP服务器和TCP客户端

5.2.1.1 TCP 服务器

图 11 TCP服务器操作流程

套接字初始化

TCP 数据通信必需要套接字初始化。初始化会开启套接字。套接字的开启过程是选择W5200其中一个套接字,并在该套接字设置协议模式(Sn_MR)和源端口号 (Sn_PORT0 – 在"TCP服务器"中监听端口号),然后执行OPEN命令。执行命令之后,如果Sn_SR的状态被更改 为 SOCK_INIT,表示SOCKET初始化过程已完成。

套接字初始化过程在"TCP服务器"和"TCP客户端" 的应用是相同的。Socket n-th在TCP模

式下的初始化过程如下所示。

监听 (LISTEN)

用LISTEN命令以"TCP服务器"方式运行。

建立 (ESTABLISHMENT)

当Sn_SR的状态是SOCK_LISTEN时,如收到一个SYN数据包,Sn_SR的状态将被改为

SOCK_SYNRECV并会发送SYN/ACK数据包。之后,Socket n-th会建立一个连接。与Socket

n-th连接后,开始数据通信。有两种方法来确认Socket n-th的连接。

建立(ESTABLISHMENT) : 检查已接收的数据

确认TCP数据的接收。

方 法一:每当收到一个数据包, 把Sn_IR(RECV)设置为‘1’。如主机接收到下一个数据包时没有把Sn_IR(RECV)设置为‘1’,它便不能识 别下一个数据包的Sn_IR(RECV)。这是由于前一个的Sn_IR(RECV跟接下来的Sn_IR(RECV)重迭。,如果主机不能完全处理每个 Sn_IR(RECV)的数据包,这个方法便但是不建议。

建立(ESTABLISHMENT): 接收过程

在 这个过程中,它处理已接收在内部接收内存的TCP数据。在TCP模式下,如已接收的数据的大小大于Socket n-th的接收内存空间大小,W5200 便无法接收数据。如果提前将这种情况告知对方,W5200便会暂停连接,并等待,直到接收内存空间大小大于已接收的数据的大小。

建立(ESTABLISHMENT): 检查发送数据/发送过程

发 送数据的大小不能大于Socket n-th已分配内部的发送内存。如果传输数据的大小大于已配置的MSS,它会被划分为MSS的大小后再传输。要发送下 一个数据,用户必须确定前一个的SEND命令已完成。如果前一个的SEND命令未完成,继而执行令一个新的SEND命令时,可能会出现错误。而较大的数据 将会需要更多的时间来完成SEND命令。因此,用户应正确地划分数据传输。

如 想检查SEND命令是否完成,应检查发送数据的长度是否等于实际发送的数据长度。实际

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

网站地图

Top