W5500socket寄存器使用说明.docx

上传人:b****7 文档编号:9729393 上传时间:2023-02-06 格式:DOCX 页数:20 大小:23.95KB
下载 相关 举报
W5500socket寄存器使用说明.docx_第1页
第1页 / 共20页
W5500socket寄存器使用说明.docx_第2页
第2页 / 共20页
W5500socket寄存器使用说明.docx_第3页
第3页 / 共20页
W5500socket寄存器使用说明.docx_第4页
第4页 / 共20页
W5500socket寄存器使用说明.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

W5500socket寄存器使用说明.docx

《W5500socket寄存器使用说明.docx》由会员分享,可在线阅读,更多相关《W5500socket寄存器使用说明.docx(20页珍藏版)》请在冰豆网上搜索。

W5500socket寄存器使用说明.docx

W5500socket寄存器使用说明

Socket端口寄存器

Sn3_MR(Socketn模式寄存器)[R/W][0x0000][0x00]

该寄存器用于配置所有SOCKET的选项或协议类型

7

6

5

4

3

2

1

·0

MULTI/MFEN

BCASTB

NO/MC/MMB

UCASTBMIP6B

P3

P2

P1

P0

Sn_MR描述

符号

说明

7

MULTI/MFEN

UDP多播模式(P[3:

0]=0010)

0:

关闭多播1:

开启多播

在MACRAW模式下开启地址过滤(P[3:

0]=0100)

0:

关闭MAC过滤1:

开启

6

BCASTB

MACRAW和UDP模式下的网络阻塞

0:

关闭广播阻塞1:

开启

在UDP模式(P[3:

0]=0010)可以屏蔽接收广播包在MACRAW模式P[3:

0]=0100)同样生效

5

NO/MC/MMB

使用无延时ACK

UseNoDelayedACK

0:

关闭无延时ACK选项

1:

开启无延时ACK选项

在TCP(P[3:

0]=0001)生效

多播

0:

使用IGM版本2

1:

使用IGM版本1

在UDP模式(P[3:

0]=0010)

且MULTI=1时生效

MACRAW模式多播阻塞

在MACRAWP[3:

0]=0100)生效。

4

UCASTBMIP6B

PingBlock模式

0:

关闭Pingblock

1:

启用Pingblock

如果该位设置为1ping请求就没有响应

3

P3

协议Protocol

P3

P2

P1

P0

含义

0

0

0

0

Close

0

0

0

1

TCP

0

0

1

0

UDP

0

1

0

0

MACRAW

MACRAW只有在Socket0下才能使用

2

P2

1

P1

0

P0

3n是Socket编号(0,1,2,3,4,5,6,7).n设置了SNUM[2:

0]控制位集nisSocketnumber(0,1,2,3,4,5,6,7).nisset‘SNUM[2:

0]’inControlBitssets.

Sn_CR(Socketn配置寄存器)[R/W][0x0001][0x00]

该寄存器用于设置Socketn的配置命令如OPEN、CLOSE、CONNECT、LISTEN、END和RECEIVE。

经W5500识别这一命令后,Sn_CR寄存器会自动清零为0×00。

尽管Sn_CR被清零为0×00,但命令仍在处理中。

为了验证该命令是否完成,请检查Sn_IR或Sn_SR寄存器。

符号

说明

0x01

OPEN

按照Sn_MR(P3:

P0)的协议选择来初始化和打开(open)Socketn-th。

下表显示了Sn_SR和Sn_MR的对应值。

Sn_MR(P[3:

0])

Sn_SR

Sn_MR_CLOSE(‘0000’)

Sn_MR_TCP(‘0001’)

SOCK_INIT(0x13)

Sn_MR_UDP(‘0010’)

SOCK_UDP(0x22)

S0_MR_MACRAW(‘0100’)

SOCK_MACRAW(0x02)

0x02

LISTEN

该位只在TCP模式(Sn_MR(P3:

Po)=Sn_MR_TCP)下生效。

在这种模式下,Socketn被配置为一个TCP服务器,它是等待“TCP客户端”的连接请求(SYN数据包)。

该Sn_SR寄存器由SocK_INIT改变为SOCK_LISTEN。

