基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)_第1頁
基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)_第2頁
基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)_第3頁
基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)_第4頁
基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于DM9000A和LPC2214的嵌入式以太網(wǎng)接口設(shè)計(jì)排行榜 收藏 打印 發(fā)給朋友 舉報(bào) 來源: elenchina 發(fā)布者:劉偉明、杜林 熱度8票 瀏覽180次 【共0條評(píng)論】【我要評(píng)論】 時(shí)間:2009年6月08日 16:34引言互聯(lián)網(wǎng)的迅速發(fā)展使得網(wǎng)絡(luò)用戶呈指數(shù)增長,在使用計(jì)算機(jī)進(jìn)行網(wǎng)絡(luò)互聯(lián)的同時(shí),各種家電設(shè)備、儀器儀表以及工業(yè)生產(chǎn)中的數(shù)據(jù)采集與控制設(shè)備也在逐步地走向網(wǎng)絡(luò)化,以便共享網(wǎng)絡(luò)中龐大的信息資源。以太網(wǎng)技術(shù)以其靈活方便的連接方式、良好的開放性、高效、低廉等優(yōu)點(diǎn),已經(jīng)廣泛地應(yīng)用于各種計(jì)算機(jī)網(wǎng)絡(luò),并且還在不斷地發(fā)展。目前基于以太網(wǎng)的新技術(shù)和聯(lián)網(wǎng)設(shè)備不斷出現(xiàn),以太網(wǎng)已經(jīng)成為事實(shí)上最常

2、用的網(wǎng)絡(luò)標(biāo)準(zhǔn)之一。以太網(wǎng)控制芯片是以太網(wǎng)接口的核心器件,其性能是影響網(wǎng)絡(luò)性能的關(guān)鍵的因素之一,如何正確使用網(wǎng)絡(luò)控制器是設(shè)計(jì)以太網(wǎng)接口的關(guān)鍵。本文介紹了一種以高性能的以太網(wǎng)控制芯片DM9000A和32位ARM處理器LPC2214為核心的嵌入式以太網(wǎng)接口的實(shí)現(xiàn)方法。1、以太網(wǎng)控制器DM9000A介紹DM9000A是DAVICOM公司推出的一種高度集成、功能強(qiáng)大、少引腳、性價(jià)比高的單片快速以太網(wǎng)控制芯片,非常適用于嵌入式系統(tǒng)設(shè)計(jì)。圖1為 DM9000A內(nèi)部結(jié)構(gòu)框圖。DM9000A具有一個(gè)通用的微處理器接口,內(nèi)部集成了16kB SRAM(其中13kB用作接收緩沖區(qū),3kB作為發(fā)送緩沖區(qū)),對(duì)內(nèi)部存儲(chǔ)器

3、訪問支持8位和16位數(shù)據(jù)接口以適用于不同的微處理器;內(nèi)部集成了一個(gè) 10/100M自適應(yīng)PHY,可以連接到3類、4類、5類的10M無屏蔽雙絞線和5類的100M無屏蔽雙絞線。圖1 DM9000A內(nèi)部結(jié)構(gòu)框圖DM9000A體積小,只有48個(gè)引腳,有利于縮小PCB面積;它完全支持IEEE802.3u規(guī)格,還支持IEEE802.3x全雙工流控制。DM9000A功耗非常低,單電源3.3V工作,內(nèi)置 3.3V變2.5V電源電路,I/O端口支持3.3V到5V的容差。2、網(wǎng)絡(luò)接口硬件電路設(shè)計(jì)網(wǎng)絡(luò)接口硬件電路使用的芯片主要有處理器LPC2214、復(fù)位芯片CAT1025、以太網(wǎng)控制芯片DM9000A以及網(wǎng)卡驅(qū)動(dòng)變

