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