当一个TCP客户端的连接请求成功后该Sn_SR寄存器由SOCK_LISTEN改变为SOCK_ESTABBLIESHE.与此同时Sn_IR(0)会变为‘1’。

另一方面,当连接失败时,Sn_IR(3)被设置为'1'.Sn_SR改变为S0CK_CLOSED。

0x04

CONNECT

此模式只适用于TCP模式且运行Socketn作为TCP客户端。

通过与存储在目的地址寄存器(Sn_DIPR)和端口号寄存器(sn_DPORT)中的IP地址和端口号进行连接,一个连接请求被发送到TCP服务器。

当一个客户端的连接请求成功后sn_SR寄存器改为SOCK_ESTABLIESHED。

Sn_IR(0)会变为‘1’。

以下三种情况意味着连接请求失败:

1.ARPto发生超时(Sn_IR(s)=‘1')。

因为目的地的MAC地址不能通过ARP过程中获取。

2.当没有收到SYN/ACK数据包,而引起TCPTO(Sn_IR(3))被设置为‘1’时。

3.当RST数据包而不是SYN/ACK数据包被接收时。

以上三种情况下,Sn_SR会该为SOCK_CLOSED。

0x08

DISCON

只有在TCP模式下有效:

不论“TCP服务器”或“TCP客户端”,都使用DISCON断开。

0x10

CLOSE

关闭socketn

Sn_SR改为SOCK_CLOSED。

0x20

SEND

发送(SEND)Socketn发送(TX)内存中的所有缓冲数据。

0x21

SEND_MAC

只在UDP模式下有效

Ox22

SEND_KEEP

只在TCP模式下有效

0x40

RECV

通过使用接收读指针寄存器(Sn_RX_RD)来判定socketn接收缓存是否完成接收处理。

IR(中断寄存器)[R/W][0x0015][0x00]

中断寄存器(IR)指明了中断的状态。

IR的每一位都是‘0’,直到被主机写为‘1’.

如果IR不等于‘0×00’,INTn引脚将会被拉低。

直到其变为‘0×00’时,INTn才会被拉高。

7

6

5

4

3

2

1

0

CONFLICT

UNREACH

PPPoE

MP

Reserved

Reserved

Reserved

Reserved

表格IR说明

符号

说明

7

CONFLICT

IP冲突:

在收到APR请求时,发现发送方IP于本地IP重复,该位将置‘1’

6

UNREACH

目标不可抵达:

当接收到ICMP(目的端口不可达)包后,该位置‘1’。

当该位为‘1’时,通过相应的UIPR&UPORTR.可能查询到目标信息。

如:

IP地址和端口号。

5

PPPoE

PPPoE连接关闭:

当PPPoE模式下,PPPoE连接断开时,该位生效。

4

MP

MagicPacket:

当网络唤醒模式启用并通过UDP接收到MagicPacket网络唤醒时,该位生效。

3~0

Reserved

保留位

Sn_SR(Socketn状态寄存器)[R][0x0003][0x00]

Sn_SR指示了Socketn的状态,并根据Sn_CR或者一些TCP模式下的特殊控制包,如SYN,FIN包而改变。

Sn_SR状态描述

符号

说明

0x00

SOCK_CLOSED

该位指示了Socketn处于关闭状态,资源被释放。

当DICON,CLOSE命令生效或当触发超时中断时,W5500对应的Socketn会无视之前的状态,变为SOCK_CLOSED

0x13

SOCK_INIT

该位指示了Socketn端口打开并处于TCP工作模式。

当Sn_MR(P[3:

0])=’0001’且OPEN命令生效时,Sn_SR变为SOCK_INIT。

之后用户才可以使用LISTEN或CONNECT命令。

0x14

SOCK_LISTEN

该位指示着Socketn工作在TCP服务器模式下,且等待对方(TCP客户端)的连接请求(SYNPacket)。

当连接请求被成功接收以后,Socket_SR会变为SOCK_ESTALBLISHED状态。

否则将会在出发TCPt0超时中断之后,变为SOCK_CLOSED状态。

0x17

SOCK_ESTABLISHED

指示了Socketn的连接状态。

SOCK_LISTEN状态下,当TCP服务器处理TCP客户端的SYN请求包或当CONNECT命令配置成功时,变为SOCK_ESTABLISHED。

在此状态下,可以使用SEND或者RECV命令对数据包传输。

0x1C

SOCK_CLOSE_WAIT

指示Socketn接收到了来自连接对方发来的断开连接请求(FINpacket)。

这是一个瓣关闭的状态,可以进行数据传输。

若要全部关闭,需要使用DISCON命令。

而如果是要关闭Socket,需要使用CLOSE命令。

0x22

SOCK_UDP

指示了Socketn处于UDP模式下Sn_MR(P[3:

0])=’0010’。

当Sn_MR(P[3:

0])=’0010’且OPEN命令生效时,Sn_SR改变为SOCK_UDP。

不同于TCP模式,在这个模式下,数据包可以在无连接过程的情况下传输。

0x02

SOCK_MACRAW

指示了Socket0工作在MACRAW模式下SO_MR(P[3:

0])=’0100’且OPEN命令生效时,Sn_SR改变为SOCK_MACRAW.

如UDP模式一样,Socket0工作在MACRAW模式下时。

也能在无连接过程的情况下,实现MAC数据包(以太网帧)传输

Sn_SR临时状态描述

符号

说明

0x15

SOCK_SYNSENT

指示了Socketn已经发送连接请求(SYNPacket)到对方。

他显示了发送CONNECT命令后,Sn_SR从SOCK_INIT到SOCK_ESTABLISHED的临时状态。

如果此时,收到了来自对方的接受连接请求(SYN/ACKpacket)则,变为SOCK_ESTABLISHED.

否则,在TCPt0超时(Sn_IR[TIMEOUT]=’1’)中断之后,转变为SOCK_CLOSED。

0x16

SOCK_SYNRECV

指示Socketn成功的从对方收到了连接请求包(SYNpacket)。

如果Socketn成功的给对方发送了连接应答(SYN/ACKpacket),将转变为SOCK_ESTABLISHED状态。

否则,在出发超时中断(Sn_IR[TIMEOUT]=’1’)后,变为SOCK_CLOSED。

0x18

SOCK_FIN_WAIT

这些状况表示SOCKETn正在关闭。

这显示的是断开连接(主动关闭或被动关闭)的过程。

当断线程序成功完成或TCPTO(Sn_IR(超时)=’1’)发生时,它便会更改为SOCK_CLOSED。

0x1A

SOCK_CLOSING

0x1B

SOCK_TIME_WAIT

0x1D

SOCK_LAST_ACK

指示了Socketn在被动关闭状态下,正在等待对断开连接请求(FINpacket)做出回应(FIN/ACKpacket)。

当Socketn成功接收到了断开连接请求的回应或出发超时中断,则变为SOCK_CLOSED状态。

Sn_PORT(Socketn源端口寄存器)[R/W][0x0004-0x0005][0x0000]

该寄存器配置了Socketn的源端口号。

当Socketn工作在TCP或UDP模式下,该寄

存器生效。

注意:

必须在OPEN命令生效前,完成对该寄存器的设置。

例)如SOCKET0的端口=5000(0×1388),配置应如下,

