《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)
一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2013年第9期
陳 實(shí)1,2,王 琪1,2,張鐵軍2,王東輝2,侯朝煥2
1.中國(guó)科學(xué)院大學(xué),北京100049; 2.中國(guó)科學(xué)院聲學(xué)研究所,北京100190
摘要: 設(shè)計(jì)了一種基于TCP/IP通信協(xié)議、使用以太網(wǎng)控制器芯片W5100與ARM內(nèi)核芯片AT91SAM7SE實(shí)現(xiàn)的數(shù)據(jù)傳輸系統(tǒng)。介紹了系統(tǒng)的硬件設(shè)計(jì)、接口時(shí)序以及軟件流程。設(shè)計(jì)提出對(duì)W5100與AT91SAM7SE的硬件接口采用直接總線連接模式,軟件操作采用直接總線連接模式與間接總線連接模式相混合的方式,以達(dá)到高速傳輸?shù)哪康摹?
關(guān)鍵詞: ARM W5100 TCPIP 數(shù)據(jù)傳輸
中圖分類號(hào): TP3
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)09-0054-03
A data transfer system based on W5100
Chen Shi1,2,Wang Qi1,2,Zhang Tiejun2,Wang Donghui2,Hou Chaohuan2
1.University of Chinese Academy of Sciences,Beijing 100049,China; 2.Institute of Acoustics,Chinese Academy of Sciences,Beijing 100190,China
Abstract: A data transfer system is introducesd in this paper,that is based on TCP/IP protocols and using Ethernet controller W5100 and AT91SAM7SE which combines an ARM core. This paper describes the system′s hardware design, interface timing as well as the software flow. In order to achieve high speed transmission, the interface between W5100 and AT91SAM7SE is direct bus interface mode, and the software operation is based on direct bus interface mode mixed with indirect bus interface mode.
Key words : W5100;TCP/IP;data transfer

    在諸多應(yīng)用中[1]都需要對(duì)終端提供大量數(shù)據(jù)流[2]。使用數(shù)據(jù)傳輸系統(tǒng)進(jìn)行傳輸能夠根據(jù)終端需求動(dòng)態(tài)提供數(shù)據(jù),并且數(shù)據(jù)傳輸系統(tǒng)能夠針對(duì)不同終端的接口時(shí)序進(jìn)行靈活調(diào)整[3]。本設(shè)計(jì)提出一種基于TCP/IP通信協(xié)議、使用以太網(wǎng)控制器芯片W5100ARM內(nèi)核芯片實(shí)現(xiàn)的數(shù)據(jù)傳輸系統(tǒng)。本系統(tǒng)能夠?qū)C上的文件數(shù)據(jù)連續(xù)地傳輸給終端,并且針對(duì)終端接口的多樣性特點(diǎn),能夠通過(guò)簡(jiǎn)單的編程進(jìn)行調(diào)整,以完成相同的數(shù)據(jù)傳輸功能。本文針對(duì)終端具有數(shù)據(jù)緩沖隊(duì)列FIFO的情況闡述本系統(tǒng)的硬件設(shè)計(jì)、接口時(shí)序以及軟件流程。對(duì)于不同終端,本系統(tǒng)只需經(jīng)過(guò)少量的軟件修改就可達(dá)到數(shù)據(jù)傳輸?shù)哪康亍?br/>

