<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機以太網(wǎng)控制芯片W7100A數(shù)據(jù)手冊(四)

          單片機以太網(wǎng)控制芯片W7100A數(shù)據(jù)手冊(四)

          作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏

          昨天講解了如何通過異步收發(fā)以及看門狗定時器&TCP/IP內(nèi)核,今天繼續(xù)給大家介紹TCP/IP內(nèi)核的內(nèi)容,以及功能描述。

          本文引用地址:http://www.ex-cimer.com/article/201611/322034.htm

          8.3.2SOCKET寄存器

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

          該寄存器配置SOCKET n的協(xié)議或其他選項.

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

          該寄存器用于設(shè)置SOCKET n的命令,諸如:打開、連接、監(jiān)聽、發(fā)送、接收等操作。當(dāng)W7100A 確認該命令之后, Sn_CR寄存器自動清零。即使Sn_CR清零,指令仍然在處理中。為了驗證命令是否執(zhí)行完成,可以檢查Sn_IR寄存器或Sn_SR寄存器。

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

          詳細信息請參考W5100應(yīng)用筆記”How to use ADSL”。

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

          Sn_IR寄存器提供SOCKET n的中斷類型信息(比如建立連接、中斷連接、收到數(shù)據(jù)、超時等)。當(dāng)產(chǎn)生一個中斷且中斷屏蔽器Sn_IMR對應(yīng)位為’1’,那么Sn_IR的中斷位將置’1’。為了清除Sn_IR位,主機需要向該位寫入’1’。當(dāng)Sn_IR所有位都清除,IR(n)將自動清除。這時它將向MCU發(fā)出INT5信號(nINT5:TCPIP內(nèi)核中斷)。

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

          它配置SOCKET n的中斷類型,以指示給主機。端口的中斷屏蔽寄存器Sn_IMR與Sn_IR相對應(yīng)。如果SOCKET產(chǎn)生中斷,Sn_IR相對應(yīng)的位置’1’,如果Sn_IMR與Sn_IR相對應(yīng)的位都置’1’,IR(n)置’1’。這時如果IMR(n)也置’1’,將產(chǎn)生中斷(‘/INT’引腳電平變低)

          Sn_SR (SOCKET n狀態(tài)寄存器)[R][0xFE4003 + 0x100n][0x00]

          該寄存器提供SOCKET n的狀態(tài)。在對Sn_CR寄存器進行操作或數(shù)據(jù)包的收發(fā)過程中,SOCKET n 的狀態(tài)將發(fā)生改變。

          下表描述了SOCKET n的不同狀態(tài)

          下面是Sn_SR在改變過程中的臨時狀態(tài)。

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

          設(shè)置源端口號。

          端口號只有SOCKET n工作在TCP、UDP模式下有效,在其它模式下無效。

          端口號必須在OPEN命令之前設(shè)置。

          例:設(shè)置SOCKET 0的端口號為5000(0x1388),配置如下:

          0xFE40040xFE4005
          0x130x88

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

          它設(shè)置、或被設(shè)置為SOCKET n的目的端物理地址。如果SOCKET 0用于PPPoE模式,S0_DHAR則設(shè)置為PPPoE服務(wù)器的物理地址,這個物理地址是已經(jīng)知道的。

          在UDP或IPRAW模式使用SEND_MAC命令時,需要將它設(shè)置為SOCKET n的目的物理地址。在TCP、UDP、IPRAW模式,使用CONNECT命令或SEND命令時,Sn_DHAR是通過ARP過程獲得目的物理地址。在成功運行CONNECT或SEND命令后,主機可以通過Sn_DHAR獲得目的物理地址。

          當(dāng)使用W7100A的PPPoE時,不需要設(shè)置PPPoE服務(wù)器的物理地址。

          然而,即使不用W7100A的PPPoE處理,而是使用MACRAW模式,為了傳輸和接收PPPoE數(shù)據(jù)包,PPPoE服務(wù)器的物理地址(通過PPPoE過程獲得)、PPPoE服務(wù)器的IP地址、PPP會話的ID值都需要設(shè)置,MR(PPPoE)也需要設(shè)置為’1’。

          S0_DHAR在OPEN命令之前就設(shè)置為PPPoE服務(wù)器的物理地址。由S0_DAHAR設(shè)置的PPPoE服務(wù)器的物理地址在OPEN命令之后應(yīng)用于PDHAR。PPPoE的配置信息屬于內(nèi)部信息,即使在CLOSE命令之后仍然有效。

          例:SOCKET 0的目的端的物理地址為:00.08.DC.01.02.10,配置如下:

          0xFE40060xFE40070xFE40080xFE40090xFE400A0xFE400B
          0x000x080xDC0x010x020x10

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

          它設(shè)置、或被設(shè)置為SOCKET n的目的IP地址。如果SOCKET 0用于PPPoE模式,S0_DIPR0將設(shè)置為已知的PPPoE服務(wù)器的IP地址。

          只有在TCP、UDP、IPRAW或PPPoE模式下有效,在MACRAW模式下無效。

          當(dāng)SOCKET工作在TCP客戶端時,在運行CONNECT命令之前,它必須設(shè)置為TCP服務(wù)器的IP地址。而當(dāng)工作在TCP服務(wù)器模式時,當(dāng)成功建立連接以后,它內(nèi)部自動設(shè)置為TCP客戶端的IP地址。

          在UDP或IPRAW模式,為了傳輸UDP或IPRAW數(shù)據(jù)包,在使用SEND或SEND_MAC命令之前,必須將目的端的IP地址設(shè)置到Sn_DIPR中。

          在PPPoE模式,S0_DIPR設(shè)置為已知的PPPoE服務(wù)器的IP地址。

          例:SOCKET 0的目的端的IP地址為:192.168.0.11,設(shè)置如下:

          0xFE400C0xFE400D0xFE400E0xFE400F
          192 (0xC0)168 (0xA8)0 (0x00)11 (0x0B)

          Sn_DPORT (SOCKET n目的端口號寄存器)[R/W][(0xFE4010 + 0x100n) – (0xFE4011 + 0x100n)][0x0000]

          SOCKET n的目的端口號由Sn_DPORT設(shè)置。如果SOCKET 0工作在PPPoE模式,Sn_DPORT0設(shè)置為已知的會話ID。

          只有在TCP、UDP和PPPoE模式下有效,其它模式下無效。

          在TCP客戶端模式時,在運行CONNECT命令之前,必須先將Sn_DPORT設(shè)置為TCP服務(wù)器的偵聽端口。

          在UDP模式下,在SEND命令或SEND_MAC命令之前,需要先設(shè)置好UDP數(shù)據(jù)包的目的端口號Sn_DPORT。

          在PPPoE模式下,S0_DPORT設(shè)置為已知的PPP會話ID。PPP會話ID在OPEN命令之后應(yīng)用于PSIDR。

          例:設(shè)置SOCKET 0的目的端口號為5000(0x1388),配置如下:

          0xFE40100xFE4011
          0x130x88

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

          它設(shè)置SOCKET n的最大傳輸單元(MTU),或指示MTU已經(jīng)設(shè)置。它支持TCP或UDP模式。當(dāng)使用PPPoE(MR(PPPoE)=1),TCP或UDP的最大傳輸單元(MTU)是由PPPoE的MTU范圍確定的。

          在IPRAW和MACRAW模式下,MTU不是由內(nèi)部處理的,但是使用默認的MTU。因此當(dāng)傳輸?shù)臄?shù)據(jù)比默認的MTU大,主機需要手動進行分段使其在默認的MTU范圍內(nèi)。

          在SOCKET初始化過程中,復(fù)位值是0,但是MSSR會變成用戶設(shè)置值和默認值之間較小的那個。如果沒有用戶設(shè)置值,MSSR則變成默認值。

          在TCP和UDP模式下,如果傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)比MTU大,W7100會自動將數(shù)據(jù)分段在MTU范圍內(nèi)。

          在TCP模式,MTU就是我們所知道的MSS。通過選擇主機寫入的值和對端的MSS,在TCP連接過程中MSS自動選擇較小的值。

          在UDP模式下,沒有TCP的連接過程,只使用主機寫入的值。當(dāng)與不同MTU的對端通信時,W7100可以接收到ICMP(分段的MTU)數(shù)據(jù)包。當(dāng)IR(FMTU)=1時,無法實現(xiàn)與對端的UDP通信。因此用戶必須關(guān)閉SOCKET,將Sn_MSSR設(shè)置為FMTU,然后再試著用OPEN命令打開端口進行通信。

          Sn_PROTO (SOCKET n協(xié)議號寄存器)[R/W][0xFE4014 + 0x100n][0x00]

          這是一個1字節(jié)的寄存器,用于設(shè)置IP層數(shù)據(jù)包中IP包頭的協(xié)議號字段。

          只有在IPRAW模式下有效,而在其它模式下都無效。Sn_PROTO必須在OPEN命令之前設(shè)置。當(dāng)SOCKET n以IPRAW模式打開時,它發(fā)送和接收的是由Sn_PROTO設(shè)置的協(xié)議號的數(shù)據(jù)。Sn_PROTO的賦值范圍在0x00 ~ 0xFF之間。但W7100不支持TCP(0x06)和UDP(0x11)的協(xié)議號。協(xié)議號由IANA(互聯(lián)網(wǎng)編號分配機構(gòu))定義。詳細內(nèi)容請參考在線信息:

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

          例:網(wǎng)絡(luò)控制信息協(xié)議(ICMP)的協(xié)議號為0x01,網(wǎng)絡(luò)分組管理協(xié)議的協(xié)議號為0x02。

          Sn_TOS(SOCKET n服務(wù)類型(TOS)寄存器)[R/W][0xFE4015 + 0x100n][0x00]

          它設(shè)置服務(wù)類型(TOS),這是IP層數(shù)據(jù)包中IP包頭中的一個字段。必須在OPEN命令之前

          進行設(shè)置。

          請參考:http://www.iana.org/assignments/ip-parameters.

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

          它設(shè)置IP層數(shù)據(jù)包中IP包頭中的生存時間(TTL)字段。必須在OPEN命令之前進行設(shè)置。

          請參考: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字節(jié)。復(fù)位后默認為2K字節(jié)。8個SOCKET的Sn_RXMEM_SIZE的總和為16K字節(jié)。


          上一頁 1 2 3 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();