0x0004

0x0005

0x13

0x88

Sn_DHAR(Socketn目的MAC地址寄存器)[R/W][0x0006-0x000B][0xFFFFFFFFFFFF]

Sn_DHAR寄存器指示的为:

UDP模式下,使用Send_MAC配置命令,配置Socketn

的目标主机MAC地址;或者CONNECT/SEND配置命令,ARP过程获取到的MAC地址。

例)如Socket0的目标MAC地址=08.DC.00.01.02.10,配置应如下

0x0006

0x0007

0x0008

0x0009

0x000A

0x000B

0x08

0xDC

0x00

0x01

0x02

0x0A

Sn_DIPR(Socket目标IP地址寄存器)[R/W][0x000C-0x000F][0x00000000]

Sn_DIPR配置或指示的为Socketn的目标主机IP地址,在TCP/UDP模式下生效。

在TCP客户端模式下,在CONNECT配置命令前,该寄存器设置了TCP服务器的IP

地址。

在TCP服务器模式下,他显示了在成功建立连接后,TCP客户端的IP地址;

在UDP模式下,他配置了对方主机的IP地址以供SEND或SEND_MAC配置命令后接收UDP包。

例)如Socket0的目标IP地址=192.168.0.11,配置应如下,

0x000C

0x000D

0x000E

