最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

单片机寄存器

IT圈 admin 37浏览 0评论

2024年3月14日发(作者:表乐芸)

端口(SOCKET)寄存器

1)Socket n的模式寄存器Sn_MR [R/W] [0x4000+0x0n00] [0x00]

该寄存器用于设置每个端口(SOCKET)的功能选项和协议类型。各位定义如下:

B7

MULT1

B6

MF

B5 B4

ND/MC Reserved

B3

P3

B2

P2

B1

P1

B0

P0

B7(MULTI):多播方式控制位,只有在UDP模式下有效(P3~P0:0010)。

0:禁止多播;1:允许多播。

为了使用多播,在打开SOCKET之前,应将多播分组的IP地址写到SOCKET n的目的

IP寄存器,将多播分组的端口号写到SOCKET n的目的端口号寄存器。

B6(MF):MAC地址过滤控制位,只用于MACRAW(P3~P0:0100)模式。

0:禁止MAC地址过滤;1:允许MAC地址过滤。

当该位置‘1’时,W5200只接收属于自己的数据包和广播的数据包;当该位为‘0 ’

时,W5200接收以太网上所有的数据包。当使用混合TCP/IP 协议栈时,建议将该位置‘1’,

以免主机过渡接收数据包。

B5(ND/MC):使用无延迟的应答(ACK)控制位。

0:禁止无延迟ACK选项;1:允许无延迟ACK选项。

只有在TCP模式(P3~P0:0001)下有效。如果该位设置为‘1’,在收到对端的数据包

后马上响应一个ACK数据包。如果该位清‘0’,ACK将根据内部时间溢出机制进行响应。

在MULTI置‘1’、且使用UDP模式(P3~P0:0010)时,该位为多播版本号选择控制

位(MC功能)。

0:使用IGMP版本2;1:使用IGMP版本1。

另外,多播也可以在诸如在线/离开/报告给多播分组等的IGMP信息中发送版本号。

B4:保留位。

B3~B0:设置端口的工作模式协议,如表6-9所示。

表6-9 端口的工作模式协议设置

P3

0

0

0

0

P2

0

0

0

0

P1

0

0

1

1

P0

0

1

0

1

意义

端口关闭

TCP

UDP

IPRAW

注:SOCKET 0可工作在MACRAW模式和PPPoE模式,其设置方法如表6-10所示。

表6-10 SOCKET 0的工作模式协议设置

P3

0

0

P2

1

1

P1

0

0

P0

0

1

意义

MACRAW

PPPoE

也就是说,S0_MR_MACRAW和S0_MR_PPPoE只能在SOCKET0工作。S0_MR_PPPoE

是临时用于与PPPoE服务器的连接和中断,连接建立以后,该端口可以用于其它协议。

2)Socket n命令寄存器Sn_CR [R/W] [0x4001+0x0n00] [0x00]

该寄存器用于设置SOCKET n的命令,诸如:打开、关闭、连接、侦听、发送、接收等

动作。W5200确认该命令以后,Sn_CR寄存器自动清零(0x00)。即使Sn_CR清零,指令仍

然在处理中。为了验证命令是否执行完成,可以检查Sn_IR寄存器或Sn_SR寄存器。该寄存

器不同的取值所代表的含义如表6-11所示。

1

表6-11 Socket n命令寄存器不同取值所代表的含义

值 符号 描述

根据Sn_MR(P3~P0)所选择的协议初始化并打开SOCKET n。与Sn_MR对

应的Sn_SR的值如下:

Sn_MR_CLOSE (0x00):无效

Sn_MR_TCP(0x01):SOCK_INIT(0x13)

Sn_MR_UDP(0x02):SOCK_UDP(0x22)

Sn_MR_IPRAW(0x03):SOCK_IPRAW(0x32)

S0_MR_MACRAW(0x04):SOCK_MACRAW(0x42)

S0_MR_PPPoE(0x05):SOCK_PPPoE(0x5F)