4、壓器HS9016等。LPC2214為NXP公司推出的基于ARM7TDMI內(nèi)核的16/32位RISC處理器,功能強(qiáng)大,內(nèi)置PLL鎖相環(huán)可以設(shè)置CPU的工作頻率達(dá)60MHz,為高速處理網(wǎng)絡(luò)協(xié)議提供了保證;內(nèi)部帶256kB FLASH和16kB RAM,同時(shí)外擴(kuò)了256k字的SRAM,為嵌入式TCP/IP協(xié)議棧提供了必要的內(nèi)存空間。復(fù)位監(jiān)控芯片CAT1025內(nèi)部集成了2k位EEPROM,可以將網(wǎng)卡的物理地址、制造廠商等基本信息保存到CAT1025中,網(wǎng)絡(luò)控制器DM9000A保持默認(rèn)配置,這樣可以省去網(wǎng)卡的配置存儲(chǔ)器,減少硬件平臺(tái)的面積。網(wǎng)絡(luò)接口硬件框圖如圖2所示。系統(tǒng)采用16位模式, DM9000A

5、的EECS引腳保持默認(rèn)的懸空狀態(tài),數(shù)據(jù)線SD0-SD15直接與LPC2214數(shù)據(jù)線的低16位D0-D15連接。為了對(duì)DM9000A進(jìn)行可靠硬件復(fù)位,復(fù)位引腳PWRST上的復(fù)位信號(hào)至少保持20ms,CPU的復(fù)位芯片CAT1025的復(fù)位脈沖寬度典型值為200ms,PWRST與處理器的復(fù)位信號(hào)nRST同為低電平有效,因此可將這兩個(gè)引腳相連,這樣在系統(tǒng)上電復(fù)位處理器的同時(shí)也對(duì)網(wǎng)絡(luò)控制器進(jìn)行復(fù)位。DM9000A的IO 讀信號(hào)線IOR、寫信號(hào)線IOW分別與LPC2214的讀信號(hào)線RD、寫信號(hào)線WR相連;片選信號(hào)CS與處理器的Bank3片選信號(hào)CS3相連,因此網(wǎng)絡(luò)控制器的端口地址IOaddress為0x。讀

6、寫信號(hào)與片選信號(hào)都是保持默認(rèn)設(shè)置的低電平有效。在DM9000A中只有INDEX端口與DATA端口兩個(gè)寄存器可以直接被CPU直接訪問,其它所有內(nèi)部控制和狀態(tài)寄存器都是通過這兩個(gè)端口寄存器間接訪問的。網(wǎng)絡(luò)控制器CMD引腳決定了處理器訪問的是哪個(gè)端口寄存器:當(dāng)CMD=0時(shí),主機(jī)訪問的是INDEX端口寄存器;當(dāng)CMD=1時(shí),訪問的是DATA端口寄存器。設(shè)計(jì)中將CMD引腳與處理器的地址線A2相連,則DM9000A的2個(gè)外部接口端口地址分別為:INDEX端口地址 IOaddress+0x00DATA端口地址 IOaddress+0x04實(shí)際中INDEX端口寄存器保存的是訪問DATA端口寄存器的內(nèi)部寄存器的

7、地址,因此對(duì)DM9000A控制或狀態(tài)寄存器訪問的命令順序是:1)寫要訪問寄存器的地址到INDEX端口;2)通過DATA端口來讀/寫數(shù)據(jù)。3、網(wǎng)絡(luò)接口的軟件設(shè)計(jì)以太網(wǎng)接口電路的工作原理是:在系統(tǒng)上電時(shí),處理器通過總線對(duì)DM9000A完成初始化后,DM900A進(jìn)入數(shù)據(jù)收發(fā)等待狀態(tài);當(dāng)處理器要向以太網(wǎng)發(fā)送數(shù)據(jù)幀時(shí),先通過上層協(xié)議函數(shù)對(duì)數(shù)據(jù)進(jìn)行封裝,然后通過總線逐字節(jié)發(fā)送到DM9000A的發(fā)送緩沖區(qū)中,將數(shù)據(jù)長度等信息填充到DM9000A相應(yīng)的寄存器中,使能發(fā)送命令后,DM9000A自動(dòng)將數(shù)據(jù)進(jìn)行MAC組幀并發(fā)送出去;當(dāng)接收到以太網(wǎng)數(shù)據(jù)幀時(shí),處理器首先檢測(cè)幀的合法性,保存正確的數(shù)據(jù)幀,然后將正確的數(shù)據(jù)

