文档库 最新最全的文档下载
当前位置:文档库 › W5300控制器详细设计及使用说明文档

W5300控制器详细设计及使用说明文档

目录

1引言 (3)

1.1编写目的 (3)

1.2定义 (3)

1.3参考资料 (3)

2W5300控制器的实现流程 (4)

2.1实现流程图 (4)

2.2流程简要说明 (4)

3流程控制 (5)

3.1W5300 RESET (5)

3.2W5300初始化 (5)

3.2.1数据位宽设置 (5)

3.2.2主机接口模式和时序设置 (5)

3.2.3host主机中断设置 (7)

3.2.4基本网络信息设置 (8)

3.2.5重新发送参数设置 (9)

3.2.6SOCKETn 的内部TX/RX 存储器空间分配设置 (9)

3.3数据通信 (10)

3.3.1SOCKET初始化 (11)

3.3.2SOCKET建链 (13)

3.3.3SOCKET数据通信 (16)

3.3.4SOCKET关闭 (17)

4逻辑实现方案 (17)

4.1逻辑架构 (17)

4.2接口控制模块 (18)

4.2.1读时序实现 (18)

4.2.2 写时序实现 (19)

4.2.3 实现状态机 (20)

4.2.4 接口定义 (21)

4.3主控制模块 (21)

4.3.1实现状态机 (21)

4.3.2接口定义 (22)

4.4初始化配置模块 (22)

4.4.1实现状态机 (22)

4.4.2接口定义 (23)

4.5SOCKET驱动模块 (23)

4.5.1实现状态机 (23)

4.5.2接口定义 (24)

5性能指标 (24)

5.1支持SOCKET数以及协议 (24)

5.2网络延时 (24)

5.3传输带宽 (24)

6使用指南 (25)

6.1接口说明 (25)

6.2配置参数说明 (27)

6.3关键时序 (27)

6.4状态寄存器 (27)

1引言

1.1编写目的

1.2定义

1.3参考资料

《High-performance_Internet_Connectivity_Solution_W5300_V1.2.3》 《W5300中文用户数据手册_V1.2.2》

2W5300控制器的实现流程

本W5300控制器在16位数据的直接模式地址方式的基础上实现。

2.1实现流程图

2.2流程简要说明

1.W5300 reset:W5300工作之前,需要对其进行复位,复位低电平有效,并且至少保持

2us(W5300不支持上电复位,必须通过…/reset?接口对其进行复位)。

2.Wait for at least 10ms:W5300复位后,需要等待至少10ms使得W500内部锁相环稳定

后,才能进行W5300初始化操作。

3.W5300 initialization:初始化W5300就是将相应的参数按照写时序要求写入寄存器。初

始化分为3个步骤:

1)主机接口配置:设置主机接口模式和时序,设置数据位宽,设置主机中断。

2)设置网络信息:设置数据通信的基本信息(SHAR、GAS、SBUS和SIPR);设置

重新发送的时间间隔和重发次数。

3)内部TX/RX存储器分配:定义内部TX/RX存储器大小及SOCKTEn的TX/RX存

储器大小。

4.Data communicate:对使用的COCKETn初始化,进行发送、接收数据及相关配置。

3流程控制

3.1W5300 RESET

通过W5300芯片的…/RESET?接口对芯片进行复位,低电平有效。

RESET信号低电平至少持续2us ,为了使锁相环逻辑稳定,复位信号恢复高电平后至少等待10ms,见图3.1-1。

W5300不支持上电复位。因此必须由外部系统给出复位信号。

在复位信号有效的2us期间,需要对…BIT16EN?接口进行配置。…BIT16EN?为16/8 位数据位选择,它确定W5300的数据位的宽度:高电平选择16位数据位,低电平选择8位数据位。在复位期间,它被锁存在模式寄存器(MR)的第15位,复位后它的改变不会产生影响。即数据位的宽度在复位后不会发生改变。

图3.1-1 W5300复位初始化

3.2W5300初始化

3.2.1数据位宽设置

数据位宽的设置可参见3.1节,根据实际使用,…BIT16EN?接口信号可以始终配置为…1?。

3.2.2主机接口模式和时序设置

主机的接口模式和时序设置即为对W5300的模式(MR)寄存器进行配置:

MR寄存器地址:0x000

MR基础器配置值:0xB800

