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

上传人:b****6 文档编号:4782353 上传时间:2022-12-08 格式:DOCX 页数:41 大小:358.31KB
下载 相关 举报
W5300控制器详细设计及使用说明文档.docx_第1页
第1页 / 共41页
W5300控制器详细设计及使用说明文档.docx_第2页
第2页 / 共41页
W5300控制器详细设计及使用说明文档.docx_第3页
第3页 / 共41页
W5300控制器详细设计及使用说明文档.docx_第4页
第4页 / 共41页
W5300控制器详细设计及使用说明文档.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

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

《W5300控制器详细设计及使用说明文档.docx》由会员分享,可在线阅读,更多相关《W5300控制器详细设计及使用说明文档.docx(41页珍藏版)》请在冰豆网上搜索。

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

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

 

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.W5300reset:

W5300工作之前,需要对其进行复位,复位低电平有效,并且至少保持2us(W5300不支持上电复位,必须通过‘/reset’接口对其进行复位)。

2.Waitforatleast10ms:

W5300复位后,需要等待至少10ms使得W500部锁相环稳定后,才能进行W5300初始化操作。

3.W5300initialization:

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

初始化分为3个步骤:

1)主机接口配置:

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

2)设置网络信息:

设置数据通信的基本信息(SHAR、GAS、SBUS和SIPR);设置重新发送的时间间隔和重发次数。

3)部TX/RX存储器分配:

定义部TX/RX存储器大小及SOCKTEn的TX/RX存储器大小。

4.Datacommunicate:

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

3流程控制

3.1W5300RESET

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

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

W5300不支持上电复位。

因此必须由外部系统给出复位信号。

在复位信号有效的2us期间,需要对‘BIT16EN’接口进行配置。

‘BIT16EN’为16/8位数据位选择,它确定W5300的数据位的宽度:

高电平选择16位数据位,低电平选择8位数据位。

在复位期间,它被锁存在模式寄存器(MR)的第15位,复位后它的改变不会产生影响。

即数据位的宽度在复位后不会发生改变。

图3.1-1W5300复位初始化

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-1MR寄存器

符号

说明

MR[15]

DBW

数据总线宽度

0:

8位数据总线宽度

1:

16位数据总线宽度

在W5300复位期间,这个值由BIT16EN引脚的电平确定。

复位后,这个值不改变。

MR[14]

MPF

MAC层终止数据报文

0:

正常报文

1:

终止报文

当从路由器或交换机收到终止报文时,该位置‘1’。

当设置为‘1’时,将停止数据传输,直到该位为‘0’

MR[13]

WDF2

写数据访问时间

当写数据操作时,/CS为低电平后,W5300在WDF×PLL_CLK时间后取写入的数据,如果主机写操作在WDF×PLL_CLK完成(/CS恢复为高电平),写入的数据在‘/CS’为高电平时取走

MR[12]

WDF1

MR[11]

WDF0

MR[10]

RDH

读数据保持时间

0:

没有数据保持时间

1:

数据保持时间为2×PLL_CLK

在主机进行读操作时,当主机的读操作完成(/CS恢复高电平)后,W5300在2×PLL_CLK时间之保持读取的数据。

在这种情况下,注意数据总线上的数据冲突

MR[9]

-

保留

MR[8]

FS

FIFO交换

0:

禁止交换

1:

允许交换

它用于高字节和低字节的交换。

W5300的字节一般采用大端模式。

如果主机系统采用小端模式,那么将该位置‘1’,将Sn_TX_FIFOR和Sn_RX_FIFOR的字节顺序交换,使用效果与小端模式相同

MR[7]

RST

软件复位

该位置‘1’,对W5300软件复位。

复位结束后自动清‘0’

MR[6]

-

保留

MR[5]

MT

存储器测试

0:

禁止部RX/TX存储器测试

1:

允许部存储器测试

一般来讲,W5300部TX存储器支持主机通过Sn_TX_FIFOR寄存器的写操作,而部RX存储器只支持主机通过Sn_RX_FIFOR寄存器的读操作。

如果该位置‘1’,部RX/TX存储器同时支出通过Sn_TX_FIFOR和Sn_RX_FIFOR的读写操作,从而校验部TX/RX存储器。

测试W5300部TX/RX完成后,需要对系统重新复位或关闭端口。

MR[4]

PB

Ping功能阻止模式

0:

允许Ping

1:

禁止Ping

自动Ping应答支持最多119个字节。

