《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > 嵌入式系統(tǒng)以太網(wǎng)接口的設計

嵌入式系統(tǒng)以太網(wǎng)接口的設計

2009-03-23
作者:葛永明1 林繼寶2

??? 摘? 要: 介紹以8051系列單片機系統(tǒng)為例的嵌入式系統(tǒng)與10Mbps以太網(wǎng)控制器芯片DM9008的硬件接口電路的實現(xiàn)及編程方法。?

??? 關鍵詞: 嵌入式系統(tǒng)? 以太網(wǎng)? DM9008芯片? 單片機? TCP/IP協(xié)議

?

??? 目前,以太網(wǎng)(Ethernet)協(xié)議已經(jīng)非常廣泛地應用于各種計算機網(wǎng)絡,如辦公局域網(wǎng)、工業(yè)控制網(wǎng)絡、因特網(wǎng)等場合,并且還在不斷地發(fā)展。基于以太網(wǎng)的新技術和聯(lián)網(wǎng)設備不斷出現(xiàn),以太網(wǎng)已經(jīng)成為事實上最常用的網(wǎng)絡標準之一。?

??? 但是,基于以太網(wǎng)的嵌入式系統(tǒng)目前并不是很多。其原因除了嵌入式系統(tǒng)本身運行速度較慢、資源較少且不足以實現(xiàn)以太網(wǎng)的各種協(xié)議外,更重要是設計以太網(wǎng)的接口及協(xié)議相對比較復雜,使人望而卻步。?

??? 本文將介紹以8051系列單片機系統(tǒng)為例的嵌入式系統(tǒng)與10Mbps以太網(wǎng)控制器芯片DM9008的接口電路實現(xiàn)及編程方法。?

1 以太網(wǎng)控制器DM9008簡介?

??? DM9008是臺灣DAVICOM公司生產(chǎn)的基于ISA總線的10M超級以太網(wǎng)控制器芯片。它集成了介質訪問控制子層(MAC)和物理層的功能,可以方便地設計基于ISA總線的系統(tǒng),也可以比較簡單地與通用單片機進行接口。?

??? 主要特點如下:?

??? ·實現(xiàn)IEEE 802.3協(xié)議、10BASE-T、10BASE2和10BASE5的單芯片解決方案;?

??? ·集成ISA總線接口、8K×16 SRAM、介質訪問控制(MAC)、編解碼器(ENDEC)和10BASE-T收發(fā)器;?

??? ·與NOVELL NE2000軟件兼容;?

??? ·可選8根中斷申請線;?

??? ·自動極性檢測和糾正;?

??? ·可選8、16位模式;?

??? ·外部可編程EEPROM;?

??? ·單5V電源低功耗CMOS設計;?

??? ·100腳PQFP封裝。?

??? 由于該芯片功能較強,配置有較多的引腳,但在與一般單片機接口時只需要用到其中的一部分即可完成常用的功能。?

2 與8051單片機系統(tǒng)的接口電路?

??? 下面介紹國內最常用的8051系列單片機與DM9008的接口電路,實現(xiàn)的網(wǎng)絡接口采用無屏蔽雙絞線(UTP)RJ-45接口。?

??? 圖1給出了8051單片機系統(tǒng)與DM9008網(wǎng)絡控制器的接口電路框圖。8051單片機系統(tǒng)所提供的接口信號線為:P0口的8位數(shù)據(jù)總線D0~D7、5根經(jīng)過鎖存的地址線A0~A4、讀信號線RD、寫信號線WR、經(jīng)過譯碼產(chǎn)生的片選線CS1和經(jīng)過反相后高電平有效地中斷請求線INT。這些信號線分別與DM9008的數(shù)據(jù)線低8位SD0~SD7、地址線低5位SA0~SA4、I/O讀信號線IOR、I/O寫信號線IOW、地址使能線AEN和8根中斷請求線中的一根IRQ12相連。?

?

?

??? DM9008的復位線RST與8051單片機的復位線同為高電平有效,故在系統(tǒng)上電時同時復位。時鐘電路只需外接1個20MHz的晶振及2個電容即可。?

