單片機(jī)以太網(wǎng)控制芯片W7100A數(shù)據(jù)手冊(cè)(三)
8.3 寄存器描述
8.3.1
MR (模式寄存器) [R/W] [0xFE0000] [0x00]
例:設(shè)置地址為”192.168.0.2”
0xFE000F | 0xFE0010 | 0xFE0011 | 0xFE0012 |
192 (0xC0) | 168 (0xA8) | 0 (0x00) | 2 (0x02) |
IR (中斷寄存器) [R] [0xFE0015] [0x00]
該寄存器由主機(jī)W7100A設(shè)置以確定中斷產(chǎn)生的來(lái)源。任何中斷都可以由中斷屏蔽寄存器屏蔽。當(dāng)寄存器中任意中斷位被置位,INT5(nINT5: TCPIP內(nèi)核中斷) 引腳將變低電平,它將一直保持低電平直到中斷寄存器中的所有位都清除。
RTR ((重發(fā)時(shí)間值寄存器) [R/W] [0xFE0017 – 0xFE0018] [0x07D0]
該寄存器用來(lái)設(shè)置時(shí)間溢出的值。每一單位數(shù)值為100us。初始化時(shí)值為200ms(0x07D0),即該值設(shè)為2000(0xFA0)。
例:設(shè)定400ms,其值為4000(0x0FA0)
0xFE0017 | 0xFE0018 |
0x0F | 0xA0 |
如果對(duì)端沒(méi)有響應(yīng)或響應(yīng)延遲都將產(chǎn)生重傳。
RCR (重傳計(jì)數(shù)寄存器) [R/W] [0xFE0019] [0x08]
該寄存器內(nèi)的數(shù)值設(shè)定可重發(fā)的次數(shù)。如果重發(fā)的次數(shù)超過(guò)設(shè)定值,將產(chǎn)生超時(shí)中斷(相關(guān)的端口中斷寄存器中的Sn_IR超時(shí)位(TIMEOUT)置’1’。
在TCP通信模式,Sn_IR的TIMEOUT=’1’時(shí),Sn_SR的狀態(tài)改變?yōu)?rdquo;SOCK_CLOSED”狀態(tài)。在其它通信模式,只是Sn_IR的TIMEOUT=’1’。
W7100A超時(shí)中斷可以通過(guò)RTR和RCR進(jìn)行配置。其中TIMEOUT中斷分為ARP超時(shí)和TCP重傳超時(shí).
對(duì)于ARP(參考RFC 826,http://www.ietf.org/rfc.html)重傳超時(shí), W7100A自動(dòng)發(fā)送ARP請(qǐng)求到對(duì)端IP地址,以獲得MAC地址信息。(用于IP,UDP,或TCP通信).在等待對(duì)端ARP響應(yīng)過(guò)程中,如果在RTR設(shè)置的時(shí)間范圍內(nèi)都沒(méi)有響應(yīng),將產(chǎn)生超時(shí)并重復(fù)發(fā)送ARP請(qǐng)求。重發(fā)上限為’RCR+1’次。
在ARP重復(fù)請(qǐng)求’RCR+1’次后如果沒(méi)有ARP響應(yīng),那么最終將產(chǎn)生超時(shí)且Sn_IR(TIMEOUT)置’1’。
ARPTO = ( RTR X 0.1ms ) X ( RCR + 1 )
ARP請(qǐng)求超時(shí)的計(jì)算如下(ARPTO):
TCP數(shù)據(jù)包傳輸超時(shí),W7100A傳輸TCP數(shù)據(jù)包(SYN,FIN,RST,DATA數(shù)據(jù)包)并在RTR和RCR設(shè)置的時(shí)間范圍內(nèi)等待響應(yīng)(ACK)。如果對(duì)端沒(méi)有響應(yīng)將產(chǎn)生超時(shí),并重復(fù)發(fā)送先前的TCP數(shù)據(jù)包。重復(fù)發(fā)送的次數(shù)為’RCR+1’。如果TCP數(shù)據(jù)包經(jīng)過(guò)’RCR+1’次重復(fù)發(fā)送也沒(méi)有得到對(duì)端的ACK響應(yīng),此時(shí)將產(chǎn)生最終的超時(shí)。在Sn_IR(TIMEOUT)=1時(shí)Sn_SR的值為’SOCKET_CLOSED’。
TCP數(shù)據(jù)包重復(fù)傳輸?shù)淖罱K超時(shí)的值計(jì)算如下:
例:當(dāng)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èn)證類型) [R] [0xFE001C-0xFE001D] [0x0000]
在與PPPoE服務(wù)器連接時(shí)該寄存器指示通過(guò)的安全認(rèn)證方法。W7100A只支持兩種安全類型:PAP和CHAP。
值 | 認(rèn)證類型 |
0xC023 | PAP |
0xC223 | CHAP |
PPPALGO (PPPoE模式下認(rèn)證算法)[R][0xFE001E][0x00]
該寄存器用于指示PPPoE連接時(shí)的認(rèn)證算法。詳細(xì)信息請(qǐng)參考PPPOE應(yīng)用筆記。
PTIMER (PPP連接控制協(xié)議請(qǐng)求定時(shí)器寄存器) [R/W] [0xFE0028] [0x28]
該寄存器表示發(fā)出LCP Echo(響應(yīng)請(qǐng)求)所需要的時(shí)間間隔。每1單位大約25ms。
例:設(shè)置PTIMER =200
200 * 25(ms) = 5000(ms) = 5 s
PMAGIC (PPP連接控制協(xié)議(LPC)幻數(shù)寄存器) [R/W] [0xFE0029][0x00]
該寄存器用于LCP握手時(shí)采用的幻數(shù)選項(xiàng)。參照 “How to connect ADSL”應(yīng)用筆記。
VERSIONR (W7100A芯片版本寄存器)[R][0xFE001F][0x02]
該寄存器存儲(chǔ)W7100A的版本信息。
INTLEVEL (中斷低電平等待時(shí)間寄存器)[R/W][0xFE0030 – 0xFE0031][0x0000]
INTLEVEL設(shè)置中斷觸發(fā)等待時(shí)間(IAWT)。它配置內(nèi)部中斷INT5在下一個(gè)中斷發(fā)生前的低電平觸發(fā)等待時(shí)間。如果用戶想啟用TCP/IP內(nèi)核中斷,INTLEVEL寄存器的值必須大于0x2B00。否則TCP/IP內(nèi)核中斷可能被忽略。
a.對(duì)于SOCKET 0,如果中斷發(fā)生(S0_IR(3) = ‘1’)且相應(yīng)IR2位被置1(IR(S0_IR) = ‘1’),內(nèi)部中斷INT5信號(hào)將會(huì)被拉低。
b.同樣的情況出現(xiàn)在:當(dāng)socket 1出現(xiàn)連續(xù)中斷(S1_IR(0)=‘1’)且相應(yīng)位被置1(IR(S1_IR)=‘1’)。
c.當(dāng)主機(jī)清掉S0_IR(S0_IR = 0x00)位及相應(yīng)的IR2位(IR(S0_IR) = ‘0’),內(nèi)部中斷INT5信號(hào)將會(huì)從低電平(啟動(dòng))重新拉高(禁止)。
d.當(dāng)S1_IR清除后,因?yàn)镾OCKET 1中斷,對(duì)應(yīng)的IR2并不為0x00,內(nèi)部INT5信號(hào)應(yīng)該為低電平。
然而,由于INTLEVEL值為0x000F,內(nèi)部INT5信號(hào)還要持續(xù)IAWT(16 PLL_CLK)時(shí)間。
IR2 (W7100A端口中斷寄存器)[R/W][0xFE0034][0x00]
IR2寄存器用于通知主機(jī)W7100A產(chǎn)生端口中斷。當(dāng)中斷產(chǎn)生后,在IR2的相關(guān)位置’1’.此時(shí),INT5 (nINT5: TCPIP內(nèi)核中斷)引腳輸出低電平信號(hào),直到IR2的所有位都為’0’。一旦通過(guò)Sn_IR將IR2所有位都清零,INT5就變回高電平。
評(píng)論