您的位置 首页 编程

单片机以太网操控芯片W7100A数据手册(四)

昨天讲解了如何通过异步收发以及看门狗定时器TCPIP内核,今天继续给大家介绍TCPIP内核的内容,以及功能描述。832SOCKET寄存器Sn_MR(SO

昨日解说了怎么经过异步收发以及看门狗定时器&TCP/IP内核,今日持续给咱们介绍TCP/IP内核的内容,以及功用描绘。

8.3.2SOCKET寄存器

Sn_MR(SOCKET n形式寄存器)[R/W][0xFE4000 + 0x100n][0x0000]

该寄存器装备SOCKET n的协议或其他选项.

Sn_CR (SOCKET n指令寄存器)[R/W][0xFE4001 + 0x100n][0x00]

该寄存器用于设置SOCKET n的指令,比方:翻开、衔接、监听、发送、接纳等操作。当W7100A 承认该指令之后, Sn_CR寄存器主动清零。即便Sn_CR清零,指令依然在处理中。为了验证指令是否履行完结,能够查看Sn_IR寄存器或Sn_SR寄存器。

下面的指令只用于SOCKET 0且S0_MR(P3:P0) = S0_MR_PPPoE。

具体信息请参阅W5100运用笔记”How to use ADSL”。

Sn_IR (SOCKET n中止寄存器)[R/W][0xFE4002 + 0x100n][0x00]

Sn_IR寄存器供给SOCKET n的中止类型信息(比方树立衔接、中止衔接、收到数据、超时等)。当产生一个中止且中止屏蔽器Sn_IMR对应位为’1’,那么Sn_IR的中止位将置’1’。为了铲除Sn_IR位,主机需求向该位写入’1’。当Sn_IR一切位都铲除,IR(n)将主动铲除。这时它将向MCU宣布INT5信号(nINT5:TCPIP内核中止)。

Sn_IMR (SOCKET n中止屏蔽寄存器)[R/W][0xFE402C + 0x100n][0xFF]

它装备SOCKET n的中止类型,以指示给主机。端口的中止屏蔽寄存器Sn_IMR与Sn_IR相对应。假如SOCKET产生中止,Sn_IR相对应的方位’1’,假如Sn_IMR与Sn_IR相对应的位都置’1’,IR(n)置’1’。这时假如IMR(n)也置’1’,将产生中止(‘/INT’引脚电平变低)

Sn_SR (SOCKET n状况寄存器)[R][0xFE4003 + 0x100n][0x00]

该寄存器供给SOCKET n的状况。在对Sn_CR寄存器进行操作或数据包的收发进程中,SOCKET n 的状况将产生改动。

下表描绘了SOCKET n的不同状况

下面是Sn_SR在改动进程中的暂时状况。

Sn_PORT(SOCKET n源端口号)[R/W][(0xFE4004+0x100n)~(0xFE4005+0x100n)] [0x0000]

设置源端口号。

端口号只要SOCKET n作业在TCP、UDP形式下有用,在其它形式下无效。

端口号有必要在OPEN指令之前设置。

例:设置SOCKET 0的端口号为5000(0x1388),装备如下:

0xFE4004 0xFE4005
0x13 0x88

Sn_DHAR (SOCKET n意图物理地址寄存器)[R/W][(0xFE4006 + 0x100n) – (0xFE400B + 0x100n)][FF.FF.FF.FF.FF.FF]

它设置、或被设置为SOCKET n的意图端物理地址。假如SOCKET 0用于PPPoE形式,S0_DHAR则设置为PPPoE服务器的物理地址,这个物理地址是现已知道的。

在UDP或IPRAW形式运用SEND_MAC指令时,需求将它设置为SOCKET n的意图物理地址。在TCP、UDP、IPRAW形式,运用CONNECT指令或SEND指令时,Sn_DHAR是经过ARP进程取得意图物理地址。在成功运转CONNECT或SEND指令后,主机能够经过Sn_DHAR取得意图物理地址。

当运用W7100A的PPPoE时,不需求设置PPPoE服务器的物理地址。

可是,即便不必W7100A的PPPoE处理,而是运用MACRAW形式,为了传输和接纳PPPoE数据包,PPPoE服务器的物理地址(经过PPPoE进程取得)、PPPoE服务器的IP地址、PPP会话的ID值都需求设置,MR(PPPoE)也需求设置为’1’。

S0_DHAR在OPEN指令之前就设置为PPPoE服务器的物理地址。由S0_DAHAR设置的PPPoE服务器的物理地址在OPEN指令之后运用于PDHAR。PPPoE的装备信息归于内部信息,即便在CLOSE指令之后依然有用。

例:SOCKET 0的意图端的物理地址为:00.08.DC.01.02.10,装备如下:

0xFE4006 0xFE4007 0xFE4008 0xFE4009 0xFE400A 0xFE400B
0x00 0x08 0xDC 0x01 0x02 0x10

Sn_DIPR (SOCKET n意图IP地址寄存器)[R/W][(0xFE400C + 0x100n) – (0xFE400F + 0x100n)][00.00.00.00]

它设置、或被设置为SOCKET n的意图IP地址。假如SOCKET 0用于PPPoE形式,S0_DIPR0将设置为已知的PPPoE服务器的IP地址。

只要在TCP、UDP、IPRAW或PPPoE形式下有用,在MACRAW形式下无效。

当SOCKET作业在TCP客户端时,在运转CONNECT指令之前,它有必要设置为TCP服务器的IP地址。而当作业在TCP服务器形式时,当成功树立衔接今后,它内部主动设置为TCP客户端的IP地址。

在UDP或IPRAW形式,为了传输UDP或IPRAW数据包,在运用SEND或SEND_MAC指令之前,有必要将意图端的IP地址设置到Sn_DIPR中。

在PPPoE形式,S0_DIPR设置为已知的PPPoE服务器的IP地址。

例:SOCKET 0的意图端的IP地址为:192.168.0.11,设置如下:

0xFE400C 0xFE400D 0xFE400E 0xFE400F
192 (0xC0) 168 (0xA8) 0 (0x00) 11 (0x0B)

Sn_DPORT (SOCKET n意图端口号寄存器)[R/W][(0xFE4010 + 0x100n) – (0xFE4011 + 0x100n)][0x0000]

SOCKET n的意图端口号由Sn_DPORT设置。假如SOCKET 0作业在PPPoE形式,Sn_DPORT0设置为已知的会话ID。

只要在TCP、UDP和PPPoE形式下有用,其它形式下无效。

在TCP客户端形式时,在运转CONNECT指令之前,有必要先将Sn_DPORT设置为TCP服务器的侦听端口。

在UDP形式下,在SEND指令或SEND_MAC指令之前,需求先设置好UDP数据包的意图端口号Sn_DPORT。

在PPPoE形式下,S0_DPORT设置为已知的PPP会话ID。PPP会话ID在OPEN指令之后运用于PSIDR。

例:设置SOCKET 0的意图端口号为5000(0x1388),装备如下:

0xFE4010 0xFE4011
0x13 0x88

Sn_MSSR(SOCKET n最大分段长度寄存器)[R/W][(0xFE4012 + 0x100n) – (0xFE4013 + 0x100n)][0x0000]

它设置SOCKET n的最大传输单元(MTU),或指示MTU现已设置。它支撑TCP或UDP形式。当运用PPPoE(MR(PPPoE)=1),TCP或UDP的最大传输单元(MTU)是由PPPoE的MTU规模确认的。

在IPRAW和MACRAW形式下,MTU不是由内部处理的,可是运用默许的MTU。因而当传输的数据比默许的MTU大,主机需求手动进行分段使其在默许的MTU规模内。

在SOCKET初始化进程中,复位值是0,可是MSSR会变成用户设置值和默许值之间较小的那个。假如没有用户设置值,MSSR则变成默许值。

在TCP和UDP形式下,假如传输的数据字节数比MTU大,W7100会主动将数据分段在MTU规模内。

在TCP形式,MTU便是咱们所知道的MSS。经过挑选主机写入的值和对端的MSS,在TCP衔接进程中MSS主动挑选较小的值。

在UDP形式下,没有TCP的衔接进程,只运用主机写入的值。当与不同MTU的对端通讯时,W7100能够接纳到ICMP(分段的MTU)数据包。当IR(FMTU)=1时,无法完成与对端的UDP通讯。因而用户有必要封闭SOCKET,将Sn_MSSR设置为FMTU,然后再试着用OPEN指令翻开端口进行通讯。

Sn_PROTO (SOCKET n协议号寄存器)[R/W][0xFE4014 + 0x100n][0x00]

这是一个1字节的寄存器,用于设置IP层数据包中IP包头的协议号字段。

只要在IPRAW形式下有用,而在其它形式下都无效。Sn_PROTO有必要在OPEN指令之前设置。当SOCKET n以IPRAW形式翻开时,它发送和接纳的是由Sn_PROTO设置的协议号的数据。Sn_PROTO的赋值规模在0x00 ~ 0xFF之间。但W7100不支撑TCP(0x06)和UDP(0x11)的协议号。协议号由IANA(互联网编号分配组织)界说。具体内容请参阅在线信息:

http://www.iana.org/assignments/protocol-numbers

例:网络操控信息协议(%&&&&&%MP)的协议号为0x01,网络分组办理协议的协议号为0x02。

Sn_TOS(SOCKET n服务类型(TOS)寄存器)[R/W][0xFE4015 + 0x100n][0x00]

它设置服务类型(TOS),这是IP层数据包中IP包头中的一个字段。有必要在OPEN指令之前

进行设置。

请参阅:http://www.iana.org/assignments/ip-parameters.

Sn_TTL(SOCKET n生计时刻(TTL)寄存器)[R/W][0xFE4016 + 0x100n][0x80]

它设置IP层数据包中IP包头中的生计时刻(TTL)字段。有必要在OPEN指令之前进行设置。

请参阅:http://www.iana.org/assignments/ip-parameters

Sn_RXMEM_SIZE(SOCKET n接纳存储器巨细寄存器) [R/W][0xFE401E + 0x100n][0x02]

它用于装备每一个SOCKET的RX存储器的巨细。每个SOCKET的RX存储器巨细可装备为1、2、4、8、16K字节。复位后默许为2K字节。8个SOCKET的Sn_RXMEM_SIZE的总和为16K字节。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/258660.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部