下表3.2.2-1为MR寄存器的配置说明:

表3.2.2-1 MR寄存器

3.2.3host主机中断设置

主机中断设置即为对中断屏蔽寄存器进行配置,它配置W5300的中断并报告给主机。IMR 的每一个中断屏蔽位对应IR的每一个中断位。当IR的任何一个位为…1?且相应的IMR 位也为…1?时,将向主机产生中断(…/INT ?输出低电平)。如果相应的IMR位为…0?,将不产生中断(…/INT ?保持高电平),即使IR位为…1?。

IMR寄存器地址:0x004

IMR基础器配置值:0x80FF

下表2.2.3-1为IR寄存器的位说明,可以根据IR寄存器对IMR寄存器进行配置:

表3.2.3-1 IR寄存器

3.2.4基本网络信息设置

基本网络信息设置,即为对W5300的本机硬件地址(MAC)寄存器(SHAR)、网关IP 地址寄存器(GAR)、子网掩码寄存器(SUBR)和本机IP地址寄存器(SIPR)进行配置。

1)本机硬件地址(MAC)寄存器(SHAR)配置:

SHAR0寄存器地址:0x008

SHAR0寄存器配置值:MAC[47:32]

SHAR2寄存器地址:0x00A

SHAR2寄存器配置值:MAC[31:16]

SHAR4寄存器地址:0x00C

SHAR4寄存器配置值:MAC[15:0]

2)网关IP地址寄存器(GAR)配置:

GAR0寄存器地址:0x010

GAR0寄存器配置值:GAR[31:16]

GAR1寄存器地址:0x012

GAR1寄存器配置值:GAR[15:0]

3)子网掩码寄存器(SUBR)配置:

SUBR0寄存器地址:0x014

SUBR0寄存器配置值:SUBR [31:16]

SUBR1寄存器地址:0x016

SUBR1寄存器配置值:SUBR [15:0]

4)本机IP地址寄存器(SIPR)

SIPR0寄存器地址:0x014

SIPR0寄存器配置值:SUBR [31:16]

SIPR1寄存器地址:0x016

SIPR1寄存器配置值:SUBR [15:0]

3.2.5重新发送参数设置

重新发送参数设置,即为对W5300的重复发送超时寄存器(RTR)和重复发送计数寄存器(RCR)进行配置。

1)重复发送超时寄存器(RTR)用于配置重复发送超时周期的值。RTR的标准单位是

100us ,RTR初始化设置为2000(0x7D0 ),超时的时间周期为200ms。

RTR寄存器地址:0x01C

RTR寄存器配置值:0x07D0(200ms)

2)重复发送计数寄存器(RCR)用于配置重复发送的次数。当重复发送的次数达到

…RCR+1?时,将产生超时中断(Sn_IR 的…TIMEOUT?位置…1?)。

RCR寄存器地址:0x01E

RCR寄存器配置值:0x3(3次)

APP和TCP的超时计算可参见W5300的数据手册。

3.2.6SOCKETn 的内部TX/RX 存储器空间分配设置

W5300内部包含16个8K字节的存储单元。这些存储单元依次映射在128K字节的存储器空间。128K存储器分为发送存储器(TX)和接收存储器(RX)。内部TX和RX存储器以8K字节为单元分布在128K字节空间。内部TX/RX 存储器可以在0~64K 字节空间以1K字节为单元从新分配给每个SOCKET。

1)定义内部TX/RX 存储器大小可以在存储器单元类型寄存器(MYTPER)中配置,

每个8K字节的存储单元对应MTYPER的一个位。当该位为…1?时,它用于TX存

储器,当该位为…0?时,它用于RX存储器。MTYPER的低位都配置为TX存储器。

其余没有配置为TX存储器的都应该设置为…0?。

MYTPER寄存器地址:0x030

MYTPER寄存器配置值:0x00FF(平均分配)

2)每个SOCKET的内部TX存储器的大小由TX存储器大小配置寄存器(TMSR)配

置。每个SOCKET在复位后自动分配8K字节的TX存储空间。

TMS01R寄存器地址:0x020

TMS01R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x190E)

TMS23R寄存器地址:0x022

TMS23R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x1900)

TMS45R寄存器地址:0x024

TMS45R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x0000)

TMS67R寄存器地址:0x026

TMS67R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x0000)

3)每个SOCKET的内部RX存储器的大小由RX存储器大小配置寄存器(RMSR)配