1 以太網(wǎng)控制器芯片W5100
    以太網(wǎng)控制芯片W5100是WIZnet公司推出的一款單片網(wǎng)絡(luò)接口芯片[4]。W5100內(nèi)部集成了傳輸層、網(wǎng)絡(luò)層TCP/IP協(xié)議棧與數(shù)據(jù)鏈路層及介質(zhì)訪問(wèn)子層MAC協(xié)議。這使得通過(guò)W5100進(jìn)行以太網(wǎng)通信時(shí),各層協(xié)議對(duì)設(shè)計(jì)者而言都是透明的。設(shè)計(jì)者不需要借助操作系統(tǒng),只需要通過(guò)W5100的地址線、數(shù)據(jù)線對(duì)其內(nèi)部寄存器進(jìn)行簡(jiǎn)單的讀寫訪問(wèn),就能靈活方便地控制W5100進(jìn)行以太網(wǎng)通信。W5100還集成了物理層PHY并支持信號(hào)極性自適應(yīng),這使得在硬件設(shè)計(jì)中,只需要在W5100外部使用一個(gè)帶有網(wǎng)絡(luò)變壓器的RJ45座HR911103C,就可以實(shí)現(xiàn)其與PC通信。故本設(shè)計(jì)中選擇W5100實(shí)現(xiàn)以太網(wǎng)通信,既保證了接口簡(jiǎn)單,又使得開(kāi)發(fā)周期短。
    本設(shè)計(jì)中,對(duì)W5100供給3.3 V與1.8 V兩種電源電壓。為了保證信號(hào)完整性,降低干擾,兩種電源電壓分別劃分為數(shù)字網(wǎng)絡(luò)與模擬網(wǎng)絡(luò),網(wǎng)絡(luò)之間使用電感隔離;其地平面也分為數(shù)字地與模擬地,網(wǎng)絡(luò)之間使用鐵心磁珠隔離。W5100使用直接總線連接模式,其15 bit地址線與8 bit數(shù)據(jù)線與ARM芯片的通用I/O連接;W5100的控制線/CS、/WR、/RD、/RESET也直接與ARM芯片的通用I/O連接。由此實(shí)現(xiàn)ARM芯片對(duì)W5100的控制。W5100的SPI接口中的SEN、SCLK、MISO接固定電壓數(shù)字0 V,/SCS接固定電壓數(shù)字3.3 V,MISO保持懸空,由此屏蔽SPI接口。
2 ARM內(nèi)核芯片AT91SAM7SE
    AT91SAM7SE是Atmel公司的一款基于ARM7內(nèi)核的處理器[5]。在本系統(tǒng)中,其作為MCU,完成對(duì)W5100一側(cè)的讀寫訪問(wèn),并完成對(duì)終端一側(cè)的數(shù)據(jù)轉(zhuǎn)發(fā)。AT91SAM7SE具有豐富的通用I/O管腳,能保證整個(gè)系統(tǒng)的靈活性。AT91SAM7SE使用 55.296 MHz作為主時(shí)鐘MCK、處理器時(shí)鐘PCK。
3 硬件設(shè)計(jì)與接口時(shí)序
3.1 硬件設(shè)計(jì)

    W5100與AT91SAM7SE在硬件設(shè)計(jì)中采用直接總線連接模式,可以同時(shí)兼容間接總線連接模式。這樣設(shè)計(jì)是為了能夠在連續(xù)訪問(wèn)發(fā)送存儲(chǔ)器、接收存儲(chǔ)器時(shí)工作于間接總線模式,使用W5100的地址自增功能;并且在非連續(xù)訪問(wèn)時(shí)工作于直接總線模式,減少讀寫時(shí)序,以提高傳輸速率。
    AT91SAM7SE與W5100之間的接口、AT91SAM7SE與終端之間的接口以及硬件設(shè)計(jì)的總體框圖如圖1所示。

3.2 AT91SAM7SE與W5100間接口時(shí)序
    當(dāng)AT91SAM7SE在/RESET線上輸出低電平2 ?滋s及以上時(shí),W5100被復(fù)位,其公共寄存器、各端口寄存器都恢復(fù)初始值。本設(shè)計(jì)中/CS始終同步于/WR和/RD選中W5100。/WR、/RD與DATA[7:0]、ADDR[14:2]、ADDR[1:0]構(gòu)成讀寫時(shí)序,完成對(duì)W5100片內(nèi)寄存器、存儲(chǔ)器的訪問(wèn),/WR與/RD同時(shí)只能有一個(gè)有效。W5100可以工作于兩種總線模式下。