Ping功能阻止模式还需要考虑Sn_MR和Sn_PROTOR的设置。

MR[3]

PPPoE

PPPoE模式

0:

禁止PPPoE模式

1:

启动PPPoE模式

MR[2]

DBS

数据总线交换

0:

禁止交换

1:

允许交换

DBS位只交换Sn_TX_FIFOR/Sn_RX_FIFOR的高字节和低字节。

然而该位交换所有寄存器的高字节和低字节,包括Sn_TX_FIFOR/Sn_RX_FIFOR寄存器。

该位只有DBW为‘1’时有效。

MR[1]

-

保留

MR[0]

IND

间接总线模式

0:

直接总线模式

1:

间接总线模式

它设置W5300与主机的接口模式

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-1IR寄存器

符号

说明

IR[15]

IPCF

IP冲突

当IP地址产生冲突时,该位置‘1’时(当接收到ARP请求数据包的IP地址与W5300本机IP地址相同)。

当它置‘1’时,网络中的另外一个设备使用了相同的IP地址,将造成通信错误。

因此需要尽快采取措施解决这个问题。

IR[14]

DPUR

目标端口无法到达

当收到ICMP(目的端口无法到达)数据包时,该位置‘1’。

该中断用于UDP协议传输。

IR[13]

PPPT

PPPoE中止

在PPPoE模式,当与服务器连接关闭时,该位置‘1’。

IR[12]

FMTU

分片最大传输单元(MTU)

当收到ICMP(分片最大传输单元)数据包时,该位置‘1’。

在基于UDP协议传输时,需要考虑。

TCP协议下可以不需要考虑。

IR[11:

8]

-

保留

IR[7]

S7_INT

SOCKET7中断

当SOCKET7产生中断时,该位置‘1’。

该中断信息对应于S7_IR1。

当S7_IR1被主机清‘0’后,该位自动清‘0’。

IR[6]

S6_INT

SOCKET6中断

当SOCKET6产生中断时,该位置‘1’。

该中断信息对应于S6_IR1。

当S6_IR1被主机清‘0’后,该位自动清‘0’。

IR[5]

S5_INT

SOCKET5中断

当SOCKET5产生中断时,该位置‘1’。

该中断信息对应于S5_IR1。

当S5_IR1被主机清‘0’后,该位自动清‘0’。

IR[4]

S4_INT

SOCKET4中断

当SOCKET4产生中断时,该位置‘1’。

该中断信息对应于S4_IR1。

当S4_IR1被主机清‘0’后,该位自动清‘0’。

IR[3]

S3_INT

SOCKET3中断

当SOCKET3产生中断时,该位置‘1’。

该中断信息对应于S3_IR1。

当S3_IR1被主机清‘0’后,该位自动清‘0’。

IR[2]

S2_INT

SOCKET2中断

当SOCKET2产生中断时,该位置‘1’。

该中断信息对应于S2_IR1。

当S2_IR1被主机清‘0’后,该位自动清‘0’。

IR[1]

S1_INT

SOCKET1中断

当SOCKET1产生中断时,该位置‘1’。

该中断信息对应于S1_IR1。

当S1_IR1被主机清‘0’后,该位自动清‘0’。

IR[0]

S0_INT

SOCKET0中断

当SOCKET0产生中断时,该位置‘1’。

该中断信息对应于S0_IR1。

当S0_IR1被主机清‘0’后,该位自动清‘0’。

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-1TCP模式下数据通信工作流程

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-1Sn_MR寄存器

符号

说明

Sn_MR[15:

9]

-

保留

Sn_MR[8]

ALIGN

队列对齐

0:

不使用对齐

1:

使用对齐

只有在TCP模式下有效,在TCP通信过程中,当每次收到的数据包的字节数为偶数且该位置为‘1’时,接收数据可直接删去附在接收数据包中的PACKET-INFO(数据的字节数),使读取数据的操作大大增强。

Sn_MR[7]

MULTI

多播

0:

禁止多播

1:

允许多播

只有在UDP模式下有效

Sn_MR[6]

MF

MAC地址过滤

0:

禁止MAC地址过滤

1:

允许MAC地址过滤

只有在MACRAW模式下有效

Sn_MR[5]

ND

使用无延时的ACK

0:

禁止延时ACK选项

1:

允许延时ACK选项

只有在TCP模式下有效,当该位置‘1’,收到对端的数据包后立即发送ACK数据包响应。

建议将该位置‘1’,以提高TCP通信的性能。

