iEthernet W5200数据手册(版本1.2.4)之:寄存器说明
[R/W] [0x4004+0x0n00-0x4005+0x0n00] [0x0000]
当使用TCP或UDP模式时,该寄存器会为每个SOCKET设置一个源端口号,而这个设置需要在
执行OPEN命令之前完成。
例) 如SOCKET 0 的端口=5000(0x1388),配置应如下,
Sn_DHAR (Socket n-th目标MAC地址寄存器) [R/W] [0x4006+0x0n00-0x400B+0x0n00] [0xFFFFFFFFFFFF]
该寄存器会为Socket n-th 设定目标MAC地址。此外,如果Socket0已用于PPPoE模式,那S0_DHAR会为 PPPoE服务器硬件设置一个已知的地址。
当在UDP或IPRAW模式下使用SEND_MAC的命令时,它会为Socket n-th 设定目标MAC地址。而在TCP、UDP和IPRAW模式时,Sn_DHAR会根据定CONNECT或SEND命令中的ARP程序取得的目标MAC地址作出设定。当成功执行CONNECT或SEND命令后,主机可以通过 Sn_DHAR取得目标MAC地址。
当使用W5200中的PPPoE程序,PPPoE服务器MAC地址并不需要进行设置。然而,即使不使用W5200中的PPPoE程序,仍须自行实施MACRAW模式。如想要发送或接收PPPoE的数据包的话,那PPPoE服务器MAC地址(从PPPoE程序中取得)、PPPoE服务器的IP地址、 和PPP session ID就应须被设置。此外,MR(PPPoE)也应设置为'1'。
S0_DHAR会在OPEN命令之前设置 PPPoE服务器MAC地址。 PPPoE服务器MAC地址是由S0_DHAR执行OPEN命令后,在 PDHAR里应用。而已经配置的PPPoE信息,即使是在CLOSE命令后,对于内部运作依然是有效的。
例)如Socket 0的目标MAC地址 = 08.DC.00.01.02.10,配置应如下,
Sn_DIPR (Socket n-th目标IP地址寄存器)[R/W][0x400C+0x0n00 0x400F+0x0n00]
[0x00000000]
该寄存器会为Socket n-th 设定目标IP地址。如果Socket0已用于PPPoE模式,那S0_DIPR会为 PPPoE服务器IP设置一个已知的地址。它只有在TCP、UDP、IPRAW或PPPoE模式下才有效,但是会在MACRAW模式下被忽略。
在TCP模式下,当作为"TCP客户端"的时候,它会在执行CONNECT命令之前,为"TCP服务器"设置IP地址。而当作为"TCP服务器"的时候,它会在成功建立连接之后,在内部为"TCP客户端"设置 IP地址。
在UDP或IPRAW模式下,Sn_DIPR会在执行SEND或SEND_MAC命令之前,设置为目标IP地址,用作传输UDP或IPRAW数据包。
例) 如Socket 0的目标IP地址= 192.168.0.11,配置应如下,
Sn_DPORT (Socket n-th目标端口寄存器)[R/W][0x4010+0x0n00-0x4011+0x0n00] [0x00] 目标端口号是在Socket n-th 的Sn_DPORT设置。如果Socket0已用于PPPoE模式,那S0_DPORT0会为 PPP session ID设置一个已知的号码。它只有在TCP、UDP、或PPPoE模式下才有效,而在其他模式下会被忽略。
在TCP模式下,当作为"TCP客户端"的时候,它会在执行CONNECT命令之前,监听"TCP服务器"的端口号。
在UDP模式下,在执行SEND或SEND_MAC命令之前,在Sn_DPORT中设置目标端口号用作于传输 UDP数据包。
在PPPoE模式下,已知的PPP session ID是在S0_DPORT中设置。 在执行OPEN命令之前,PPP session ID(由S0_DPORT0设置)会被用于PSIDR。
例)如Socket 0的目标端口号= 5000(0x1388),配置应如下,
Sn_MSS (Socket n-th最大分段寄存器)[R/W][0x4012+0x0n00-0x4013+0x0n00] [0x0000] 该寄存器用于TCP的MSS - Maximum Segment Size(最大报文长度) 。当TCP是在被动模式下被启动,该寄存器会显示MSS的设置。而它只是支持TCP或UDP模式。当使用PPPoE(MR(PPPoE)='1')的时候,TCP或UDP模式的MTU将被分配在PPPoE的MTU范围。
在IPRAW或MACRAW模式下,MTU(最大传输单元-maximum transmission unit)并不是在内部处理的,但会使用预设的MTU。因此,当传输的数据大于默认的MTU时,主机应该以手动方式将数据划分成默认MTU的单元大小。
在TCP或UDP模式下,如果传输的数据大于MTU时,W5200会自动将数据划分成MTU的单元大小。在TCP模式下,MTU会被称为MSS。MSS是从主机的最大读写长度和对方的最大报文长度中取较小者作为TCP通信过程中的最大报文长度。
例)如Socket 0的MSS = 1460(0x05B4),配置应如下,
Sn_PROTO (Socket n-th IP协议寄存器) [R/W] [0x4014+0x0n00] [0x00]
这是一个1字节的寄存器。它用于设置在IP层里IP报头(IP header)的协议号码字段。它只会在 IPRAW模式下才有效,而在其他模式下会被忽略。 Sn_PROTO需在执行OPEN命令之前设置。
当Socket n-th在IPRAW模式下开启,它会发送和接收在Sn_PROTO中设置的协议号码数据。Sn_PROTO是可以被分配在由0x00?0xFF的范围,但W5200不支持TCP(0x06) 和UDP(0x11) 的协议号码。
- iEthernet W5200数据手册(版本1.2.4)之:引脚分配(09-18)
- iEthernet W5200数据手册(版本1.2.4)之:外部接口(09-18)
- iEthernet W5200数据手册(版本1.2.4)之:电器规格(09-18)
- 高性能32位移位寄存器单元的设计(06-14)
- STM32F之RTC(07-05)
- W5500 数据手册 Version 1.0 之:寄存器和内存构成(09-18)