新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机以太网控制芯片W7100A数据手册(三)

单片机以太网控制芯片W7100A数据手册(三)

作者: 时间:2016-11-26 来源:网络 收藏

8.3寄存器描述

8.3.1模式寄存器

MR (模式寄存器) [R/W] [0xFE0000] [0x00]

例:设置地址为”192.168.0.2”

0xFE000F0xFE00100xFE00110xFE0012
192 (0xC0)168 (0xA8)0 (0x00)2 (0x02)

IR (中断寄存器) [R] [0xFE0015] [0x00]

该寄存器由主机W7100A设置以确定中断产生的来源。任何中断都可以由中断屏蔽寄存器屏蔽。当寄存器中任意中断位被置位,INT5(nINT5: TCPIP内核中断) 引脚将变低电平,它将一直保持低电平直到中断寄存器中的所有位都清除。

RTR ((重发时间值寄存器) [R/W] [0xFE0017 – 0xFE0018] [0x07D0]

该寄存器用来设置时间溢出的值。每一单位数值为100us。初始化时值为200ms(0x07D0),即该值设为2000(0xFA0)。

例:设定400ms,其值为4000(0x0FA0)

0xFE00170xFE0018
0x0F0xA0

如果对端没有响应或响应延迟都将产生重传。

RCR (重传计数寄存器) [R/W] [0xFE0019] [0x08]

该寄存器内的数值设定可重发的次数。如果重发的次数超过设定值,将产生超时中断(相关的端口中断寄存器中的Sn_IR超时位(TIMEOUT)置’1’。

在TCP通信模式,Sn_IR的TIMEOUT=’1’时,Sn_SR的状态改变为”SOCK_CLOSED”状态。在其它通信模式,只是Sn_IR的TIMEOUT=’1’。

W7100A超时中断可以通过RTR和RCR进行配置。其中TIMEOUT中断分为ARP超时和TCP重传超时.

对于ARP(参考RFC 826,http://www.ietf.org/rfc.html)重传超时, W7100A自动发送ARP请求到对端IP地址,以获得MAC地址信息。(用于IP,UDP,或TCP通信).在等待对端ARP响应过程中,如果在RTR设置的时间范围内都没有响应,将产生超时并重复发送ARP请求。重发上限为’RCR+1’次。

在ARP重复请求’RCR+1’次后如果没有ARP响应,那么最终将产生超时且Sn_IR(TIMEOUT)置’1’。

ARPTO = ( RTR X 0.1ms ) X ( RCR + 1 )

ARP请求超时的计算如下(ARPTO):

TCP数据包传输超时,W7100A传输TCP数据包(SYN,FIN,RST,DATA数据包)并在RTR和RCR设置的时间范围内等待响应(ACK)。如果对端没有响应将产生超时,并重复发送先前的TCP数据包。重复发送的次数为’RCR+1’。如果TCP数据包经过’RCR+1’次重复发送也没有得到对端的ACK响应,此时将产生最终的超时。在Sn_IR(TIMEOUT)=1时Sn_SR的值为’SOCKET_CLOSED’。

TCP数据包重复传输的最终超时的值计算如下:

例:当RTR = 2000(0x07D0), RCR = 8(0x0008),

ARPTO= 2000 X 0.1ms X 9 = 1800ms = 1.8s

TCPTO= (0x07D0 + 0x0FA0 + 0x1F40 + 0x3E80 + 0x7D00 + 0xFA00 + 0xFA00 + 0xFA00 + 0xFA00) X 0.1ms

= (2000 + 4000 + 8000 + 16000 + 32000 + ((8 - 4) X 64000)) X 0.1ms

= 318000 X 0.1ms = 31.8s

PATR (PPPoE模式下认证类型) [R] [0xFE001C-0xFE001D] [0x0000]

在与PPPoE服务器连接时该寄存器指示通过的安全认证方法。W7100A只支持两种安全类型:PAP和CHAP。

认证类型
0xC023PAP
0xC223CHAP

PPPALGO (PPPoE模式下认证算法)[R][0xFE001E][0x00]

该寄存器用于指示PPPoE连接时的认证算法。详细信息请参考PPPOE应用笔记。

PTIMER (PPP连接控制协议请求定时器寄存器) [R/W] [0xFE0028] [0x28]

该寄存器表示发出LCP Echo(响应请求)所需要的时间间隔。每1单位大约25ms。

例:设置PTIMER =200

200 * 25(ms) = 5000(ms) = 5 s

PMAGIC (PPP连接控制协议(LPC)幻数寄存器) [R/W] [0xFE0029][0x00]

该寄存器用于LCP握手时采用的幻数选项。参照 “How to connect ADSL”应用笔记。

VERSIONR (W7100A芯片版本寄存器)[R][0xFE001F][0x02]

该寄存器存储W7100A的版本信息。

INTLEVEL (中断低电平等待时间寄存器)[R/W][0xFE0030 – 0xFE0031][0x0000]

INTLEVEL设置中断触发等待时间(IAWT)。它配置内部中断INT5在下一个中断发生前的低电平触发等待时间。如果用户想启用TCP/IP内核中断,INTLEVEL寄存器的值必须大于0x2B00。否则TCP/IP内核中断可能被忽略。

a.对于SOCKET 0,如果中断发生(S0_IR(3) = ‘1’)且相应IR2位被置1(IR(S0_IR) = ‘1’),内部中断INT5信号将会被拉低。

b.同样的情况出现在:当socket 1出现连续中断(S1_IR(0)=‘1’)且相应位被置1(IR(S1_IR)=‘1’)。

c.当主机清掉S0_IR(S0_IR = 0x00)位及相应的IR2位(IR(S0_IR) = ‘0’),内部中断INT5信号将会从低电平(启动)重新拉高(禁止)。

d.当S1_IR清除后,因为SOCKET 1中断,对应的IR2并不为0x00,内部INT5信号应该为低电平。

然而,由于INTLEVEL值为0x000F,内部INT5信号还要持续IAWT(16 PLL_CLK)时间。

IR2 (W7100A端口中断寄存器)[R/W][0xFE0034][0x00]

IR2寄存器用于通知主机W7100A产生端口中断。当中断产生后,在IR2的相关位置’1’.此时,INT5 (nINT5: TCPIP内核中断)引脚输出低电平信号,直到IR2的所有位都为’0’。一旦通过Sn_IR将IR2所有位都清零,INT5就变回高电平。


上一页 1 2 3 下一页

评论


技术专区

关闭