3.2.1 間接總線模式
    當(dāng)AT91SAM7SE連續(xù)訪問(wèn)W5100發(fā)送存儲(chǔ)器、接收存儲(chǔ)器時(shí),W5100工作在間接總線模式下,其地址線ADDR[14:2]穩(wěn)定輸出0。AT91SAM7SE首先在地址線ADDR[1:0]輸出01,選中W5100間接總線模式地址寄存器IDM_AR0;然后在數(shù)據(jù)線DATA[7:0]輸出需要訪問(wèn)的W5100存儲(chǔ)器地址高7位AH,接著/WR與/CS輸出下降沿將AH寫入IDM_AR0;之后AT91SAM7SE再將需要訪問(wèn)的W5100存儲(chǔ)器地址低8位AL以同樣方式寫入間接總線模式地址寄存器IDM_AR1;最后,通過(guò)/CS與/WR(或與/RD)連續(xù)輸出下降沿,連續(xù)訪問(wèn)間接總線模式數(shù)據(jù)寄存器IDM_DR。間接總線模式地址寄存器IDM_AR0與IDM_AR1值的自增以及間接總線模式數(shù)據(jù)寄存器IDM_DR值的變化同步于/WR或/RD的下降沿。AT91S-
    AM7SE在間接總線模式下連續(xù)訪問(wèn)W5100的存儲(chǔ)器時(shí)序如圖2、圖3所示。

3.2.2 直接總線模式
    當(dāng)AT91SAM7SE訪問(wèn)W5100模式寄存器、端口寄存器時(shí),W5100工作在直接總線模式下,其15 bit地址線ADDR[14:0]直接選中各個(gè)寄存器。然后通過(guò)/CS與/WR(或與/RD)輸出下降沿實(shí)現(xiàn)訪問(wèn)。
3.2.3 間接總線模式與直接總線模式對(duì)比
      訪問(wèn)單一存儲(chǔ)器時(shí),使用間接總線模式需要3個(gè)總線時(shí)序,使用直接總線模式只需要一個(gè)總線時(shí)序。連續(xù)訪問(wèn)存儲(chǔ)器時(shí),使用地址自增功能,能夠使得訪問(wèn)一個(gè)地址平均花費(fèi)大約一個(gè)總線時(shí)序。雖然在間接總線模式下使用地址自增功能時(shí),平均訪問(wèn)一個(gè)地址仍然不會(huì)花費(fèi)少于一個(gè)總線時(shí)序,但是在連續(xù)訪問(wèn)時(shí),AT91SAM7SE不需要在其通用I/O上準(zhǔn)備每一個(gè)需要訪問(wèn)的W5100的存儲(chǔ)器地址,在連續(xù)訪問(wèn)開(kāi)始后ADDR[1:0]的值是固定為11,因此平均花費(fèi)在一個(gè)總線時(shí)序上的指令條數(shù)有所減少。所以當(dāng)AT91SAM7SE配置為W5100工作模式、端口模式來(lái)讀取和更新端口信息時(shí),使用直接總線模式以減少總線時(shí)序次數(shù);當(dāng)AT91SAM7SE讀取、寫入TCP數(shù)據(jù)段數(shù)據(jù)時(shí),使用間接總線模式以減少總線時(shí)序中的平均指令數(shù)。