置。

每个SOCKET在复位后自动分配8K字节的RX存储空间。

RMS01R寄存器地址:0x028

RMS01R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x190E)

RMS23R寄存器地址:0x02A

RMS23R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x1900)

RMS45R寄存器地址:0x02C

RMS45R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x0000)

RMS67R寄存器地址:0x02E

RMS67R寄存器配置值:高8位为SOCKET0的配置值,低8位为SOCKET1的配置值(0x0000)

3.3数据通信

完成初始化设置以后,W5300可以以TCP 、UDP、IPRAW 或MACRAW的方式打开SOCKET发送或接收数据。根据实际使用,在此只描述基于TCP协议的W5300工作方法。

在TCP 模式,首先要根据IP 地址和端口号与对端建立SOCKET连接。通过连接的SOCKET发送和接收数据。

建立SOCKET的连接有“TCP 服务器”和“TCP 客户端”之分。区分它们的方法是谁首先发送连接请求(SYS数据包)。“TCP 服务器”等待对端的连接请求,当收到连接请求时建立SOCKET连接(被动打开)。“TCP 客户端”主动发出连接请求,与对端建立连接(主动打开)。

下图3.3-1为W5300在TCP模式下数据通信的工作流程:

图3.3-1 TCP模式下数据通信工作流程

3.3.1SOCKET初始化

为了实现TCP 通信,需要对SOCKET进行初始化设置并打开SOCKET。为了打开SOCKET,选择其中的一个SOCKET(被选择的SOCKET称之为SOCKETn),通过SOCKETn 模式寄存器(Sn_MR) 和SOCKETn源端口号寄存器(Sn_PORTR)分别设置通信协议和本机端口号(在TCP 服务器模式,称之为侦听端口号),然后执行OPEN 命令。执行完OPEN 命令后,如果Sn_SSR 改变为SOCK_INIT,则SOCKET的初始化设置完成。

3.3.1.1SOCKETn 模式寄存器设置

SOCKETn模式寄存器(Sn_MR)用于配置SOCKET的协议类型及相关一些选项。

Sn_MR寄存器地址:0x200(0x240、0x280)

Sn_MR寄存器配置值:0x0121(队列对齐、允许无延时响应、TCP模式)下表2.3.1.1-1为SOCKETn模式寄存器(Sn_MR)的配置位说明:

表3.3.1.1-1 Sn_MR寄存器

3.3.1.2SOCKETn中断屏蔽寄存器设置

SOCKETn中断屏蔽寄存器(Sn_IMR)配置SOCKETn 向主机产生的中断,Sn_IMR的中断屏蔽位与SOCKETn中断寄存器(Sn_IR)是对应的。参考2.2.3主机中断设置。

Sn_IMR寄存器地址:0x204(0x244、0x284)

Sn_IMR寄存器配置值:0x001B(send_OK、timeout、discon、con)

下表3.3.1.2-1为Sn_IR寄存器的位说明,可以根据Sn_IR寄存器对Sn_IMR寄存器进行配置:

表3.3.1.2-1 IR寄存器

3.3.1.3SOCKETn目的IP 地址寄存器

在TCP 客户端模式下,运行CONNECT 命令之前,必须将SOCKETn目的IP 地址寄存器(Sn_DIPR)设置为TCP 服务器的IP 地址。而在TCP 服务器模式,当成功建立连接以后,它被W5300自动配置为TCP 客户端的IP 地址。

Sn_DIPR 0寄存器地址:0x214(0x254、0x294)

Sn_DIPR 0寄存器配置值:DIPR [31:16]

Sn_DIPR 1寄存器地址:0x216(0x256、0x296)

Sn_DIPR 1寄存器配置值:DIPR [15:0]

3.3.1.4端口号寄存器设置

端口号寄存器设置包括对SOCKETn源端口号寄存器(Sn_PORTR)和SOCKETn目的端口号寄存器(Sn_DPORTR)的配置。

1)SOCKETn源端口号寄存器(Sn_PORTR)用于配置源端口的端口号,必须在OPEN

命令之前设置。

Sn_PORTR寄存器地址:0x20A(0x24A、0x28A)

Sn_PORTR寄存器配置值:

2)SOCKETn目的端口号寄存器(Sn_DPORTR)用于设置SOCKETn 的目的端口号。