??? DM9008有16根數(shù)據(jù)線,與8051單片機接口,只需用到低8位數(shù)據(jù)線,其它高8位數(shù)據(jù)線不用,IO16接高電平或浮空,MD6/SLOT接地。地址線有SA0~SA19共20根,只用到低5位SA0~SA4與單片機相連,SA5~SA7接地、SA8~SA9接高電平,其它高地址位全部接地。這樣對于DM9008內部來說,I/O的基地址為300H。另外BALE、SYSCLK接地,SMEMR、MEMW、MEMR浮空。DM9008有8根中斷請求線,可以選1根與8051系統(tǒng)的中斷線相連,其它7根線均浮空,所選線在EEPROM 93C46中指定。?

??? EEPROM 93C46是一個采用4線SPI串行接口的電可擦除存儲器,容量為64×16位(即128個字節(jié)),主要保存DM9008的配置信息,如網(wǎng)絡硬件地址、I/O基地址、中斷線選擇等配置寄存器內容,在DM9008復位后讀取93C46的內容并設置內部配置寄存器的值。如果93C46中內容不正確,DM9008就無法正常工作。所以通常先通過編程器把配置數(shù)據(jù)寫入93C46,再把它焊在電路板上。DM9008通過EECS、EEDI、EEDO、EECK與93C46相連。?

??? 由于本設計只使用10BASE-T,即采用無屏蔽雙絞線的RJ45接口,而DM9008已內置了10BASE-T的收發(fā)器,故接口部分電路比較簡單,只需要外接1個隔離濾波器LAN7236即可。TPTX+、TPTX-為發(fā)送線,TPRX+、TPRX-為接收線,經(jīng)隔離后的4根線與RJ45接口相連。?

??? 對于其它型號的單片機,如16位單片機80C196KC等,其接口電路只需稍作修改即可改為16位數(shù)據(jù)總線方式。?

3 軟件設計?

??? DM9008的編程包括初始化、發(fā)送、接收三部分功能。在接收和發(fā)送數(shù)據(jù)以前要進行必需的檢測和初始化。DM9008的初始化主要是設置所需的寄存器狀態(tài),建立網(wǎng)絡接口收發(fā)的條件。?

??? 網(wǎng)絡接口通過2個DMA操作來完成數(shù)據(jù)的接收和發(fā)送。本地DMA完成DM9008與其內部FIFO隊列之間的數(shù)據(jù)傳送,遠程DMA完成DM9008與CPU之間的數(shù)據(jù)傳送。?

??? DM9008可尋址的空間有32個,分別為00H~1FH。其中00H~0FH是寄存器區(qū),00H作為命令寄存器,通過設置可選擇3個頁面,10H~17H為數(shù)據(jù)端口,18H~1FH為復位端口。?

3.1 DM9008的初始化?

??? DM9008的具體初始化過程如下(CPU對DM9008的尋址需要加上基地址,為了描述方便,省略掉基地址直接用DM9008的內部地址描述寄存器地址):?

??? (1)讀入1FH端口數(shù)據(jù),再寫回該地址以啟動DM9008工作。?

??? (2)向命令寄存器CR(00H)寫入21H,選擇寄存器頁面0,并進行軟件復位。?

??? (3)設置數(shù)據(jù)結構寄存器DCR(0EH)為48H。?

??? (4)設置方式狀態(tài)寄存器TCR(0DH)為02H。?

??? (5)讀出網(wǎng)絡的物理地址:?

??? ?? a. 設置遠程DMA計數(shù)器RBCR1(0BH)、RBCR0(0AH)的值為000CH;?

??? ?? b.設置遠程DMA地址RSAR1(09H)、RSAR0(08H)的值為0000H;?

??? ?? c. 設置命令寄存器CR(00H)為遠程DMA讀,即0AH;?

??? ?? d. 重復從數(shù)據(jù)端口(10H)讀6個字節(jié),這6個字節(jié)即網(wǎng)絡物理地址;?

