单片机以太网控制芯片W7100A数据手册(三)
8.3 寄存器描述
8.3.1
MR (模式寄存器) [R/W] [0xFE0000] [0x00]
例:设置地址为”192.168.0.2”
0xFE000F | 0xFE0010 | 0xFE0011 | 0xFE0012 |
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)
0xFE0017 | 0xFE0018 |
0x0F | 0xA0 |
如果对端没有响应或响应延迟都将产生重传。
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。
值 | 认证类型 |
0xC023 | PAP |
0xC223 | CHAP |
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就变回高电平。
评论