Sn_MR[4]

-

保留

Sn_MR[3:

0]

P[3:

0]

协议类型。

它用于配置每个SOCKET的通信协议(TCP、UDP、IPRAW,MACRAW等)或PPPoESOCKET与PPPoE服务器之间的操作。

4’b0000:

SOCKETClosed;

4’b0001:

TCP;

4’bxxx0:

其它

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-1IR寄存器

符号

说明

Sn_IR[7]

PRECV

PPP接收中断

接收到不支持的可选数据(OptionData)时,该位置位。

Sn_IR[6]

PFAIL

PPP失败中断

PAP认证失败时该位置位

Sn_IR[5]

PNEXT

PPP下一过程中断

在PPPoE连接过程中,该过程改变时置位

Sn_IR[4]

SENDOK

发送完成中断

SEND命令完成后置位

Sn_IR[3]

TIMEOUT

超时中断

在ARP和TCP过程中超时置位

Sn_IR[2]

RECV

接收数据中断

端口从对端接收到数据时置位

Sn_IR[1]

DISCON

断开连接中断

接收到从对端来的FIN或FIN/ACK数据包时置位

Sn_IR[0]

CON

连接中断

与对端成功建立连接时置位

3.3.1.3SOCKETn目的IP地址寄存器

在TCP客户端模式下,运行CONNECT命令之前,必须将SOCKETn目的IP地址寄存器(Sn_DIPR)设置为TCP服务器的IP地址。

而在TCP服务器模式,当成功建立连接以后,它被W5300自动配置为TCP客户端的IP地址。

ØSn_DIPR0寄存器地址:

0x214(0x254、0x294)

ØSn_DIPR0寄存器配置值:

DIPR[31:

16]

ØSn_DIPR1寄存器地址:

0x216(0x256、0x296)

ØSn_DIPR1寄存器配置值:

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-1SOCKETn命令寄存器

命令

说明

0x01

打开端口

OPEN

它根据Sn_MR(P3~P0)所定义的协议类型初始化端口并打开端口

0x02

侦听

LISTEN

只有在TCP模式下有效(Sn_MR(P3:

P0)=Sn_MR_TCP)它将SOCKETn设置为TCP服务器模式。

它将改变Sn_SSR寄存器的SOCK_INIT为SOCK_LISTEN,以等待其它TCP客户端的连接请求(SYN数据包)当Sn_SSR为SOCK_LISTEN且成功处理了其它TCP客户端的连接请求时,Sn_IR(0)将置‘1’,而Sn_SSR变为SOCK_ESTABLISHED。

如果没有处理连接请求(SYN/ACK传输失败),TCP产生超时(Sn_IR(3)=1)且Sn_SSR变为SOCK_CLOSED

0x04

连接

CONNECT

它将端口设置为TCP客户端模式

它发送连接请求到由Sn_DIPR和Sn_DPORTR指定的TCP服务器。

当连接请求被成功处理(收到SYN/ACK数据包),Sn_IR(0)置‘1’,且Sn_SSR的状态变为SOCK_ESTABLISHED。

如果连接失败,可能有三种情况

1.ARP产生超时,因为目标硬件地址无法获得

2.没有收到SYN/ACK数据包而产生超时(Sn_IR(3)=1)

3.收到RST数据包而不是SYN/ACK数据包

以上三种情况Sn_SSR都将变为SOCK_CLOSED状态

0x08

断开连接

DISCON

不论是TCP服务器还是客户端,它都将执行断开连接的处理。

1.主动关闭:

它发送断开连接的请求(FIN数据包)到连接的对端

2.被动关闭:

当收到对端的断开连接请求(FIN数据包)时,它发送FIN数据包。

如果断开连接成功(收到对端的FIN/ACK数据包),Sn_SSR的状态将变为SOCK_CLOSED。

如果断开连接失败,产生TCP超时(Sn_IR(3)=1)且Sn_SSR的状态变为

SOCK_CLOSED。

另外,如果直接使用CLOSE命令而不是DISCON命令,只有Sn_SSR的状态变为SOCK_CLOSED,不产生断开连接的处理(断开连接的请求)。

如果在通信过程中收到对端发送来的RST数据包,Sn_SSR无条件变为SOCK_CLOSED状态。

0x10

端口关闭

CLOSE

关闭端口,Sn_SSR的状态变为SOCK_CLOSED。

0x20

发送数据

SEND

启动数据发送,发送的字节长度由Sn_TX_WRS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1