8、幀發(fā)送到上層協(xié)議進(jìn)行處理。網(wǎng)絡(luò)接口的軟件設(shè)計(jì)主要有底層網(wǎng)卡驅(qū)動(dòng)程序和上層通信協(xié)議兩大部分,網(wǎng)卡的驅(qū)動(dòng)程序包括網(wǎng)卡芯片的初始化、以太網(wǎng)數(shù)據(jù)幀發(fā)送和接收。3.1 DM9000A的初始化為了啟動(dòng)網(wǎng)絡(luò)控制器DM9000A,并使之處于接收和發(fā)送就緒狀態(tài),必須對(duì)其進(jìn)行初始化。DM9000A的初始化主要是設(shè)置一些關(guān)鍵的寄存器,具體流程如下:1)設(shè)置通用寄存器GPR的Bit0(PHYPD位)為0,啟動(dòng)PHY。2)設(shè)置網(wǎng)絡(luò)控制寄存器NCR的Bit0 (RST位)為1,進(jìn)行軟件復(fù)位。3)設(shè)置網(wǎng)絡(luò)控制寄存器NCR,進(jìn)行網(wǎng)絡(luò)工作模式設(shè)置。4)設(shè)置中斷屏蔽寄存器IMR的Bit7(PAR位)為1,使能RX/TX緩沖器的內(nèi)

9、存讀/寫地址指針的自動(dòng)返回功能。5)寫6字節(jié)的以太網(wǎng)節(jié)點(diǎn)地址到物理地址寄存器PAR中。6)讀取網(wǎng)絡(luò)狀態(tài)寄存器NSR清除TX狀態(tài)標(biāo)志,讀取中斷狀態(tài)寄存器ISR清除中斷狀態(tài)標(biāo)志。7)設(shè)置中斷屏蔽寄存器IMR的Bit0/Bit1,使能發(fā)送和接收中斷。8)設(shè)置接收控制寄存器RCR的Bit0(RXEN)為1,使能接收功能。完成上述初始化后,網(wǎng)絡(luò)控制器就可以正常啟動(dòng)和收發(fā)數(shù)據(jù)包了。3.2 發(fā)送數(shù)據(jù)包DM9000A內(nèi)部有16kB的SRAM用來作為收發(fā)數(shù)據(jù)的緩沖區(qū),其中地址從0x0000到0x0BFFF共3kB空間用來作為發(fā)送數(shù)據(jù)緩沖區(qū),可以同時(shí)保存2個(gè)完整的以太網(wǎng)幀,在設(shè)計(jì)中將發(fā)送緩沖區(qū)看作2個(gè)獨(dú)立發(fā)送緩存

10、區(qū),可分別標(biāo)記為index I和index II。發(fā)送過程如下:LPC2214首先通過寫寄存器MWCMD將要發(fā)送的一幀數(shù)據(jù)寫入index I中,將該幀數(shù)據(jù)的長度寫入長度寄存器FCH和FDH中;然后將發(fā)送控制寄存器TCR的bit1置位,啟動(dòng)發(fā)送該幀數(shù)據(jù),DM9000A自動(dòng)對(duì)發(fā)送緩存區(qū)中的數(shù)據(jù)進(jìn)行以太網(wǎng)組幀后,開始發(fā)送index I中的數(shù)據(jù)。在發(fā)送index I中數(shù)據(jù)同時(shí),將下一幀數(shù)據(jù)寫入index II中,當(dāng)index I中的數(shù)據(jù)發(fā)送完成后,將index II中數(shù)據(jù)長度寫入長度寄存器,啟動(dòng)網(wǎng)絡(luò)控制器發(fā)送index II中的數(shù)據(jù),同時(shí)將要發(fā)送的下一幀數(shù)據(jù)寫入index I。在程序中可以通過檢測(cè)網(wǎng)絡(luò)