??? ?? e.停止遠程DMA,設置CR為21H,RBCR1、RBCR0為0000H。?

??? (6)設置接收狀態(tài)寄存器RCR(0CH)為04H。?

??? (7)劃分緩沖區(qū)為接收緩沖區(qū)和發(fā)送緩沖區(qū),并建立接收緩沖環(huán)。將DM9008內部RAM地址為4000H~4BFFH設置為發(fā)送緩沖區(qū),4C00H~7FFFH設置為接收緩沖區(qū),即設置PSTART(01H)為4CH,PSTOP(02H)為80H,BNRY(03H)為4CH。?

??? (8)設置CR為61H,選擇頁面1。?

??? (9)設置網(wǎng)卡地址寄存器,把PAR0(01H)~PAR5(06H)設置為前面讀出的物理地址。?

??? (10)設置當前頁面寄存器CURR(07H)為PSTART+1,即4DH。?

??? (11)清除多址寄存器,即MAR0(08H)~MAR7(0FH)為00H。?

??? (12)設置CR為21H,選擇寄存器頁面0。?

??? (13)清除中斷狀態(tài)寄存器ISR(07H)為0FFH。?

??? (14)設置中斷屏蔽寄存器IMR(0FH)為3BH,即接收中斷允許、接收錯誤中斷允許、發(fā)送錯誤中斷允許、溢出中斷允許、計數(shù)器溢出中斷允許。?

??? (15)設置發(fā)送設置寄存器TCR(0DH)為00H。?

??? (16)設置CR為22H,芯片進入工作狀態(tài)。?

??? 至此,DM9008的初始化過程完成,DM9008處于接收狀態(tài)。只要網(wǎng)絡上有可以接收的數(shù)據(jù)包,DM9008自動將數(shù)據(jù)存入接收緩沖區(qū)并在收完后向CPU發(fā)中斷申請。?

3.2 接收數(shù)據(jù)?

??? DM9008收到一個完整的以太網(wǎng)數(shù)據(jù)包后,向CPU發(fā)出中斷請求,CPU響應DM9008的中斷申請后,進入中斷服務程序并開始接收數(shù)據(jù),具體過程如下。?

??? (1)讀出中斷狀態(tài)寄存器ISR,并寫回該寄存器。?

??? (2)判斷是否數(shù)據(jù)接收中斷,如果不是,不執(zhí)行以下步驟。?

??? (3)設置CR為22H,選擇頁面0。?

??? (4)設置遠程DMA地址寄存器RSAR1、RSAR0為接收地址指針,該指針高位字節(jié)初始值位PSTART+1,低位字節(jié)為0。?

??? (5)設置遠程DMA計數(shù)器RBCR1、RBCR0為0004H;?

??? (6)設置CR為遠程讀0AH,讀數(shù)據(jù)端口,讀出4個字節(jié),這4個字節(jié)第1個字節(jié)表示接收狀態(tài),第2個字節(jié)為下一包開始地址指針,第3~4個字節(jié)為本數(shù)據(jù)包的長度(高位字節(jié)在前)。?

??? (7)設置CR為22H,遠程DMA完成。?

??? (8)根據(jù)接收狀態(tài)判斷數(shù)據(jù)包是否接收正確,如果接收正確,啟動遠程DMA,收取該數(shù)據(jù)包并進行處理。?

??? (9)結束遠程DMA,設置下一次接收數(shù)據(jù)指針和接收邊界指針。?

3.3 發(fā)送數(shù)據(jù)?

??? 數(shù)據(jù)的發(fā)送過程應包含三個步驟:數(shù)據(jù)包的封裝;通過遠程DMA將數(shù)據(jù)包送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū);通過DM9008的本地DMA將數(shù)據(jù)送入FIFO進行發(fā)送。具體過程如下:?

??? (1)數(shù)據(jù)包在發(fā)送前應該按規(guī)定的格式封裝好,格式如下:?

???

??? (2)把上面的數(shù)據(jù)包通過遠程DMA寫送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。?