3.3 AT91SAM7SE與終端間接口時(shí)序
    AT91SAM7SE將從W5100接收存儲(chǔ)器中取回的TCP數(shù)據(jù)段數(shù)據(jù)先緩存在片內(nèi),再轉(zhuǎn)發(fā)給終端??紤]到本設(shè)計(jì)終端具有數(shù)據(jù)緩沖隊(duì)列FIFO,所以只使用RESET、CS、BLOCK、WR、DATA[31:0]信號(hào)線。當(dāng)終端具有存儲(chǔ)器空間時(shí),還需要使用ADDRESS信號(hào)線。根據(jù)終端接口的不同,可以對(duì)AT91SAM7SE編程,使其生成匹配的接口時(shí)序。由于選擇了ARM內(nèi)核的芯片作為MCU完成存儲(chǔ)轉(zhuǎn)發(fā)功能,所以能夠保證編程簡(jiǎn)便,易于經(jīng)過(guò)少量修改而匹配各種終端的接口時(shí)序,使得代碼的重用性強(qiáng)。本設(shè)計(jì)中,RESET輸出高電平時(shí)清空FIFO;CS實(shí)現(xiàn)對(duì)終端的片選。當(dāng)FIFO空時(shí),BLOCK信號(hào)無(wú)效,指示AT91SAM7SE可以轉(zhuǎn)發(fā)數(shù)據(jù);當(dāng)FIFO趨近于滿時(shí),終端給出指示信號(hào)BLOCK,阻塞AT91SAM7SE,使其停止轉(zhuǎn)發(fā)數(shù)據(jù)。本設(shè)計(jì)中,AT91SAM7SE在WR的每一次上升沿將TCP數(shù)據(jù)段中的數(shù)據(jù)轉(zhuǎn)發(fā)到DATA[31:0]。由于AT91SAM7SE編程靈活,通用I/O管腳豐富,故可以重用于對(duì)各種終端進(jìn)行數(shù)據(jù)傳輸。
4 軟件流程
    在本設(shè)計(jì)中,AT91SAM7SE作為W5100的控制芯片,控制其工作在TCP/IP協(xié)議下,并作為服務(wù)器模式端SERVER。而客戶模式端CLIENT由PC機(jī)充當(dāng),PC運(yùn)行Linux操作系統(tǒng),使用套接字Socket編程。由于PC通過(guò)本系統(tǒng)向終端傳輸大量數(shù)據(jù)流,這些數(shù)據(jù)不經(jīng)過(guò)路由,獨(dú)享信道,所以不會(huì)出現(xiàn)路由擁塞而導(dǎo)致分組被丟棄的情況。因此,本設(shè)計(jì)簡(jiǎn)化了關(guān)于分組超時(shí)的檢測(cè),使用AT91SAM7SE查詢W5100端口狀態(tài)寄存器Sn_SR及其他端口寄存器的方式來(lái)獲知通信所處的狀態(tài),并使用寫端口命令寄存器Sn_CR的方式來(lái)控制通信進(jìn)程。圖4描述了PC通過(guò)本系統(tǒng)向終端傳輸數(shù)據(jù)的流程。

    PC上的Socket程序非常簡(jiǎn)單,只需要調(diào)用最基本的文件操作函數(shù)與Socket函數(shù)就能實(shí)現(xiàn)端口連接與文件傳輸。AT91SAM7SE上程序流程細(xì)節(jié)如下。
    (1)上電,復(fù)位:AT91SAM7SE開(kāi)始執(zhí)行程序。
    (2)芯片初始化:配置AT91SAM7SE時(shí)鐘模塊、PIO模塊等。
    (3)配置W5100:配置W5100的公共寄存器,設(shè)置IP地址、子網(wǎng)掩碼、MAC地址等。
    (4)配置TCP端口:配置端口寄存器,使端口工作于TCP模式,設(shè)置端口號(hào)等。
    (5)等待建立連接:寫端口命令寄存器,使端口處于等待PC發(fā)起連接的狀態(tài)。
    (6)監(jiān)聽(tīng)是否建立連接:輪詢端口狀態(tài)寄存器,循環(huán)等待端口與PC建立連接。
    (7)監(jiān)聽(tīng)是否接收到TCP數(shù)據(jù)段:輪詢端口接收數(shù)據(jù)長(zhǎng)度寄存器,循環(huán)等待W5100從PC接收到TCP數(shù)據(jù)段。
    (8)檢查是否為最末TCP數(shù)據(jù)段:查詢端口狀態(tài)寄存器,檢測(cè)當(dāng)前狀態(tài),判斷其是否為最末TCP數(shù)據(jù)段。
    (9)緩存TCP數(shù)據(jù)段中數(shù)據(jù):訪問(wèn)接收數(shù)據(jù)長(zhǎng)度寄存器、端口讀指針寄存器等,計(jì)算數(shù)據(jù)讀取位置等參數(shù),將接收到的TCP數(shù)據(jù)段數(shù)據(jù)以1 B為單位緩存在片上。
    (10)轉(zhuǎn)發(fā)數(shù)據(jù):將緩存在AT91SAM7SE片上的數(shù)據(jù)以4 B為單位向終端FIFO轉(zhuǎn)發(fā)。
    (11)斷開(kāi)連接,關(guān)閉TCP端口:寫端口命令寄存器,使端口關(guān)閉,斷開(kāi)與PC的連接。
    其中步驟(9)需要訪問(wèn)各寄存器,還需要通過(guò)間接總線模式數(shù)據(jù)寄存器連續(xù)訪問(wèn)接收存儲(chǔ)器。本設(shè)計(jì)中采用直接總線模式和間接總線模式相配合的方式,完成對(duì)TCP數(shù)據(jù)段數(shù)據(jù)的讀取,步驟如下:
    ①在直接總線模式下訪問(wèn)各寄存器。
    ②計(jì)算參數(shù),獲得TCP數(shù)據(jù)段數(shù)據(jù)在接收存儲(chǔ)器中的地址。
    ③切換至間接總線模式,開(kāi)啟地址自增功能。
    ④連續(xù)讀取接收寄存器。
    ⑤切換回直接總線模式。
    ⑥訪問(wèn)各寄存器,更新配置,繼續(xù)接收分組。