11、狀態(tài)寄存器NSR的Bit2(TX1END位)、Bit3(TX2END)是否為1判斷哪個(gè)緩存區(qū)中的數(shù)據(jù)發(fā)送完畢。通過對(duì)這兩個(gè)發(fā)送緩存區(qū)進(jìn)行如此輪流操作,不僅可以避免在單一發(fā)送緩沖區(qū)模式下向發(fā)送緩存區(qū)寫入數(shù)據(jù)包時(shí)容易產(chǎn)生覆蓋了上一次沒有發(fā)送完的數(shù)據(jù)的錯(cuò)誤操作,也不必等待上次數(shù)據(jù)發(fā)完后再向發(fā)送緩存區(qū)寫入當(dāng)前的數(shù)據(jù),從而有效的避免了處理器的等待時(shí)間,提高數(shù)據(jù)發(fā)送的效率和速度。實(shí)際中為了提高效率,可采用中斷方式發(fā)送數(shù)據(jù)包。首先CPU利用上層協(xié)議函數(shù)將要發(fā)送的數(shù)據(jù)按照規(guī)定的格式進(jìn)行封裝并寫到DM9000A發(fā)送緩沖區(qū)中;然后由上層協(xié)議函數(shù)啟動(dòng)發(fā)送數(shù)據(jù)包的第一幀數(shù)據(jù),利用發(fā)送結(jié)束中斷程序來對(duì)發(fā)送結(jié)果作相應(yīng)處理

12、。產(chǎn)生發(fā)送完成中斷后,中斷程序先讀取網(wǎng)絡(luò)狀態(tài)寄存器NSR來判斷是哪個(gè)發(fā)送緩存區(qū)中的數(shù)據(jù)發(fā)送完成,然后讀取相應(yīng)的發(fā)送狀態(tài)寄存器來判斷數(shù)據(jù)是否發(fā)送成功,若失敗則重發(fā)該緩存區(qū)數(shù)據(jù),若成功則判斷是否還有數(shù)據(jù)幀要發(fā)送,若有,則啟動(dòng)發(fā)送另一個(gè)緩沖區(qū)中的數(shù)據(jù),同時(shí)通知上層協(xié)議函數(shù)將下一幀數(shù)據(jù)寫入空的發(fā)送緩存器中。中斷服務(wù)程序流程圖如圖3所示。3.3 數(shù)據(jù)接收程序在16kB的內(nèi)部SRAM中地址為0x0C000x3FFF的13kB空間用來作為數(shù)據(jù)接收緩存區(qū),它是一個(gè)環(huán)形結(jié)構(gòu)。當(dāng)使能數(shù)據(jù)接收功能后,DM9000A就會(huì)自動(dòng)接收數(shù)據(jù),一旦它接收完一幀數(shù)據(jù)后就會(huì)產(chǎn)生一個(gè)接收中斷,接收的數(shù)據(jù)包的格式為:前4個(gè)字節(jié)為一個(gè)數(shù)

13、據(jù)包的包頭,它包含了一個(gè)數(shù)據(jù)包的基本信息。第一個(gè)字節(jié)為接收標(biāo)志:若是01H表明收到數(shù)據(jù),若是00H則說明沒有收到數(shù)據(jù),若是其他值則需要重新啟動(dòng)PHY;第二個(gè)字節(jié)為狀態(tài)標(biāo)志,由此可以判斷接收到的數(shù)據(jù)包類型以及數(shù)據(jù)正確與否;接下來的2個(gè)字節(jié)為數(shù)據(jù)包的長度,低字節(jié)在前,高字節(jié)在后;最后是接收到的數(shù)據(jù)。通過MRCMDX寄存器來讀取接收標(biāo)志,通過MRCMD寄存器來讀取接收狀態(tài)、數(shù)據(jù)包長度和數(shù)據(jù)包數(shù)據(jù)等內(nèi)容。根據(jù)幀的格式可以分析接收到的數(shù)據(jù)的正確性,保存正確的數(shù)據(jù)并上層協(xié)議處理。接收數(shù)據(jù)包的中斷服務(wù)程序流程圖如圖4所示。3.4 上層通信協(xié)議嵌入式系統(tǒng)的以太網(wǎng)互連采用的通信協(xié)議都是TCP/IP協(xié)議。TCP/