??? a. 設置CR為22H,選擇寄存器頁面0;?

??? b. 設置中斷狀態(tài)寄存器ISR為40H,清除發(fā)送完成標志;?

??? c.設置遠程DMA地址寄存器RSAR1、RSAR0為4000H,即發(fā)送緩沖區(qū)開始地址,?

??? d. 設置遠程DMA字節(jié)計數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長度,?

??? e. 設置CR為12H,設置命令寄存器為遠程DMA寫,?

??? f. 往數(shù)據(jù)端口寫入發(fā)送數(shù)據(jù),?

??? g. 查詢中斷狀態(tài)寄存器ISR,等待遠程DMA完成,?

??? h. 設置CR為22H,設置RBCR1、RBCR0為0,遠程DMA停止,?

??? i. 設置ISR為40H,清除發(fā)送完成標志。?

??? (3)啟動本地DMA,把數(shù)據(jù)發(fā)送出去。?

??? a. 設置發(fā)送字節(jié)計數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長度;?

??? b. 設置發(fā)送頁面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開始地址高位字節(jié);?

??? c. 設置命令寄存器CR為26H,啟動發(fā)送。?

3.4 高層通信協(xié)議?

??? 上述發(fā)送、接收過程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其它設備(如PC機)之間的通信,還需要在嵌入式系統(tǒng)中實現(xiàn)更高層的通信協(xié)議,如TCP/IP協(xié)議,這樣PC機的程序員就可以使用TCP/IP協(xié)議透明地訪問嵌入式系統(tǒng)的數(shù)據(jù)。?

??? 因此上述以8051單片機系統(tǒng)為例的嵌入式系統(tǒng)的軟件設計中除了實現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實現(xiàn)TCP/IP協(xié)議及更高層的應用層協(xié)議才能真正實現(xiàn)整個系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實現(xiàn)通常采用C語言,并且有現(xiàn)成的源程序,所以在用8051系列單片機編程時,可采用C51語言并參考TCP/IP標準的源程序來具體實現(xiàn)。有關這方面內容,可以查看有關TCP/IP協(xié)議方面的資料。?

參考文獻?

1 DAVICOM. DM9008 ISA/Plug & Play Super Ethernet?Controller. DATASHEET, 2000?

2 W.Richard Stevens著,范建華譯.TCP/IP詳解. 北京:機械工業(yè)出版社,2000

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 中文字幕av无码专区第一页| 亚洲国产精品网| 花季传媒app免费版网站下载安装 花季传媒下载免费安装app | 女人腿张开让男人桶爽| 中文字幕精品无码亚洲字| 日韩人妻无码精品无码中文字幕| 亚洲中文无码av永久| 欧美激情久久久久久久久| 亚洲视频免费在线观看| 米奇777四色精品人人爽| 又粗又大又长又爽免费视频| 蜜柚最新在线观看| 日本精品高清一区二区2021| 亚洲人成影院在线无码按摩店| 波多野结衣av无码久久一区| 免费a级毛片无码| 精品国产一区二区三区香蕉| 四虎在线免费视频| 色屁屁www欧美激情在线观看 | 国产乱人伦偷精精品视频| 麻豆国内精品欧美在线| 国产日韩视频在线观看| aa级国产女人毛片水真多| 国产精品无圣光一区二区| 884hutv四虎永久黄网| 在线天堂中文官网| 99国产超薄丝袜足j在线观看| 女人喷液抽搐高潮视频| √天堂中文官网在线| 少妇饥渴XXHD麻豆XXHD骆驼| 东京热一精品无码av| 成人污视频在线观看| 中文字幕丰满乱孑伦无码专区 | 人人妻人人澡人人爽欧美一区九九| 精品无码日韩一区二区三区不卡 | 免费精品一区二区三区在线观看 | 特级毛片a级毛片在线播放www | 日韩精品无码一本二本三本| 亚欧色一区w666天堂| 最近高清中文国语在线观看 | 久久久精品人妻一区二区三区|