您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > W5500(socket)寄存器使用说明
Socket端口寄存器Sn3_MR(Socketn模式寄存器)[R/W][0x0000][0x00]该寄存器用于配置所有SOCKET的选项或协议类型7654321·0MULTI/MFENBCASTBNO/MC/MMBUCASTBMIP6BP3P2P1P0Sn_MR描述位符号说明7MULTI/MFENUDP多播模式(P[3:0]=0010)0:关闭多播1:开启多播在MACRAW模式下开启地址过滤(P[3:0]=0100)0:关闭MAC过滤1:开启6BCASTBMACRAW和UDP模式下的网络阻塞0:关闭广播阻塞1:开启在UDP模式(P[3:0]=0010)可以屏蔽接收广播包在MACRAW模式P[3:0]=0100)同样生效5NO/MC/MMB使用无延时ACKUseNoDelayedACK0:关闭无延时ACK选项1:开启无延时ACK选项在TCP(P[3:0]=0001)生效多播0:使用IGM版本21:使用IGM版本1在UDP模式(P[3:0]=0010)且MULTI=1时生效MACRAW模式多播阻塞在MACRAWP[3:0]=0100)生效。4UCASTBMIP6BPingBlock模式0:关闭Pingblock1:启用Pingblock如果该位设置为1ping请求就没有响应3P3协议ProtocolP3P2P1P0含义0000Close0001TCP0010UDP0100MACRAWMACRAW只有在Socket0下才能使用2P21P10P03n是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寄存器。值符号说明0x01OPEN按照Sn_MR(P3:P0)的协议选择来初始化和打开(open)Socketn-th。下表显示了Sn_SR和Sn_MR的对应值。Sn_MR(P[3:0])Sn_SRSn_MR_CLOSE(‘0000’)Sn_MR_TCP(‘0001’)SOCK_INIT(0x13)Sn_MR_UDP(‘0010’)SOCK_UDP(0x22)S0_MR_MACRAW(‘0100’)SOCK_MACRAW(0x02)0x02LISTEN该位只在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。0x04CONNECT此模式只适用于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。0x08DISCON只有在TCP模式下有效:不论“TCP服务器”或“TCP客户端”,都使用DISCON断开。0x10CLOSE关闭socketnSn_SR改为SOCK_CLOSED。0x20SEND发送(SEND)Socketn发送(TX)内存中的所有缓冲数据。0x21SEND_MAC只在UDP模式下有效Ox22SEND_KEEP只在TCP模式下有效0x40RECV通过使用接收读指针寄存器(Sn_RX_RD)来判定socketn接收缓存是否完成接收处理。IR(中断寄存器)[R/W][0x0015][0x00]中断寄存器(IR)指明了中断的状态。IR的每一位都是‘0’,直到被主机写为‘1’.如果IR不等于‘0×00’,INTn引脚将会被拉低。直到其变为‘0×00’时,INTn才会被拉高。76543210CONFLICTUNREACHPPPoEMPReservedReservedReservedReserved表格IR说明位符号说明7CONFLICTIP冲突:在收到APR请求时,发现发送方IP于本地IP重复,该位将置‘1’6UNREACH目标不可抵达:当接收到ICMP(目的端口不可达)包后,该位置‘1’。当该位为‘1’时,通过相应的UIPR&UPORTR.可能查询到目标信息。如:IP地址和端口号。5PPPoEPPPoE连接关闭:当PPPoE模式下,PPPoE连接断开时,该位生效。4MPMagicPacket:当网络唤醒模式启用并通过UDP接收到MagicPacket网络唤醒时,该位生效。3~0Reserved保留位Sn_SR(Socketn状态寄存器)[R][0x0003][0x00]Sn_SR指示了Socketn的状态,并根据Sn_CR或者一些TCP模式下的特殊控制包,如SYN,FIN包而改变。Sn_SR状态描述值符号说明0x00SOCK_CLOSED该位指示了Socketn处于关闭状态,资源被释放。当DICON,CLOSE命令生效或当触发超时中断时,W5500对应的Socketn会无视之前的状态,变为SOCK_CLOSED0x13SOCK_INIT该位指示了Socketn端口打开并处于TCP工作模式。当Sn_MR(P[3:0])=’0001’且OPEN命令生效时,Sn_SR变为SOCK_INIT。之后用户才可以使用LISTEN或CONNECT命令。0x14SOCK_LISTEN该位指示着Socketn工作在TCP服务器模式下,且等待对方(TCP客户端)的连接请求(SYNPacket)。当连接请求被成功接收以后,Socket_SR会变为SOCK_ESTALBLISHED状态。否则将会在出发TCPt0超时中断之后,变为SOCK_CLOSED状态。0x17SOCK_ESTABLISHED指示了Socketn的连接状态。SOCK_LISTEN状态下,当TCP服务器处理TCP客户端的SYN请求包或当CONNECT命令配置成功时,变为SOCK_ESTABLISHED。在此状态下,可以使用SEND或者RECV命令对数据包传输。0x1CSOCK_CLOSE_WAIT指示Socketn接收到了来自连接对方发来的断开连接请求(FINpacket)。这是一个瓣关闭的状态,可以进行数据传输。若要全部关闭,需要使用DISCON命令。而如果是要关闭Socket,需要使用CLOSE命令。0x22SOCK_UDP指示了Socketn处于UDP模式下Sn_MR(P[3:0])=’0010’。当Sn_MR(P[3:0])=’0010’且OPEN命令生效时,Sn_SR改变为SOCK_UDP。不同于TCP模式,在这个模式下,数据包可以在无连接过程的情况下传输。0x02SOCK_MACRAW指示了Socket0工作在MACRAW模式下SO_MR(P[3:0])=’0100’且OPEN命令生效时,Sn_SR改变为SOCK_MACRAW.如UDP模式一样,Socket0工作在MACRAW模式下时。也能在无连接过程的情况下,实现MAC数据包(以太网帧)传输Sn_SR临时状态描述值符号说明0x15SOCK_SYNSENT指示了Socketn已经发送连接请求(SYNPacket)到对方。他显示了发送CONNECT命令后,Sn_SR从SOCK_INIT到SOCK_ESTABLISHED的临时状态。如果此时,收到了来自对方的接受连接请求(SYN/ACKpacket)则,变为SOCK_ESTABLISHED.否则,在TCPt0超时(Sn_IR[TIMEOUT]=’1’)中断之后,转变为SOCK_CLOSED。0x16SOCK_SYNRECV指示Socketn成功的从对方收到了连接请求包(SYNpacket)。如果Socketn成功的给对方发送了连接应答(SYN/ACKpacket),将转变为SOCK_ESTABLISHED状态。否则,在出发超时中断(Sn_IR[TIMEOUT]=’1’)后,变为SOCK_CLOSED。0x18SOCK_FIN_WAIT这些状况表示SOCKETn正在关闭。这显示的是断开连接(主动关闭或被动关闭)的过程。当断线程序成功完成或TCPTO(Sn_IR(超时)=’1’)发生时,它便会更改为SOCK_CLOSED。0x1ASOCK_CLOSING0x1BSOCK_TIME_WAIT0x1DSOCK_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),配置应如下,0x00040x00050x130x88Sn_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,配置应如下0x00060x00070x00080x00090x000A0x000B0x080xDC0x000x010x020x0ASn_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,配置应如下,0x000C0x000D0x000E0x000F192(0xC0)168(0xA8)0(0x00)11(0x0B)Sn_DPORT(Socketn目标端口寄存器)[R/W][0x0010-0x0011][0x00]Sn_DPORT配置或指示了Socketn的目标主机端口号,在TCP/UDP模式下生效。在TCP客户端模式下,在CONNET配置命令前,该寄存器配置了TCPServer监听的端口号。在TCP服务器模式下,他显示了在成功建立连接后
本文标题:W5500(socket)寄存器使用说明
链接地址:https://www.777doc.com/doc-2866862 .html