14、IP協(xié)議一般分為4層,即網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。TCP/IP協(xié)議是一個(gè)網(wǎng)絡(luò)協(xié)議族,協(xié)議按上面所述不同的網(wǎng)絡(luò)層次進(jìn)行開發(fā),每一層分別負(fù)責(zé)不同通信功能,相應(yīng)的有不同的協(xié)議。由于嵌入式硬件資源和實(shí)時(shí)性要求的限制,其TCP/IP協(xié)議要求占用存儲(chǔ)資源盡可能小,處理速度足夠快,因此要針對(duì)應(yīng)用的特點(diǎn)對(duì)TCP/IP進(jìn)行必要的裁減與優(yōu)化。LwIP是瑞士計(jì)算機(jī)科學(xué)院的Adam Dunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧,其大部分源碼是用ANSIC語言編寫的便于移植。LwIP既可以移植到操作系統(tǒng)上,又可以在無操作系統(tǒng)的情況下獨(dú)立運(yùn)行。LwIP協(xié)議棧實(shí)現(xiàn)的重點(diǎn)是在保證主要功能的

15、基礎(chǔ)上占用盡量少的RAM,很適合在嵌入式系統(tǒng)中使用7。C/OS-II是專門為嵌入式應(yīng)用設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng),它采用了基于優(yōu)先級(jí)的占先式實(shí)時(shí)內(nèi)核,包含了任務(wù)管理、時(shí)間管理、任務(wù)間的同步(信號(hào)量、郵箱、消息隊(duì)列)和內(nèi)存管理等功,具有源代碼開放、方便裁減,可移植性強(qiáng)等特點(diǎn)8。在C/OS-II操作系統(tǒng)下移植LwIP主要注意以下幾點(diǎn):(1)修改頭文件中一些與CPU和C編譯器相關(guān)的定義,如數(shù)據(jù)長度、CPU存儲(chǔ)字的高地位順序等,這些都要與C/OS-II定義的數(shù)據(jù)長度等參數(shù)一致。此外,一般情況下C語言的結(jié)構(gòu)體struct是4字節(jié)對(duì)齊的,但是在處理數(shù)據(jù)包的時(shí)候,LwIP使用的是通過結(jié)構(gòu)體中不同數(shù)據(jù)的長度來讀取相應(yīng)

16、的數(shù)據(jù)的,因此一定要在定義struct的時(shí)候使用mpacked關(guān)鍵字,讓編譯器放棄struct的字節(jié)對(duì)齊。(2)LwIP 協(xié)議在設(shè)計(jì)時(shí)為了適應(yīng)不同的操作系統(tǒng),沒有在代碼中使用和某一個(gè)操作系統(tǒng)相關(guān)的系統(tǒng)調(diào)用和數(shù)據(jù)結(jié)構(gòu),而是在LwIP 和操作系統(tǒng)之間增加了一個(gè)操作系統(tǒng)的封裝層,該封裝層主要完成系統(tǒng)的初始化、任務(wù)的同步、時(shí)間管理和內(nèi)存管理的功能。因此需要利用C/OS-II操作系統(tǒng)的函數(shù)完成LwIP 中信號(hào)量、消息隊(duì)列、定時(shí)器和線程創(chuàng)建等功能的封裝。這部分內(nèi)容都在sys_arch.h和sys_arch.c兩個(gè)函數(shù)中。(3)原始API函數(shù)接口是基于回調(diào)(callback)的應(yīng)用程序接口,調(diào)用這種接口雖然增加變成難度,但有利于提高應(yīng)用程序的性能,節(jié)約系統(tǒng)資源。4、結(jié)論本文介紹的以ARM處理器LPC2214為核心,采用DM9000A作為網(wǎng)絡(luò)接口芯片的嵌入式以太網(wǎng)接口結(jié)構(gòu)簡單、體積小、功耗低、價(jià)格適中,在工業(yè)、信息家電等領(lǐng)域有廣泛的應(yīng)用前景。參考文獻(xiàn)1 DAVICOM. DM9000A Ethernet Controller with General Processor Interface. DATASHEET.2006.2周立功等ARM嵌入式系統(tǒng)基礎(chǔ)教程北京:北京航空航天大學(xué)出版社,20053陳小毛,陳尚松32位軟核處理器NIOSII的以太網(wǎng)接口設(shè)計(jì)與實(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論