在TCP 客户端模式下运行CONNECT 命令之前,需要将它设置为处于TCP 服务

器模式下的侦听端口的端口号。而在TCP 服务器模式,当成功建立连接以后,它

被W5300自动配置为TCP 客户端的端口号。

Sn_DPORTR寄存器地址:0x212(0x252、0x252)

Sn_DPORTR寄存器配置值:

3.3.2SOCKET建链

基于TCP模式的SOCKET建链,建链过程中需要配置及查询SOCKETn命令寄存器(Sn_CR)、SOCKETn中断寄存器(Sn_IR)和SOCKETn 状态寄存器(Sn_SSR)。

SOCKETn命令寄存器地址:0x202(0x242、0x282)

SOCKETn中断寄存器地址:0x206(0x246、0x286)

SOCKETn 状态寄存器地址:0x208(0x248、0x288)

下表3.3.2-1为SOCKETn命令寄存器说明:

表3.3.2-1 SOCKETn命令寄存器

下表3.3.2-2为SOCKETn状态寄存器中与TCP模式相关的说明:

表3.3.2-2 SOCKETn状态寄存器

3.3.2.1SOCKET打开

运行OPEN命令将所操作的SOCKET打开。

1)打开设置

向SOCKETn命令寄存器(Sn_CR)写入OPEN命令:0x01;

2)打开状态查询

读取SOCKETn 状态寄存器(Sn_SSR),如果寄存器值为0x13(SOCK_LISTEN),

SOCKET即处于打开状态。

3.3.2.2SOCKET侦听

运行LISTEN命令将W5300设置为TCP 服务器模式。

1)侦听设置

向SOCKETn命令寄存器(Sn_CR)写入LISTEN命令:0x02;

2)侦听状态查询

读取SOCKETn 状态寄存器(Sn_SSR),如果寄存器值为0x14(SOCK_LISTEN),

SOCKET即处于侦听状态。

3.3.2.3SOCKET链接

运行CONNECT命令将W5300设置为TCP 服务器模式。

1)链接设置

向SOCKETn命令寄存器(Sn_CR)写入CONNECT命令:0x03;

2)链接状态查询

读取SOCKETn 状态寄存器(Sn_SSR),如果寄存器值为

0x17(SOCK_ESTABLISHED),或者检测到SOCKETn中断寄存器Sn_IR[0]被置为

…1?,则SOCKET即处于链接状态。链接成功后,需要将Sn_IR[0]的中断标识清除。

3.3.3SOCKET数据通信

3.3.3.1接收数据

检测是否接收到对端发送过来的数据,并做相应处理。

1)检测是否接收到数据

方法一:检测SOCKETn中断寄存器Sn_IR[2]是否被置为…1?,如果为…1?,则确认

为接收到对端发送过来的数据。

方法二:检测OCKETn接收数据的字节长度寄存器(Sn_RX_RSR)是否等于零,

如果不等于零,则确认为接收到对端发送过来的数据。

Sn_RX_RSR寄存器地址:

2)接收数据处理

步骤一:读取OCKETn接收数据的字节长度寄存器(Sn_RX_RSR),获取当前RX

memory中的数据长度。

步骤二:根据步骤一中获取的数据长度,通过SOCKETn RX FIFO寄存器

(Sn_RX_FIFOR)获取RX memory中的数据。

S n_RX_FIFOR寄存器地址:

步骤三:向SOCKETn命令寄存器(Sn_CR)写入RECV命令:0x40;

3)是否清楚接收中断

接收数据处理完成后,再次检查OCKETn接收数据的字节长度寄存器(Sn_RX_RSR)是否等于零,如果为零,则清除SOCKETn中断寄存器Sn_IR[2]的中断,否则不清

除。

3.3.3.2发送数据

将数据通过Sn_TX_FIFOR写入到内部TX存储器后,W5300将试着把数据发送到对端。发送数据的大小不能比分配给该SOCKETn 的内部TX存储器空间大。

为了下一次数据的发送,主机必须检查上次SEND 命令是否执行完毕。如果上一次的SEND 命令还没有执行完而又开始下一次的SEND 命令,将可能产生各种各样的错误。数据越大,执行SEND 命令所需要的时间就会越长。所以要想提高发送效率,适当将数据分为合适的大小发送。

1)在检测到有数据发送请求后,需要获取SOCKETn剩余存储空间寄存器