0x01 OPEN

0x02

0x04

0x08

0x10

0x20

0x21

0x22

0x40

该命令只有在TCP模式(Sn_MR(P3~P0)=Sn_MR_TCP)下有效。在这种

模式下,SOCKET n配置为TCP服务器,等待其它TCP客户端的连接请求(SYN

数据包)。Sn_SR寄存器从SOCK_INIT状态改变为SOCK_LISTEN状态。

当客户端的连接请求成功建立,Sn_SR寄存器的状态将从SOCK_LISTEN变

LISTEN

为SOCK_ESTABLISHED,且Sn_SR(0)的值置‘1’。如果连接失败(SYN/ACK

数据包发送失败),Sn_SR(3)置‘1’且Sn_SR变为SOCK_CLOSED。

如果在连接请求过程中TCP客户端的目标端口号不存在,W5200将发送一个

RST数据包,且Sn_SR的状态不变。

该命令只有在TCP模式下有效,且SOCKET n设置为TCP客户端。端口向

TCP服务器发出连接请求(SYN数据包)。TCP服务器的IP地址和端口号由目的

IP地址寄存器(Sn_DIPR0)和目的端口号寄存器(Sn_DPORT0)确定。

客户端的连接请求成功建立后,Sn_S将改变为SOCK_ESTABLISHED,且

Sn_IR(0)改变为‘1’。在下面几种情况下,连接请求失败:

CONNECT

 当一个ARP超时异常发生(Sn_IR(s)=1),表明没有能够通过ARP过

程获得目的硬件地址;

 没有接收到SYN/ACK数据包,且产生TCP超时异常(Sn_IR(3)=1;

 接收到RST数据包而不是SYN/ACK数据包。

在以上这些情况下,Sn_SR状态改变为SOCK_CLOSED。

该命令只有在TCP 模式下有效。不管是在TCP服务器还是TCP客户端,

该命令做断开连接的处理,有两种方式:

主动关闭:发送一个断开连接的请求(FIN数据包)到连接的对端。

被动关闭:当收到对端的FIN数据包时,回复一个FIN数据包到对端。

当收到FIN/ACK数据包时,Sn_SR的状态改变为SOCK_CLOSED。如果没

DISCON

有收到断开连接的请求,将产生TCP超时(Sn_IR(3)=1),且Sn_SR的状态改

变为SOCK_CLOSED。

例如:如果用CLOSE命令代替DISCON,Sn_SR的状态将变成CLOSED,

但不会有断开连接的过程(不产生断开连接的请求)。如果在通信过程中接收到

RST数据包,Sn_SR无条件地改变为SOCK_CLOSED。

CLOSE

关闭SOCKET。Sn_SR的状态改变为SOCK_CLOSED。

SEND命令将TX数据存储器中的所有数据都发送出去。详细信息请查看

SEND

SOCKET n的TX剩余空间大小寄存器(Sn_TX_FSR),SOCKET n的TX写指针

寄存器(Sn_TX_WR)和SOCKET n的TX读指针寄存器(Sn_TX_RD)。

该命令只有在UDP模式有效。其基本操作与SEND相同。但SEND操作需

SEND_MAC

要通过ARP(地址解析协议)过程获得目的硬件物理地址。SEND_MAC不需要

通过ARP获得目的硬件物理地址,由用户设置SOCKET n的目的硬件物理地址

该命令只有在TCP模式下有效。通过发送一个字节的数据检查连接的状态。

SEND_KEEP

如果没有对端的响应或中断,将产生超时中断。

RECV命令通过RX读指针寄存器(Sn_RX_RD)处理数据的接收。详细信息请

参考服务器模式接收处理:SOCKET n的RX接收数据长度寄存器(Sn_RX_RSR),

RECV

SOCKET n的RX写指针寄存器(Sn_RX_WR),SOCKET n的RX读指针寄存器

(Sn_RX_RD)。

2

2024年3月14日发(作者:表乐芸)

端口(SOCKET)寄存器

1)Socket n的模式寄存器Sn_MR [R/W] [0x4000+0x0n00] [0x00]

