關鍵詞:TCP/IP協議棧;W3100A;Socket API;以太網
1 W3100A簡介
近年來,隨著技術的飛速進步,電子產品正朝著小型化、智能化和網絡化的方向發(fā)展。在小型嵌入式設備中實現以太網互聯正在成為研究和應用的熱點。在這種潮流的推動下,研究人員提出了許多解決方案。傳統的做法是在嵌入式設備中植入TCP/IP協議棧,或者移植一個具有TCP/IP協議棧的嵌入式操作系統。雖然上述做法在很多應用中取得了不錯的效果,但都是以犧牲大量資源為代價的。而本文介紹的W3100A硬件協議棧則可以在占用極低系統資源的條件下快速完成網絡通訊。
W3100A的主要性能特點如下:
●硬件協議棧包括TCP、 IP Ver.4、 UDP、 ICMP、 ARP;
●支持硬件以太網協議DLC和MAC;
●同時支持四路獨立的網絡連接;
●支持Ping命令;
●協議處理速度達到全雙工4~5Mbps;
●支持Intel/Motorola MCU總線接口;
●支持I2C接口;
●帶有標準的MII接口,可連接底層以太網接口芯片;
●可提供Socket API加速應用程序開發(fā);
●支持全雙工模式;
●其內建16KB雙口RAM可作為數據緩沖區(qū);
●采用0.35μm CMOS制造工藝。
2 W3100A的引腳功能
W3100A采用64腳LQFP封裝,其引腳分布如圖1所示。各引腳功能描述如下:
TXD[0]~TXD[3]:在TXD_CLK上升沿發(fā)送數據。串行模式時,TXD[0]用作串行數據發(fā)送引腳,TXD[1]~TXD[3]無效。
TXE:發(fā)送使能端。
TXD_CLK:數據發(fā)送時鐘,時鐘由以太網接口芯片提供。
RXD[0]~RXD[3]:在TXD_CLK下降沿接收數據。串行模式時,RXD[0]作為串行數據接收引腳,RXD[1]~RXD[3]無效。
RXDV/CRS:載波監(jiān)測。高電平有效。
RXD_CLK:數據接收時鐘,時鐘由以太網接口芯片提供。
COL:沖突探測引腳。在半雙工模式發(fā)生沖突時有效。
A[14~8]/DA[6~0]:在MCU總線接口模式下作為14~8位地址。在I2C模式下作為I2C接口6~0位設備地址。
A[7~0]:7~0位地址線。
D[7~0]:8位數據線。
INT:接收發(fā)送中斷請求。低電平有效。
CS:片選信號。低電平有效。
WR:寫信號。低電平有效。
RD:讀信號。低電平有效。
RESET:復位信號。
CLOCK:工作時鐘。通常由以太網接口芯片提供,推薦頻率為25MHz。
EXT_CLK:外部時鐘輸入信號。
LINK:表示是否已連接到以太網。低電平表示連接有效,高電平表示TCP超時或連接關閉。
SERIAL:10BASE-T SERIAL或NIBBLE選擇。
FDPLX:全雙工/半雙工選擇。0為全雙工,1為半雙工。
MODE[2~0]:用于選擇W3100A工作模式。000為時鐘模式;001為外部時鐘模式;010為無時鐘模式;011為I2C模式;1xx為測試模式。3 W3100A的內部結構
系統設計人員利用W3100A可以方便快捷地為產品添加網絡功能。W3100A的硬件TCP/IP協議棧包含了TCP、UDP、IP、ARP和ICMP協議。并支持一套與Windows系統相同的socket API。W3100的內部結構框圖如圖2所示。
W3100A共有32kB的內部存儲器空間。其中位于存儲器頂部地址為0x0000~0x01FF的1kB空間分配給了控制寄存器組,0x2000~0x3FFF則作為保留空間供給其它設備使用,而0x4000~0x5FFF為發(fā)送緩沖區(qū),0x6000~0x7FFF為數據接收緩沖區(qū)。由于W3100A可以為用戶提供4路獨立的連接通路,所以相對應的8kB發(fā)送緩沖區(qū)和 8kB接收緩沖區(qū)可以通過寄存器TMSR和RMSR進行配置。配置方法如圖3所示。
4 應用設計
4.1 硬件設計
W3100A有3種不同的工作模式,分別為Direct Bus I/F模式、Indirect Bus I/F模式和I2C Bus I/F模式。用戶可根據自己的實際情況進行選擇。下面就常用的Direct Bus I/F模式和I2C Bus I/F模式作以簡單介紹。
圖4是Direct Bus I/F模式的硬件結構框圖。
由圖可見,該模式下,W3100A共用了15條地址線、8位數據線、片選CS,及讀寫控制信號WR和RD。不難看出,該模式下硬件電路設計相對簡單,但要占用較多的MCU資源。同時還應該注意,在Direct Bus I/F模式下,W3100A的工作時鐘也有3種不同的模式,在大多數情況下,系統推薦使用Clocked 模式,因為該模式下系統可以穩(wěn)定的工作。但是如果系統中MCU的訪問速度小于100ns,則應為W3100A單獨外接時鐘并選擇External Clock模式。而當MCU的CS、RD、WD信號時序滿足W3100A的要求時,也可以不要時鐘。
圖5是I2C Bus I/F模式下,MCU與W3100A的連接示意圖。
I2C Bus I/F模式下,可使用SCL和SDA在MCU和W3100A之間串行傳輸數據,時鐘信號線SCL由MCU提供,SDA則用來在MCU和W3100A之間傳送地址和數據。只要系統中的MCU支持I2C總線即可使用該模式??梢钥闯觯褂迷撃J娇梢源罅繙p少MCU與W3100A的連接線,從而節(jié)?。停茫盏馁Y源。
4.2 軟件設計
此外,通過WIZnet公司為W3100A專門提供的Socket API軟件,可使網絡通訊的軟件設計更加方便。利用該軟件進行設計時,應首先初始化W3100A的網絡設置,即在相應的寄存器中設置默認網關、子網掩碼、本機物理地址和IP地址,然后建立Socket連接以實現通訊。整個過程與Windows Socket編程十分類似,此處不再贅述。
5 結論
W3100A具有傳輸速度快、工作穩(wěn)定可靠、系統開銷小等優(yōu)點,可以為小型嵌入式設備提供很好的網絡解決方案。