基于ARM-LPC2368的網(wǎng)絡接口的設計與實現(xiàn)
關鍵詞: 嵌入式系統(tǒng),以太網(wǎng),LPC2368,DP83848C
1 引言
隨著Internet技術(shù)的迅速發(fā)展,人們對信息共享的要求也不斷提高。目前,嵌入式系統(tǒng)已經(jīng)滲透到我們生活的每個角落,它與網(wǎng)絡的完美結(jié)合,為我們共享信息提供了很大的便利。PHILIPS公司的LPC2368是一款優(yōu)秀的微處理器,基于它的嵌入式系統(tǒng)如果沒有以太網(wǎng)接口,那么其應用價值也就會大打折扣。因此,就整個系統(tǒng)而言,以太網(wǎng)接口電路應是必不可少的,但同時也是相對較復雜的。
以太網(wǎng)接口電路主要由MAC控制器和物理層接口(Physical Layer,PHY)兩大部分構(gòu)成。LPC2368內(nèi)嵌一個以太網(wǎng)控制器,支持精簡的媒體獨立接口(Reduced Media Independent Interface,RMII)和帶緩沖DMA接口(Buffered DMA Interface,BDI),可在半雙工和全雙工模式下提供10M/100Mbps的以太網(wǎng)接入。因此,LPC2368內(nèi)部實際上己經(jīng)包含了以太網(wǎng)MAC控制,但并未提供物理層接口,所以,需要外接一片物理層芯片以提供以太網(wǎng)的接入通道。在這里選用National Semiconductor公司的DP83848C作為以太網(wǎng)物理層接口芯片,它提供了包括MII/RMII/SNI接口,可以很方便地與LPC2368連接。
2 LPC2368和DP83848C的介紹
2.1 微處理器LPC2368
LPC2368是基于ARM7TDMI-S內(nèi)核的32位微控制器,可在高達72MHz的頻率下操作,其功能強大且成本效率高,支持 10/100Ethernet、全速(12Mbps)USB 2.0 和 CAN 2.0B;具有高達512KB的片內(nèi)Flash、58KB的SRAM、10 位 A/D 和 D/A 轉(zhuǎn)換器和一個 IRC 振蕩器,還帶有 SD 存儲卡接口可供選擇,100引腳LQFP封裝(14141.4mm)。廣泛應用于工業(yè)控制、POS系統(tǒng)、協(xié)議轉(zhuǎn)換、加密系統(tǒng)等領域[1]。
2.2 物理層芯片DP83848C
DP83848C是一個10/100Mb/s單端低功耗物理層器件,有幾種智能降功耗模式,包括有25MHz時鐘輸出,很容易通過外接變壓器和雙絞線媒體接口;支持兩種IEEE 802.3u MII和RMII Rev 1.2,方便了設計;集成的亞層支持10BASE-T和100BASE-TX以太網(wǎng)協(xié)議;低功耗小于270mW、3.3V MAC接口;可配置的SNI接口;48引腳LQFP封裝(7x7mm)。DP83848C作為一種以太網(wǎng)物理層收發(fā)器,廣泛應用于高端外圍設備、工業(yè)控制和工廠自動化操作、通用的嵌入式應用領域[2]。
3 硬件部分設計
3.1 電路框圖
LPC2368與DP83848C連接比較簡單,直接通過RMII接口連接即可。連接好后,DP83848C再通過網(wǎng)絡隔離變壓器和RJ45接口接入傳輸媒體,其電路框圖如圖1所示。
圖 1 微控制器LPC2368與PHY芯片DP83848C的以太網(wǎng)接口電路框圖
3.2 以太網(wǎng)接口實際電路原理圖設計
DP83848C支持幾種MAC接口方式:(1)MII;(2)RMII (Reduced MII);(3)10 Mb 串行網(wǎng)絡接口(Serial Network Interface,SNI)。在這里我們使用的是RMII接口方式,通過設置引腳pin39和pin6來確定,如表1所示。
表1:MII方式選擇
MII_MODE (pin39) | SNI_MODE (pin6) | MAC Interface Mode |
0 | 0或1 | MII Mode |
1 | 0 | RMII Mode |
1 | 1 | 10 Mb SNI Mode |
由表1可以看出,pin39應接上高電平,pin6應接上低電平。同時因為在芯片內(nèi)部pin6下拉,默認為0,所以只要設置pin39接上高電平即可,這樣微處理器LPC2368就可以同PHY芯片DP83848C通過RMII接口方式連接。它們之間通過RMII接口連接,芯片和控制器連接所使用的引腳數(shù)目會比較少,且數(shù)據(jù)傳送速率是每次2位,即頻率50MHz,所以需要一個50MHz的晶體振蕩器連接到pin34 X1腳。
在RMII方式下,主要使用到的引腳有:1串行管理:MDC(pin31)、MDIO(pin30); 2MAC數(shù)據(jù):TX_EN(pin2)、TXD[1:0](pin4 pin3)、RX_ER(pin41)、CRS_DV(pin40)、RXD[1:0](pin44 pin43); 3時鐘:X1(pin34 ,RMII 參考時鐘是50MHz)、X2(pin33)。
Pin27置高使得DP83848C以100Mbps的速率工作, LED顯示DP83848C的工作狀態(tài)。16ST8515為網(wǎng)絡隔離變壓器,其主要是起信號傳輸、阻抗匹配、波形修復、雜波抑制以及高電壓隔離等作用,以保護系統(tǒng)的安全。通過protel 99 SE畫出電路原理圖如圖2所示。
圖2 以太網(wǎng)接口實際電路原理圖
4 軟件實現(xiàn)過程
軟件的實現(xiàn)主要有三個部分:系統(tǒng)的初始化、數(shù)據(jù)的發(fā)送和接收。
初始化部分完成以太網(wǎng)接口在使用之前的初始化工作,主要包括設置相關的寄存器、分配和初始化發(fā)送與接收緩沖區(qū)等。
4.1 以太網(wǎng)工作原理
在網(wǎng)絡接口層對應的數(shù)據(jù)包是完整的以太網(wǎng)幀格式的,因此要實現(xiàn)數(shù)據(jù)的發(fā)送和接收就必須按以太網(wǎng)IEEE802.3協(xié)議來進行,該協(xié)議所定義的幀結(jié)構(gòu)如表2所示。
表2:標準的以太幀格式
同步位 | 分隔位 | 目的地址 | 源地址 | 幀類型 | 數(shù)據(jù)段 | 填充 | 校驗位 |
56Bit | 8Bit | 48Bit | 48Bit | 16Bit | 1500Byte | 可選 | 32Bit |
每個網(wǎng)卡在出廠的時候有個全球固定的物理地址(MAC地址)。當總線上的一個節(jié)點發(fā)送一個數(shù)據(jù)幀,總線上其他的網(wǎng)絡節(jié)點都拷貝該數(shù)據(jù)幀,每個節(jié)點檢查數(shù)據(jù)幀的目的物理地址,如果和自己的物理地址匹配的話,該節(jié)點的網(wǎng)卡就接受該數(shù)據(jù)幀傳給上層協(xié)議處理,反之如果不匹配,該節(jié)點就丟棄數(shù)據(jù)幀。
4.2 發(fā)送與接收數(shù)據(jù)幀
采用中斷的方式發(fā)送和接收數(shù)據(jù)。
發(fā)送數(shù)據(jù)幀:將要發(fā)送的數(shù)據(jù)封裝成以太幀,并寫入發(fā)送緩沖區(qū);檢測網(wǎng)絡中有無數(shù)據(jù)在傳送,即上一個幀是否發(fā)送完畢,如果網(wǎng)絡中仍有數(shù)據(jù)在傳送,則暫時不能發(fā)送幀,若網(wǎng)絡中沒有數(shù)據(jù),則可以立即發(fā)送此幀;在發(fā)送該幀時,可同時封裝下一個數(shù)據(jù)幀,并將其寫入第二個發(fā)送緩沖區(qū);當中斷服務程序檢測到第一個數(shù)據(jù)幀發(fā)送完畢時,則可發(fā)送下一個數(shù)據(jù)幀。重復以上過程,直到所有數(shù)據(jù)幀都發(fā)送完畢。發(fā)送數(shù)據(jù)幀的流程圖如圖3所示。
接收數(shù)據(jù)幀:等待直到有數(shù)據(jù)幀到達,將此數(shù)據(jù)幀保存到FIFO緩存中,然后察看該數(shù)據(jù)幀的目的地址,若為NIC的MAC地址或廣播地址,并且經(jīng)檢驗沒有出錯,則把此數(shù)據(jù)傳送到接收緩沖中,并向處理器提出中斷,將接收到的數(shù)據(jù)幀從 NIC本地緩存連續(xù)讀人到系統(tǒng)內(nèi)存中。接收數(shù)據(jù)幀的流程圖如圖4所示。
圖3 發(fā)送數(shù)據(jù)幀流程圖 圖4 接收數(shù)據(jù)幀流程圖 |
5 結(jié)束語
本文講到了利用微處理器LPC2368和PHY芯片DP83848C來設計以太網(wǎng)接口。由于微控制器LPC2368和物理層芯片DP83848C的優(yōu)良性能,使得該接口電路具有結(jié)構(gòu)簡單、體積小、功耗低等許多優(yōu)點,是實現(xiàn)嵌入式系統(tǒng)與網(wǎng)絡連接的不錯選擇。
本文作者創(chuàng)新點:使用功能強大的微處理器LPC2368,通過精簡的媒體獨立接口與物理層芯片進行連接,在保證同樣功能的情況下,使得布線更加簡單,可以大大減小設計時的出錯率。
參考文獻
[1]. LPC2364/6/8/78 User manual.
[2]. DP83848C User manual.
[3]. ARM微控制器基礎與實戰(zhàn)[M].北京:北京航空航天大學出版社, 2005.
[4]. 付沖,陳英,馬希敏,張永元.一種通用嵌入式系統(tǒng)以太網(wǎng)接口的設計與實現(xiàn)[J].山東大學學報,2005.6,35(3):93- 97.
[5]. 呂昌泰,羅永剛.嵌入式以太網(wǎng)接口的研究與設計[J].微計算機信息.2006,22(8-2):68- 70.
[6]. 葛永明, 林繼寶.嵌入式系統(tǒng)以太網(wǎng)接口的設計[J].電子技術(shù)應用.2002,3:25- 27.
[7].微計算機信息-嵌入式與SOC(中旬)
評論