该寄存器用于设置每个端口(SOCKET)的功能选项和协议类型。各位定义如下:

B7

MULT1

B6

MF

B5 B4

ND/MC Reserved

B3

P3

B2

P2

B1

P1

B0

P0

B7(MULTI):多播方式控制位,只有在UDP模式下有效(P3~P0:0010)。

0:禁止多播;1:允许多播。

为了使用多播,在打开SOCKET之前,应将多播分组的IP地址写到SOCKET n的目的

IP寄存器,将多播分组的端口号写到SOCKET n的目的端口号寄存器。

B6(MF):MAC地址过滤控制位,只用于MACRAW(P3~P0:0100)模式。

0:禁止MAC地址过滤;1:允许MAC地址过滤。

当该位置‘1’时,W5200只接收属于自己的数据包和广播的数据包;当该位为‘0 ’

时,W5200接收以太网上所有的数据包。当使用混合TCP/IP 协议栈时,建议将该位置‘1’,

以免主机过渡接收数据包。

B5(ND/MC):使用无延迟的应答(ACK)控制位。

0:禁止无延迟ACK选项;1:允许无延迟ACK选项。

只有在TCP模式(P3~P0:0001)下有效。如果该位设置为‘1’,在收到对端的数据包

后马上响应一个ACK数据包。如果该位清‘0’,ACK将根据内部时间溢出机制进行响应。

在MULTI置‘1’、且使用UDP模式(P3~P0:0010)时,该位为多播版本号选择控制

位(MC功能)。

0:使用IGMP版本2;1:使用IGMP版本1。

另外,多播也可以在诸如在线/离开/报告给多播分组等的IGMP信息中发送版本号。

B4:保留位。

B3~B0:设置端口的工作模式协议,如表6-9所示。

表6-9 端口的工作模式协议设置

P3

0

0

0

0

P2

0

0

0

0

P1

0

0

1

1

P0

0

1

0

1

意义

端口关闭

TCP

UDP

IPRAW

注:SOCKET 0可工作在MACRAW模式和PPPoE模式,其设置方法如表6-10所示。

表6-10 SOCKET 0的工作模式协议设置

P3

0

0

P2

1

1

P1

0

0

P0

0

1

意义

MACRAW

PPPoE

也就是说,S0_MR_MACRAW和S0_MR_PPPoE只能在SOCKET0工作。S0_MR_PPPoE

是临时用于与PPPoE服务器的连接和中断,连接建立以后,该端口可以用于其它协议。

2)Socket n命令寄存器Sn_CR [R/W] [0x4001+0x0n00] [0x00]

该寄存器用于设置SOCKET n的命令,诸如:打开、关闭、连接、侦听、发送、接收等

动作。W5200确认该命令以后,Sn_CR寄存器自动清零(0x00)。即使Sn_CR清零,指令仍

然在处理中。为了验证命令是否执行完成,可以检查Sn_IR寄存器或Sn_SR寄存器。该寄存

器不同的取值所代表的含义如表6-11所示。

1

表6-11 Socket n命令寄存器不同取值所代表的含义

值 符号 描述

根据Sn_MR(P3~P0)所选择的协议初始化并打开SOCKET n。与Sn_MR对

应的Sn_SR的值如下:

Sn_MR_CLOSE (0x00):无效

Sn_MR_TCP(0x01):SOCK_INIT(0x13)

Sn_MR_UDP(0x02):SOCK_UDP(0x22)

Sn_MR_IPRAW(0x03):SOCK_IPRAW(0x32)

S0_MR_MACRAW(0x04):SOCK_MACRAW(0x42)

S0_MR_PPPoE(0x05):SOCK_PPPoE(0x5F)

0x01 OPEN

0x02