(Sn_TX_FSR)和SOCKETn中断寄存器(Sn_IR)。

当Sn_IR[0]等于…1?,且Sn_IR[4]等于…1?时(第一次发送数据除外),读取SOCKETn

剩余存储空间寄存器(Sn_TX_FSR)中的剩余存储空间,并清除Sn_IR[4]的中断(第

一次发送数据除外)。

Sn_TX_FSR寄存器地址:

2)通过SOCKETn TX FIFO寄存器(Sn_TX_FIFOR)发送待发数据,发送的数据量

不能超过Sn_TX_FSR中的剩余存储空间。

3)待发数据写入TX memory后,向SOCKETn命令寄存器(Sn_CR)写入SEND命

令:0x20;

3.3.4SOCKET关闭

3.3.

4.1断开链接处理

当接收到有对端的断开连接的请求(接收到FIN数据包),或者接收到上层应用的断链请求后,需要做断开链接处理。

1)检测到SOCKETn中断寄存器(Sn_IR)的Sn_IR[1]等于…1?时,确认为接收到接收

到对端的FIN数据包或者接收到对端的FIN/ACK 数据包,可以进行断开链接处理,

并将中断标志清除。

2)向SOCKETn命令寄存器(Sn_CR)写入DISCON命令,进行断开链接处理。

3.3.

4.2超时

超时可能发生在TCP 数据包传输过程中,如连接请求(SYN数据包)或其响应数据包(SYN/ACK数据包)、数据(DA TA数据包)或其响应数据包(DATA/ACK 数据包)、断开连接请求(FIN数据包)或其响应数据包(FIN/ACK 数据包)等等。

如果以上的数据包在RTR和RCR设定的时间内没有发送出去,那么将产生TCP 超时,且Sn_SSR 将改变为SOCK_CLOSED状态。

当检测到SOCKETn中断寄存器(Sn_IR)的Sn_IR[3]等于…1?时,既可以确认为数据通信产生了超时。

3.3.

4.3端口关闭

当接收到上层应用的关闭(复位)请求后,做SOCKET关闭处理。

1)初始化Sn_IR,即向Sn_IR写入初始值(为中断屏蔽寄存器的初始值)。

2)向SOCKETn命令寄存器(Sn_CR)写入CLOSE命令,进行端口关闭处理

4逻辑实现方案

根据上述的流程控制,及实际的应用要求,基于纯逻辑的W5300控制器的实现方案。

4.1逻辑架构

如下图4.1-1所示,整个实现逻辑可分为4模块:接口控制模块(Interface Control)、网络主控模块(Ethernet Main Control)、初始化配置模块(Initial Config)和端口驱动模块(SOCKETn Driver)。

图4.1-1 逻辑实现架构图

4.2接口控制模块

接口控制模块,Interface Control 主要完成对控制器读写W5300的操作信号进行时序转换,以满足W5300的读写时序要求。

4.2.1读时序实现

4.2.1.1时序要求

下图4.2.1.1-1为W5300读时序图:

图4.2.1.1-1 W5300读时序图

下表为读时序要求说明:

表4.2.1.1-1 W5300读时序要求

4.2.1.2逻辑实现时序

下图4.2.1.2-1为接口控制模块在逻辑中实现读时序(通过100M时钟实现):

图4.2.1.2-1 W5300读时序实现图

4.2.2写时序实现

4.2.2.1时序要求

下图4.2.2.1-1为W5300写时序图:

图4.2.2.1-1 W5300写时序图

下表为写时序要求说明:

4.2.2.2逻辑实现时序

下图4.2.2.2-1为接口控制模块在逻辑中实现写时序(通过100M时钟实现):

图4.2.2.2-1 W5300写时序图

4.2.3实现状态机

接口控制模块的实现状态机如下图:

图4.2.3-1 接口控制模块的实现状态机

状态机各状态说明:

1.timing_idle:状态机初始化,复位后后进入的状态,160ns后跳出。

2.CMD_rdfifo_judge:判断需要写入W5300的数据缓存fifo是否有数据,并寄存当前

fifo中的数据量。

3.rd_CMD_fifo:读取数据缓存fifo中的数据,该状态维持时间需要满足…tCSn?的时间

(如果时钟为100M,则该状态需要维持时间必须为30ns)。

相关文档
相关文档 最新文档