0x000F

192(0xC0)

168(0xA8)

0(0x00)

11(0x0B)

Sn_DPORT(Socketn目标端口寄存器)[R/W][0x0010-0x0011][0x00]

Sn_DPORT配置或指示了Socketn的目标主机端口号,在TCP/UDP模式下生效。

在TCP客户端模式下,在CONNET配置命令前,该寄存器配置了TCPServer监听的端口号。

在TCP服务器模式下,他显示了在成功建立连接后,TCP客户端的端口号;

在UDP模式下,他配置了对方主机的端口号以供SEND或SEND_MAC配置命令后接收

UDP包。

例)如Socket0的目标端口号=5000(0×1388),配置应如下,

0x0010

0x0011

0x13

0x88

最大分段寄存器[R/W][0x0012-0x0013][0x0000]

该寄存器配置或显示了Socketn的最大传输单元MTU(MaximumTransferUnit)。

在TCP/UDP模式下,默认该寄存器设定的最大传输单元生效。

Mode

Normal(MR(PPPoE)=‘0’)

PPPoE(MR(PPPoE)=‘1’)

DefaultMTU

Range

Default

Range

TCP

1460

1~1460

1452

1~1452

UDP

1472

1~1472

1464

1~1464

MACRAW

1514

当Socketn处于MACRAW模式时,由于MTU不在内部处理,默认的MTU将会生效,因此,当传输的数据比默认的MTU大时,主机需要手动的将数据划分成默认MTU大小单元进行传输。

当Socketn处于TCP/UDP模式,而传输的数据比MTU大时,数据将会被自动的划分成默认MTU单元大小传输。

在UDP模式下,由于不像TCP模式那样涉及到一些连接过程,所以使用了MTU配置。

当不同大小的MTU数据传输给对方是时,可能会收到ICMP包(MTU分片)。

这样的话IR(FMTU)置‘1’,对方的信息如MTU大小以及IP地址将分别由FMTUR和UIPR指定。

如果IR[MTU]=‘1’,用户不能发送数据到对方。

如果要重新恢复与对方的通讯,可以按照以下操作:

1.通过CLOSED配置命令关闭Socket。

2.设置Sn_MSS指定FMTUR中的MTU。

3.通过OPEN配置命令打开Socketn。

4.重新与对方通信

例)如Socket0的MSS=1460(0x05B4)

0x0012

0x0013

0x05

0xB4

服务类寄存器[R/W][0x0015][0x00]

该寄存器设置在IP层里IPheader的TOS(TypeofService–服务类型)字段。

它应在执行OPEN命令之前设置。

生存时间寄存器[R/W][0x0016][0x80]

该寄存器设置在IP层里IP头的TTL(Time-To-Live–生存时间)字段。

它应在执行OPEN命令之前设置。

接收缓存大小寄存器[R/W][0x001E][0x02]

Sn_RXBUF_SIZE配置了Socketn的接收缓存大小。

Socketn接收缓存区大小可以配置为1,2,4,8和16Kbytes。

如果配置为其他大小,则W5500不能正常的从对方主机接收数据。

即使Socketn的接收缓存大小初始默认为2Kbytes。

用户仍然可以使用Sn_RXBUF_SIZE重新定义。

但是所有Socket接收缓存(Sn_RXBUF_SIZE)的总大小不能超16Kbytes。

否则,将会使得接收异常。

当所有的Sn_RXBUF_SIZE配置完成后,就会按照Socket0到7的顺序依次

将16Kbytes的接收内存分配给各个Socket作为接收缓存使用。

不论Socketn的接收缓存配置的大小如何,都可以被16位的偏移地址寻址找到。

(寻址范围:

0×0000到0xFFFF)

Value(dec)

0

1

2

4

8

16

Buffersize

0KB

1KB

2KB

4KB

8KB

16KB

例)Socket0RXBufferSize=8KB

0x08

0x001E

发送缓存大小寄存器[R/W][0x001F][0x02]

Sn_TXBUF_SIZE配置了Socketn的发送缓存大小。

Socketn发送缓存区大小可以配置为1,2,4,8和16Kbytes。

如果配置为其他大小,则W5500不能正常给对方主机发送数据。

即使Socketn的发送缓存大小初始默认为2Kbytes。