0x04

0x08

0x10

0x20

0x21

0x22

0x40

该命令只有在TCP模式(Sn_MR(P3~P0)=Sn_MR_TCP)下有效。在这种

模式下,SOCKET n配置为TCP服务器,等待其它TCP客户端的连接请求(SYN

数据包)。Sn_SR寄存器从SOCK_INIT状态改变为SOCK_LISTEN状态。

当客户端的连接请求成功建立,Sn_SR寄存器的状态将从SOCK_LISTEN变

LISTEN

为SOCK_ESTABLISHED,且Sn_SR(0)的值置‘1’。如果连接失败(SYN/ACK

数据包发送失败),Sn_SR(3)置‘1’且Sn_SR变为SOCK_CLOSED。

如果在连接请求过程中TCP客户端的目标端口号不存在,W5200将发送一个

RST数据包,且Sn_SR的状态不变。

该命令只有在TCP模式下有效,且SOCKET n设置为TCP客户端。端口向

TCP服务器发出连接请求(SYN数据包)。TCP服务器的IP地址和端口号由目的

IP地址寄存器(Sn_DIPR0)和目的端口号寄存器(Sn_DPORT0)确定。

客户端的连接请求成功建立后,Sn_S将改变为SOCK_ESTABLISHED,且

Sn_IR(0)改变为‘1’。在下面几种情况下,连接请求失败:

CONNECT

 当一个ARP超时异常发生(Sn_IR(s)=1),表明没有能够通过ARP过

程获得目的硬件地址;

 没有接收到SYN/ACK数据包,且产生TCP超时异常(Sn_IR(3)=1;

 接收到RST数据包而不是SYN/ACK数据包。

在以上这些情况下,Sn_SR状态改变为SOCK_CLOSED。

该命令只有在TCP 模式下有效。不管是在TCP服务器还是TCP客户端,

该命令做断开连接的处理,有两种方式:

主动关闭:发送一个断开连接的请求(FIN数据包)到连接的对端。

被动关闭:当收到对端的FIN数据包时,回复一个FIN数据包到对端。

当收到FIN/ACK数据包时,Sn_SR的状态改变为SOCK_CLOSED。如果没

DISCON

有收到断开连接的请求,将产生TCP超时(Sn_IR(3)=1),且Sn_SR的状态改

变为SOCK_CLOSED。

例如:如果用CLOSE命令代替DISCON,Sn_SR的状态将变成CLOSED,

但不会有断开连接的过程(不产生断开连接的请求)。如果在通信过程中接收到

RST数据包,Sn_SR无条件地改变为SOCK_CLOSED。

CLOSE

关闭SOCKET。Sn_SR的状态改变为SOCK_CLOSED。

SEND命令将TX数据存储器中的所有数据都发送出去。详细信息请查看

SEND

SOCKET n的TX剩余空间大小寄存器(Sn_TX_FSR),SOCKET n的TX写指针

寄存器(Sn_TX_WR)和SOCKET n的TX读指针寄存器(Sn_TX_RD)。

该命令只有在UDP模式有效。其基本操作与SEND相同。但SEND操作需

SEND_MAC

要通过ARP(地址解析协议)过程获得目的硬件物理地址。SEND_MAC不需要

通过ARP获得目的硬件物理地址,由用户设置SOCKET n的目的硬件物理地址

该命令只有在TCP模式下有效。通过发送一个字节的数据检查连接的状态。

SEND_KEEP

如果没有对端的响应或中断,将产生超时中断。

RECV命令通过RX读指针寄存器(Sn_RX_RD)处理数据的接收。详细信息请

参考服务器模式接收处理:SOCKET n的RX接收数据长度寄存器(Sn_RX_RSR),

RECV

SOCKET n的RX写指针寄存器(Sn_RX_WR),SOCKET n的RX读指针寄存器

(Sn_RX_RD)。

2

发布评论

评论列表 (0)

  1. 暂无评论