5 測(cè)試
    測(cè)試中,通過(guò)PC向本系統(tǒng)傳輸文件,再使用FPGA模擬終端FIFO的接口時(shí)序,同時(shí)將本系統(tǒng)傳輸至終端的數(shù)據(jù)輸出到邏輯分析儀。對(duì)比邏輯分析儀采樣信號(hào)與原始文件數(shù)據(jù)可以得出結(jié)論,本系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)的準(zhǔn)確傳輸。邏輯分析儀采樣結(jié)果如圖5所示。表1記錄了傳輸不同大小文件所用的時(shí)間與平均傳輸速率。兼顧系統(tǒng)的靈活性與性能,MCU工作在55.296 MHz的情況下,平均傳輸速率能夠達(dá)到2.7 Mb/s。

 

 

    本設(shè)計(jì)使用W5100與AT91SAM7SE實(shí)現(xiàn)了一種基于TCP/IP通信協(xié)議的數(shù)據(jù)傳輸系統(tǒng)。其硬件設(shè)計(jì)簡(jiǎn)單,軟件編程靈活方便,可以適應(yīng)不同的終端接口時(shí)序。整個(gè)系統(tǒng)具有集成度高、重用性強(qiáng)、適應(yīng)性廣的特點(diǎn)。
參考文獻(xiàn)
[1] 蔣峰.W5100在遠(yuǎn)程溫度采集系統(tǒng)中的應(yīng)用[J].化工自動(dòng)化及儀表,2011,38(2):214-217.
[2] 鄒依依,郭燦新,黃成軍,等.W5100在DSP遠(yuǎn)程以太網(wǎng)數(shù)據(jù)通信系統(tǒng)中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2008,21(8):20-21,23.
[3] 王炳義,劉爽,張偉,等.基于硬件協(xié)議棧W5100的圖像采集傳輸系統(tǒng)[J].電子技術(shù)應(yīng)用,2009,35(3):92-93,96.
[4] WIZnet Co.,Inc.W5100 datasheet version 1.2.4[Z].2011.
[5] Atmel.AT91SAM ARM-based Flash MCU SAM7SE version 6222F[Z].2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。