用户仍然可以使用Sn_RXBUF_SIZE重新定义。

但是所有Socket发送缓存的总大小不能超过16Kbytes。

否则,将会使得发送异常。

当所有的Sn_TXBUF_SIZE配置完成后,就会按照Socket0到7的顺序依次将16Kbytes的发送内存分配给各个Socket作为发送缓存使用。

不论Socketn的接发送存配置的大小如何,都可以被16位的偏移地址寻址找到。

(寻址范围:

0×0000到0xFFFF)

Value(dec)

0

1

2

4

8

16

Buffersize

0KB

1KB

2KB

4KB

8KB

16KB

例)Socket0TXBufferSize=4KB

0x001F

0x04

 

Sn_TX_FSR(Socketn空闲发送缓存寄存器)[R][0x0020-0x0021][0x0800]

Sn_TX_FSR显示了Socketn发送缓存的空闲空间大小。

该寄存器初始化配置为

Sn_TXBUF_SIZE大小。

当传输数据比Sn_TX_FSR大时,将不能保存到Socketn的发送缓存中。

因为多出来的数据会覆盖之前未传输完成的数据。

因此在向Socketn发送缓保存数据之前,需要先检

查一下数据大小是否等于或小于其剩余空间,然后再保存数据到发送缓存并通过SEND/SEND_MAC

配置命令发送。

如果数据比检查到的剩余空间大,需要将数据划分成小于或等于剩余空间的大小之后,

再保存数据到Socketn发送缓存。

如果Sn_MR(P[3:

0])不是TCP模式(‘0001’),W5500将计算发送写指针(Sn_TX_WR)和Socketn发送读指针之间的空间,并自动将数据划分成相应大小。

如果Sn_MR(P[3:

0])是TCP模式(‘0001’),W5500将计算发送写指针(Sn_TX_WR)与内部ACK指针(指示已经从连接对方接收数据的节点位置)之间的空间。

例)如2048(0×0800)在S0_TX_FSR时,

例)Incaseof2048(0×0800)inS0_TX_FSR,

0x0020

0x0021

0x08

0x00

Sn_TX_RD(Socketn发送读指针寄存器)[R][0x0022-0x0023][0x0000]

Sn_TX_RD寄存器可以通过OPEN配置命令进行初始化。

然而,如果Sn_MR(P[3:

0])是TCP模式(‘0001’),该寄存器将会在TCP连接期间,重新进行初始化。

该寄存器初始化之后,会根据SEND配置命令自增。

SEND配置命令传输的是Socketn发送缓存中,当前Sn_TX_RD到Sn_TX_WR之间保存的数据。

在传输完保存的数据之后,SEND配置命令会使得Sn_TX_RD等于Sn_TX_WR。

当Sn_TX_RD增加的值超出最大值0xFFFF(大于0×10000并产生进位),Sn_TX_RD会忽略进位,仅使用低16位的值。

Sn_TX_WR(Socketn发送写指针寄存器)[R/W][0x0024-0x0025][0x0000]

Sn_TX_WD寄存器可以通过OPEN配置命令进行初化。

然而,如果Sn_MR(P[3:

0])是TCP模式(‘0001’),该寄存器将会在TCP连接期间,重新进行初始化。

该寄存器需要读取或更新如下。

1.读取发送缓存中将要保存传输数据的首地址。

2.从Socketn的发送缓存对应的首地址开始,保存需要传输的数据;

3.在保存完传输数据之后,将Sn_TX_WR的值增加到传输数据大小。

如果增加后,超过最大值

0xFFFF(比0×10000大且产生进位),那么将自动忽略进位,并自动更新为低16位的值。

4.通过使用SEND命令发送保存在Socketn发送缓存中的数据。

Sn_RX_RSR(Socketn空闲接收缓存寄存器)[R][0x0026-0x0027][0x0000]

Sn_RX_RSR显示了Socketn接收缓存中已接收和保存的数据大小。

Sn_RX_RSR不会超过n_RXBUF_SIZE大小,且计算的为Socketn接收写指针(Sn_RX_WR)和Socketn接收读指针之间的空间大小。

例)如2048(0x0800)在S0_RX_RSR时,

0x0026

0x0027

0x08

0x00

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

当前位置:首页 > 总结汇报 > 学习总结

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

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