資料介紹
目前,以太網(wǎng)(Ethernet)協(xié)議已經(jīng)非常廣泛地應(yīng)用于各種計(jì)算機(jī)網(wǎng)絡(luò),如辦公局域網(wǎng)、工業(yè)控制網(wǎng)絡(luò)、因特網(wǎng)等場(chǎng)合,并且還不斷地發(fā)展?;谝蕴W(wǎng)的新技術(shù)和聯(lián)網(wǎng)設(shè)備不斷出現(xiàn),以太網(wǎng)已經(jīng)成為事實(shí)上最常用的網(wǎng)絡(luò)標(biāo)準(zhǔn)之一。
但是,基于以太網(wǎng)的嵌入式系統(tǒng)目前并是很多。其原因除了嵌入式系統(tǒng)本身運(yùn)行速度較慢、資源較少且不足以實(shí)現(xiàn)以太網(wǎng)的各種協(xié)議外,更重要是設(shè)計(jì)以太網(wǎng)的接口及協(xié)議相對(duì)比較復(fù)雜,使人望而卻步。
本文將介紹以8051系列單片機(jī)系統(tǒng)為例的嵌入式系統(tǒng)與10Mbps以太網(wǎng)控制器芯片DM9008的接口電路實(shí)現(xiàn)及編程方法。
1以太網(wǎng)控制器DM9008簡(jiǎn)介
DM9008是臺(tái)灣DAVICOM公司生產(chǎn)的基于ISA總線(xiàn)的10M超級(jí)以太網(wǎng)控制器芯片。這集成了介質(zhì)訪(fǎng)問(wèn)控制子層(MAC)和物理層的功能,可以方便地設(shè)計(jì)基于ISA總線(xiàn)的系統(tǒng),也可以比較簡(jiǎn)單地與通用單片機(jī)進(jìn)行接口。
主要特點(diǎn)如下:
●實(shí)現(xiàn)IEEE 802.3協(xié)議、10BASE-T、10BASE2和10BASE5的單芯片解決方案;
●集成ISA總線(xiàn)接口、8K×16 SRAM、介質(zhì)訪(fǎng)問(wèn)控制(MAC)、編解碼器(ENDEC)和10BASE-T收發(fā)器;
●與NOVELL NE2000軟件兼容;
●可選8根中斷申請(qǐng)線(xiàn);
●自動(dòng)極性檢測(cè)和糾正;
●可選8、16位模式;
●外部可編程EEPROM;
●單5V電源低功耗CMOS設(shè)計(jì);
●100腳PQFP封裝。
由于該芯片功能較強(qiáng),配置有較多的引腳,但在與一般單片機(jī)接口時(shí)只需要用到其中的一部分即可完成常用的功能。
2與8051單片機(jī)系統(tǒng)的接口電路
下面介紹國(guó)內(nèi)最常用的8051系列單片機(jī)與DM9008的接口電路,實(shí)現(xiàn)的網(wǎng)絡(luò)接口采用無(wú)屏蔽雙絞線(xiàn)(UTP)RJ-45接口。
圖1給出了8051單片機(jī)系統(tǒng)與DM9008網(wǎng)絡(luò)控制器的接口電路框圖。8051單片機(jī)系統(tǒng)所提供的接口信號(hào)線(xiàn)為:P0的8位數(shù)據(jù)總線(xiàn)D0~D7、5根經(jīng)過(guò)鎖存的地址線(xiàn)A0~A4、讀信號(hào)線(xiàn)RD、寫(xiě)信號(hào)線(xiàn)WR、經(jīng)過(guò)譯碼產(chǎn)生的片選線(xiàn)CS1和經(jīng)過(guò)反相后高電平有效地中斷請(qǐng)求線(xiàn)INT.這些信號(hào)線(xiàn)分別與DM9008的數(shù)據(jù)線(xiàn)低8位SD0~SD7、地址線(xiàn)低5位SA0~SA4、I/O讀信號(hào)線(xiàn)IOR、I/O寫(xiě)信號(hào)線(xiàn)IOW、地址使能線(xiàn)AEN和8根中斷請(qǐng)求線(xiàn)中的一根IRQ12相連。
圖1:?jiǎn)纹瑱C(jī)系統(tǒng)與dm9008網(wǎng)絡(luò)控制器的接口電路框圖。
DM9008的復(fù)位線(xiàn)RST與8051單片機(jī)的復(fù)位線(xiàn)同為高是電平有效,故在系統(tǒng)上電時(shí)同時(shí)復(fù)位。時(shí)鐘電路只需外接1個(gè)20MHz的晶振及2個(gè)電容即可。
DM9008有16根數(shù)據(jù)線(xiàn),與8051單片機(jī)接口,只需用到低8位數(shù)據(jù)線(xiàn),其它高8位數(shù)據(jù)線(xiàn)不骼,IO16接高電平或浮空,MD6/SLOT接地。地址線(xiàn)有SA0~SA19共20根,只用到低5位SA0~SA4與單片機(jī)相連,SA5~SA7接地、SA8~SA9接高電平,其它高地址位全部接地。這樣對(duì)于DM9008內(nèi)部來(lái)說(shuō),I/O的基地址為300H.另外BALE、SYSCLK接地,SMEMR、MEMW、MEMR浮空。DM9008有8根中斷請(qǐng)求線(xiàn),可以先1根與8051系統(tǒng)的中斷線(xiàn)相連,其它7根線(xiàn)均浮空,所選線(xiàn)在EEPROM93C46中指定。
EEPROM 93C46是一個(gè)采用4線(xiàn)SPI串行接口的電可擦除存儲(chǔ)器,容量為64×16位(即128個(gè)字節(jié)),主要保存DM9008的配置信息,如網(wǎng)絡(luò)硬件地址、I/O基地址、中斷線(xiàn)選擇等配置寄存器內(nèi)容,在DM9008復(fù)位后讀取93C46的內(nèi)容并設(shè)備內(nèi)部配置寄存器的值。如果93C46中內(nèi)容不正確,DM9008就無(wú)法正常工作。所以通常先通過(guò)編程器把配置數(shù)據(jù)寫(xiě)入93C46,再把它焊在電路板上。DM9008通過(guò)EECS、EEDI、EEDO、EECK與93C46相連。
由于本設(shè)計(jì)只使用10BASE-T,即采用無(wú)屏蔽雙絞線(xiàn)的RJ45接口,而DM9008已內(nèi)置了10BASE-T的收發(fā)器,故接口部分電路比較簡(jiǎn)單,只需要外接1個(gè)隔離濾波器LAN7236即可。TPTX+、TPTX-為發(fā)送線(xiàn),TPRX+、TPRX-為接收線(xiàn),經(jīng)隔離后的4根線(xiàn)與RJ45接口相連。對(duì)于其它型號(hào)的單片機(jī),如16位單片機(jī)80C196KC等,其接口電路只需稍作修改即可改為16位數(shù)據(jù)總線(xiàn)方式。
3軟件設(shè)計(jì)
DM9008的編程包括初始化、發(fā)送、接收三部分功能。在接收和發(fā)送數(shù)據(jù)以前要進(jìn)行必需的檢測(cè)和初始化。DM9008的初始化主要是設(shè)置所需的寄存器狀態(tài),建立網(wǎng)絡(luò)接口收發(fā)的條件。
網(wǎng)絡(luò)接口通過(guò)2個(gè)DMA操作來(lái)完成數(shù)據(jù)的接收和發(fā)送。本地DMA完成DMA9008與其內(nèi)部FIFO隊(duì)列之間的數(shù)據(jù)傳送,遠(yuǎn)程DMA完成DM9008與CPU之間的數(shù)據(jù)傳送。
DM9008可尋址的空間有32個(gè),分別為00H~1FH.其中00H~0FH是寄存器區(qū),00H~1FH.其中00H~0FH是寄存器區(qū),00H作為命令寄存器,通過(guò)設(shè)置可選擇3個(gè)頁(yè)面,10H~17H為數(shù)據(jù)端口,18H~1FH為復(fù)位端口。
3.1 DM9008的初始化
DM9008的具體初始化過(guò)程如下(CPU對(duì)DM9008的尋址需要加上基地址,為了描述方便,省略掉基地址直接用DM9008的內(nèi)部地址描述寄存器地址):
(1)讀入1FH端口數(shù)據(jù),再寫(xiě)回該地址以啟動(dòng)DM9008工作。
?。?)向命令寄存器CR(00H)寫(xiě)入21H,選擇寄存器頁(yè)面0,并進(jìn)行軟件復(fù)位。
?。?)設(shè)置數(shù)據(jù)結(jié)構(gòu)寄存器DCR(0EH)為48H.
?。?)設(shè)置方式狀態(tài)寄存器TCR(0DH)為02H.
?。?)讀出網(wǎng)絡(luò)的物理地址:
a.設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1(0BH)、RBCR0(0AH)的值為000CH;
b.設(shè)置遠(yuǎn)程DMA地址RSAR1(09H)、RSAR0(08H)的值為0000H;
c.設(shè)置命令寄存器CR(00H)為遠(yuǎn)程DMA讀,即0AH;
d.重復(fù)從數(shù)據(jù)端口(10H)讀6個(gè)字節(jié),這6個(gè)字節(jié)即網(wǎng)絡(luò)物理地址;
e.停止遠(yuǎn)程DMA,設(shè)置CR為21H,RBCR1、RBCR0為0000H.
?。?)設(shè)置接收狀態(tài)寄存器RCR(0CH)為04H.
?。?)劃分緩沖區(qū)接收緩沖區(qū)和發(fā)送緩沖區(qū),并建立接收緩沖環(huán)。將DM9008內(nèi)部RAM地址為4000H~4BFFH設(shè)置為發(fā)送緩沖區(qū),4C00H~7FFFH設(shè)置為接收緩沖區(qū),即設(shè)置PSTART(01H)為4CH,PSTOP(02H)為80H,BNRY(03H)為4CH.
?。?)設(shè)置CR為61H,選擇頁(yè)面1.
?。?)設(shè)置網(wǎng)卡地址寄存器,把PAR0(01H)~PAR5(06H)設(shè)置為前面讀出的物理地址。
?。?0)設(shè)置當(dāng)前頁(yè)面寄存器CURR(07H)為PSTART+1,即4DH.
?。?1)清除多址寄存器,即MAR0(08H)~MAR7(0FH)為00H.
?。?2)設(shè)置CR為21H,選擇寄存器頁(yè)面0.
?。?3)清除中斷狀態(tài)寄存器ISR(07H)為0FFH.
?。?4)設(shè)置中斷屏蔽寄存器IMR(0FH)為3BH,即接收中斷允許、接收錯(cuò)誤中斷允許、發(fā)送錯(cuò)誤中斷允許、溢出中斷允許、計(jì)數(shù)器溢出中斷允許。
?。?5)設(shè)置發(fā)送設(shè)置寄存器TCR(0DH)為00H.
(16)設(shè)置CR為22H,芯片進(jìn)入工作狀態(tài)。
至此,DM9008的初始化過(guò)程完成,DM9008處于接收狀態(tài)。只要網(wǎng)絡(luò)上有可以接收的數(shù)據(jù)包,DM9008自動(dòng)將數(shù)據(jù)存入接收緩沖區(qū)并在收完后向CPU發(fā)中斷申請(qǐng)。
3.2接收數(shù)據(jù)
DM9008收到一個(gè)完整的以太網(wǎng)數(shù)據(jù)包后,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)DM9008的中斷申請(qǐng)后,進(jìn)入中斷服務(wù)程序并開(kāi)始接收數(shù)據(jù),具體過(guò)程如下:
?。?)讀出中斷狀態(tài)寄存器ISR,并寫(xiě)回該寄存器。
(2)判斷是否數(shù)據(jù)接收中斷,如果不是,不執(zhí)行以下步驟。
(3)設(shè)置CR為22H,選擇頁(yè)面0.
?。?)設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為接收地址指針,該指針高位字節(jié)初始值位PSTART+1,低位字節(jié)為0.
?。?)設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1、RBCR0為0004H;
?。?)設(shè)置CR為遠(yuǎn)程讀0AH,讀數(shù)據(jù)端口,讀出4個(gè)字節(jié),這4個(gè)字節(jié)第1字節(jié)表示接收狀態(tài),第2個(gè)字節(jié)為下一包開(kāi)始地址指針,第3~4個(gè)字節(jié)為本數(shù)據(jù)包的長(zhǎng)度(高位字節(jié)在前)。
(7)設(shè)置CR為22H,遠(yuǎn)程DMA完成。
?。?)根據(jù)接收狀態(tài)判斷數(shù)據(jù)包是否接收正確,如果接收正確,啟動(dòng)遠(yuǎn)程DMA,收取該數(shù)據(jù)包并進(jìn)行處理。
?。?)結(jié)束遠(yuǎn)程DMA,設(shè)置下一次接收數(shù)據(jù)指針和接收邊界指針。
3.3發(fā)送數(shù)據(jù)
數(shù)據(jù)的發(fā)送過(guò)程應(yīng)包含三個(gè)步驟:數(shù)據(jù)包的封裝;通過(guò)遠(yuǎn)程DMA將數(shù)據(jù)包送入DMA9008的數(shù)據(jù)發(fā)送緩沖區(qū);通過(guò)DM9008的本地DMA將數(shù)據(jù)送入FIFO進(jìn)行發(fā)送。具體過(guò)程如下:
?。?)數(shù)據(jù)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下:

(2)把上面的數(shù)據(jù)包通過(guò)遠(yuǎn)程DMA寫(xiě)送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。
a.設(shè)置CR為22H,選擇寄存器頁(yè)面0;
b.設(shè)置中斷狀態(tài)寄存器ISR為40H,清除發(fā)送完成標(biāo)志;
c.設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為4000H,即發(fā)送緩沖區(qū)開(kāi)始地址;
d.設(shè)置遠(yuǎn)程DMA字節(jié)計(jì)數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長(zhǎng)度;
e.設(shè)置CR為12H,設(shè)置命令寄存器為遠(yuǎn)程DMA寫(xiě);
f.往數(shù)據(jù)端口寫(xiě)入發(fā)送數(shù)據(jù);
g.查詢(xún)中斷狀態(tài)寄存器ISR,等待遠(yuǎn)程DMA完成;
h.設(shè)置CR為22H,設(shè)置RBCR1、RBCR0為0,遠(yuǎn)程DMA停止;
i.設(shè)置ISR為40H,清除發(fā)送完成標(biāo)志。
?。?)啟動(dòng)本地DMA,把數(shù)據(jù)發(fā)送出去。
a.設(shè)置發(fā)送字節(jié)計(jì)數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長(zhǎng)度;
b.設(shè)置發(fā)送頁(yè)面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開(kāi)始地址高位字節(jié);
c.設(shè)置命令寄存器CR為26H,啟動(dòng)發(fā)送。
3.4高層通信協(xié)議
上述發(fā)送、接收過(guò)程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實(shí)現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其它設(shè)備(如PC機(jī))之間的通信,還需要在嵌入式系統(tǒng)中實(shí)現(xiàn)更高層的通信協(xié)議,如TCP/IP協(xié)議,這樣PC機(jī)的程序員就可以使用TCP/IP協(xié)議透明地訪(fǎng)問(wèn)嵌入式系統(tǒng)的數(shù)據(jù)。
因此上述以8051單片機(jī)系統(tǒng)為例的嵌入式系統(tǒng)的軟件設(shè)計(jì)中除了實(shí)現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實(shí)現(xiàn)TCP/IP協(xié)議及更高層的應(yīng)用層協(xié)議才能真正實(shí)現(xiàn)整個(gè)系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實(shí)現(xiàn)通常采用C語(yǔ)言,并且有現(xiàn)成的源程序,所以在用8051系列單片機(jī)編程時(shí),可采有C51語(yǔ)言并參考TCP/IP標(biāo)準(zhǔn)的源程序來(lái)具體實(shí)現(xiàn)。有關(guān)這方面內(nèi)容,可以查看有關(guān)TCP/IP協(xié)議方面的資料。
?
但是,基于以太網(wǎng)的嵌入式系統(tǒng)目前并是很多。其原因除了嵌入式系統(tǒng)本身運(yùn)行速度較慢、資源較少且不足以實(shí)現(xiàn)以太網(wǎng)的各種協(xié)議外,更重要是設(shè)計(jì)以太網(wǎng)的接口及協(xié)議相對(duì)比較復(fù)雜,使人望而卻步。
本文將介紹以8051系列單片機(jī)系統(tǒng)為例的嵌入式系統(tǒng)與10Mbps以太網(wǎng)控制器芯片DM9008的接口電路實(shí)現(xiàn)及編程方法。
1以太網(wǎng)控制器DM9008簡(jiǎn)介
DM9008是臺(tái)灣DAVICOM公司生產(chǎn)的基于ISA總線(xiàn)的10M超級(jí)以太網(wǎng)控制器芯片。這集成了介質(zhì)訪(fǎng)問(wèn)控制子層(MAC)和物理層的功能,可以方便地設(shè)計(jì)基于ISA總線(xiàn)的系統(tǒng),也可以比較簡(jiǎn)單地與通用單片機(jī)進(jìn)行接口。
主要特點(diǎn)如下:
●實(shí)現(xiàn)IEEE 802.3協(xié)議、10BASE-T、10BASE2和10BASE5的單芯片解決方案;
●集成ISA總線(xiàn)接口、8K×16 SRAM、介質(zhì)訪(fǎng)問(wèn)控制(MAC)、編解碼器(ENDEC)和10BASE-T收發(fā)器;
●與NOVELL NE2000軟件兼容;
●可選8根中斷申請(qǐng)線(xiàn);
●自動(dòng)極性檢測(cè)和糾正;
●可選8、16位模式;
●外部可編程EEPROM;
●單5V電源低功耗CMOS設(shè)計(jì);
●100腳PQFP封裝。
由于該芯片功能較強(qiáng),配置有較多的引腳,但在與一般單片機(jī)接口時(shí)只需要用到其中的一部分即可完成常用的功能。
2與8051單片機(jī)系統(tǒng)的接口電路
下面介紹國(guó)內(nèi)最常用的8051系列單片機(jī)與DM9008的接口電路,實(shí)現(xiàn)的網(wǎng)絡(luò)接口采用無(wú)屏蔽雙絞線(xiàn)(UTP)RJ-45接口。
圖1給出了8051單片機(jī)系統(tǒng)與DM9008網(wǎng)絡(luò)控制器的接口電路框圖。8051單片機(jī)系統(tǒng)所提供的接口信號(hào)線(xiàn)為:P0的8位數(shù)據(jù)總線(xiàn)D0~D7、5根經(jīng)過(guò)鎖存的地址線(xiàn)A0~A4、讀信號(hào)線(xiàn)RD、寫(xiě)信號(hào)線(xiàn)WR、經(jīng)過(guò)譯碼產(chǎn)生的片選線(xiàn)CS1和經(jīng)過(guò)反相后高電平有效地中斷請(qǐng)求線(xiàn)INT.這些信號(hào)線(xiàn)分別與DM9008的數(shù)據(jù)線(xiàn)低8位SD0~SD7、地址線(xiàn)低5位SA0~SA4、I/O讀信號(hào)線(xiàn)IOR、I/O寫(xiě)信號(hào)線(xiàn)IOW、地址使能線(xiàn)AEN和8根中斷請(qǐng)求線(xiàn)中的一根IRQ12相連。
圖1:?jiǎn)纹瑱C(jī)系統(tǒng)與dm9008網(wǎng)絡(luò)控制器的接口電路框圖。
DM9008的復(fù)位線(xiàn)RST與8051單片機(jī)的復(fù)位線(xiàn)同為高是電平有效,故在系統(tǒng)上電時(shí)同時(shí)復(fù)位。時(shí)鐘電路只需外接1個(gè)20MHz的晶振及2個(gè)電容即可。
DM9008有16根數(shù)據(jù)線(xiàn),與8051單片機(jī)接口,只需用到低8位數(shù)據(jù)線(xiàn),其它高8位數(shù)據(jù)線(xiàn)不骼,IO16接高電平或浮空,MD6/SLOT接地。地址線(xiàn)有SA0~SA19共20根,只用到低5位SA0~SA4與單片機(jī)相連,SA5~SA7接地、SA8~SA9接高電平,其它高地址位全部接地。這樣對(duì)于DM9008內(nèi)部來(lái)說(shuō),I/O的基地址為300H.另外BALE、SYSCLK接地,SMEMR、MEMW、MEMR浮空。DM9008有8根中斷請(qǐng)求線(xiàn),可以先1根與8051系統(tǒng)的中斷線(xiàn)相連,其它7根線(xiàn)均浮空,所選線(xiàn)在EEPROM93C46中指定。
EEPROM 93C46是一個(gè)采用4線(xiàn)SPI串行接口的電可擦除存儲(chǔ)器,容量為64×16位(即128個(gè)字節(jié)),主要保存DM9008的配置信息,如網(wǎng)絡(luò)硬件地址、I/O基地址、中斷線(xiàn)選擇等配置寄存器內(nèi)容,在DM9008復(fù)位后讀取93C46的內(nèi)容并設(shè)備內(nèi)部配置寄存器的值。如果93C46中內(nèi)容不正確,DM9008就無(wú)法正常工作。所以通常先通過(guò)編程器把配置數(shù)據(jù)寫(xiě)入93C46,再把它焊在電路板上。DM9008通過(guò)EECS、EEDI、EEDO、EECK與93C46相連。
由于本設(shè)計(jì)只使用10BASE-T,即采用無(wú)屏蔽雙絞線(xiàn)的RJ45接口,而DM9008已內(nèi)置了10BASE-T的收發(fā)器,故接口部分電路比較簡(jiǎn)單,只需要外接1個(gè)隔離濾波器LAN7236即可。TPTX+、TPTX-為發(fā)送線(xiàn),TPRX+、TPRX-為接收線(xiàn),經(jīng)隔離后的4根線(xiàn)與RJ45接口相連。對(duì)于其它型號(hào)的單片機(jī),如16位單片機(jī)80C196KC等,其接口電路只需稍作修改即可改為16位數(shù)據(jù)總線(xiàn)方式。
3軟件設(shè)計(jì)
DM9008的編程包括初始化、發(fā)送、接收三部分功能。在接收和發(fā)送數(shù)據(jù)以前要進(jìn)行必需的檢測(cè)和初始化。DM9008的初始化主要是設(shè)置所需的寄存器狀態(tài),建立網(wǎng)絡(luò)接口收發(fā)的條件。
網(wǎng)絡(luò)接口通過(guò)2個(gè)DMA操作來(lái)完成數(shù)據(jù)的接收和發(fā)送。本地DMA完成DMA9008與其內(nèi)部FIFO隊(duì)列之間的數(shù)據(jù)傳送,遠(yuǎn)程DMA完成DM9008與CPU之間的數(shù)據(jù)傳送。
DM9008可尋址的空間有32個(gè),分別為00H~1FH.其中00H~0FH是寄存器區(qū),00H~1FH.其中00H~0FH是寄存器區(qū),00H作為命令寄存器,通過(guò)設(shè)置可選擇3個(gè)頁(yè)面,10H~17H為數(shù)據(jù)端口,18H~1FH為復(fù)位端口。
3.1 DM9008的初始化
DM9008的具體初始化過(guò)程如下(CPU對(duì)DM9008的尋址需要加上基地址,為了描述方便,省略掉基地址直接用DM9008的內(nèi)部地址描述寄存器地址):
(1)讀入1FH端口數(shù)據(jù),再寫(xiě)回該地址以啟動(dòng)DM9008工作。
?。?)向命令寄存器CR(00H)寫(xiě)入21H,選擇寄存器頁(yè)面0,并進(jìn)行軟件復(fù)位。
?。?)設(shè)置數(shù)據(jù)結(jié)構(gòu)寄存器DCR(0EH)為48H.
?。?)設(shè)置方式狀態(tài)寄存器TCR(0DH)為02H.
?。?)讀出網(wǎng)絡(luò)的物理地址:
a.設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1(0BH)、RBCR0(0AH)的值為000CH;
b.設(shè)置遠(yuǎn)程DMA地址RSAR1(09H)、RSAR0(08H)的值為0000H;
c.設(shè)置命令寄存器CR(00H)為遠(yuǎn)程DMA讀,即0AH;
d.重復(fù)從數(shù)據(jù)端口(10H)讀6個(gè)字節(jié),這6個(gè)字節(jié)即網(wǎng)絡(luò)物理地址;
e.停止遠(yuǎn)程DMA,設(shè)置CR為21H,RBCR1、RBCR0為0000H.
?。?)設(shè)置接收狀態(tài)寄存器RCR(0CH)為04H.
?。?)劃分緩沖區(qū)接收緩沖區(qū)和發(fā)送緩沖區(qū),并建立接收緩沖環(huán)。將DM9008內(nèi)部RAM地址為4000H~4BFFH設(shè)置為發(fā)送緩沖區(qū),4C00H~7FFFH設(shè)置為接收緩沖區(qū),即設(shè)置PSTART(01H)為4CH,PSTOP(02H)為80H,BNRY(03H)為4CH.
?。?)設(shè)置CR為61H,選擇頁(yè)面1.
?。?)設(shè)置網(wǎng)卡地址寄存器,把PAR0(01H)~PAR5(06H)設(shè)置為前面讀出的物理地址。
?。?0)設(shè)置當(dāng)前頁(yè)面寄存器CURR(07H)為PSTART+1,即4DH.
?。?1)清除多址寄存器,即MAR0(08H)~MAR7(0FH)為00H.
?。?2)設(shè)置CR為21H,選擇寄存器頁(yè)面0.
?。?3)清除中斷狀態(tài)寄存器ISR(07H)為0FFH.
?。?4)設(shè)置中斷屏蔽寄存器IMR(0FH)為3BH,即接收中斷允許、接收錯(cuò)誤中斷允許、發(fā)送錯(cuò)誤中斷允許、溢出中斷允許、計(jì)數(shù)器溢出中斷允許。
?。?5)設(shè)置發(fā)送設(shè)置寄存器TCR(0DH)為00H.
(16)設(shè)置CR為22H,芯片進(jìn)入工作狀態(tài)。
至此,DM9008的初始化過(guò)程完成,DM9008處于接收狀態(tài)。只要網(wǎng)絡(luò)上有可以接收的數(shù)據(jù)包,DM9008自動(dòng)將數(shù)據(jù)存入接收緩沖區(qū)并在收完后向CPU發(fā)中斷申請(qǐng)。
3.2接收數(shù)據(jù)
DM9008收到一個(gè)完整的以太網(wǎng)數(shù)據(jù)包后,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)DM9008的中斷申請(qǐng)后,進(jìn)入中斷服務(wù)程序并開(kāi)始接收數(shù)據(jù),具體過(guò)程如下:
?。?)讀出中斷狀態(tài)寄存器ISR,并寫(xiě)回該寄存器。
(2)判斷是否數(shù)據(jù)接收中斷,如果不是,不執(zhí)行以下步驟。
(3)設(shè)置CR為22H,選擇頁(yè)面0.
?。?)設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為接收地址指針,該指針高位字節(jié)初始值位PSTART+1,低位字節(jié)為0.
?。?)設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCR1、RBCR0為0004H;
?。?)設(shè)置CR為遠(yuǎn)程讀0AH,讀數(shù)據(jù)端口,讀出4個(gè)字節(jié),這4個(gè)字節(jié)第1字節(jié)表示接收狀態(tài),第2個(gè)字節(jié)為下一包開(kāi)始地址指針,第3~4個(gè)字節(jié)為本數(shù)據(jù)包的長(zhǎng)度(高位字節(jié)在前)。
(7)設(shè)置CR為22H,遠(yuǎn)程DMA完成。
?。?)根據(jù)接收狀態(tài)判斷數(shù)據(jù)包是否接收正確,如果接收正確,啟動(dòng)遠(yuǎn)程DMA,收取該數(shù)據(jù)包并進(jìn)行處理。
?。?)結(jié)束遠(yuǎn)程DMA,設(shè)置下一次接收數(shù)據(jù)指針和接收邊界指針。
3.3發(fā)送數(shù)據(jù)
數(shù)據(jù)的發(fā)送過(guò)程應(yīng)包含三個(gè)步驟:數(shù)據(jù)包的封裝;通過(guò)遠(yuǎn)程DMA將數(shù)據(jù)包送入DMA9008的數(shù)據(jù)發(fā)送緩沖區(qū);通過(guò)DM9008的本地DMA將數(shù)據(jù)送入FIFO進(jìn)行發(fā)送。具體過(guò)程如下:
?。?)數(shù)據(jù)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下:

(2)把上面的數(shù)據(jù)包通過(guò)遠(yuǎn)程DMA寫(xiě)送入DM9008的數(shù)據(jù)發(fā)送緩沖區(qū)。
a.設(shè)置CR為22H,選擇寄存器頁(yè)面0;
b.設(shè)置中斷狀態(tài)寄存器ISR為40H,清除發(fā)送完成標(biāo)志;
c.設(shè)置遠(yuǎn)程DMA地址寄存器RSAR1、RSAR0為4000H,即發(fā)送緩沖區(qū)開(kāi)始地址;
d.設(shè)置遠(yuǎn)程DMA字節(jié)計(jì)數(shù)寄存器RBCR1、RBCR0為發(fā)送數(shù)據(jù)包的長(zhǎng)度;
e.設(shè)置CR為12H,設(shè)置命令寄存器為遠(yuǎn)程DMA寫(xiě);
f.往數(shù)據(jù)端口寫(xiě)入發(fā)送數(shù)據(jù);
g.查詢(xún)中斷狀態(tài)寄存器ISR,等待遠(yuǎn)程DMA完成;
h.設(shè)置CR為22H,設(shè)置RBCR1、RBCR0為0,遠(yuǎn)程DMA停止;
i.設(shè)置ISR為40H,清除發(fā)送完成標(biāo)志。
?。?)啟動(dòng)本地DMA,把數(shù)據(jù)發(fā)送出去。
a.設(shè)置發(fā)送字節(jié)計(jì)數(shù)器TBCR1(06H)、TBCR0(05H)為發(fā)送數(shù)據(jù)包的長(zhǎng)度;
b.設(shè)置發(fā)送頁(yè)面起始地址TPSR(04H)為40H,即發(fā)送緩沖區(qū)開(kāi)始地址高位字節(jié);
c.設(shè)置命令寄存器CR為26H,啟動(dòng)發(fā)送。
3.4高層通信協(xié)議
上述發(fā)送、接收過(guò)程所完成的協(xié)議是MAC層和物理層的協(xié)議。要真正實(shí)現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其它設(shè)備(如PC機(jī))之間的通信,還需要在嵌入式系統(tǒng)中實(shí)現(xiàn)更高層的通信協(xié)議,如TCP/IP協(xié)議,這樣PC機(jī)的程序員就可以使用TCP/IP協(xié)議透明地訪(fǎng)問(wèn)嵌入式系統(tǒng)的數(shù)據(jù)。
因此上述以8051單片機(jī)系統(tǒng)為例的嵌入式系統(tǒng)的軟件設(shè)計(jì)中除了實(shí)現(xiàn)收發(fā)數(shù)據(jù)的功能外,還需要實(shí)現(xiàn)TCP/IP協(xié)議及更高層的應(yīng)用層協(xié)議才能真正實(shí)現(xiàn)整個(gè)系統(tǒng)的通信功能。由于TCP/IP協(xié)議的實(shí)現(xiàn)通常采用C語(yǔ)言,并且有現(xiàn)成的源程序,所以在用8051系列單片機(jī)編程時(shí),可采有C51語(yǔ)言并參考TCP/IP標(biāo)準(zhǔn)的源程序來(lái)具體實(shí)現(xiàn)。有關(guān)這方面內(nèi)容,可以查看有關(guān)TCP/IP協(xié)議方面的資料。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 全硬件TCP/IP嵌入式以太網(wǎng)控制器w5500中文資料 25次下載
- 基于工業(yè)以太網(wǎng)嵌入式DNC集成通訊控制系統(tǒng)研究與開(kāi)發(fā)
- 嵌入式以太網(wǎng)監(jiān)控系統(tǒng)資料下載
- RJ45以太網(wǎng)接口EMC設(shè)計(jì)方案資料下載 41次下載
- 盤(pán)點(diǎn)幾種以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn) 20次下載
- RTL8019AS實(shí)現(xiàn)嵌入式以太網(wǎng)設(shè)計(jì).rar 164次下載
- 基于OR1200微處理器的嵌入式以太網(wǎng)設(shè)計(jì) 32次下載
- 基于FPGA的嵌入式三態(tài)以太網(wǎng)設(shè)計(jì) 64次下載
- 基于OpenTCP的嵌入式以太網(wǎng)模塊設(shè)計(jì)
- 基于以太網(wǎng)和嵌入式Web Server的控制系統(tǒng)設(shè)計(jì)研究
- 嵌入式設(shè)備與以太網(wǎng)互連系統(tǒng)的設(shè)計(jì)
- 嵌入式以太網(wǎng)接口的研究與設(shè)計(jì)
- 嵌入式以太網(wǎng)工業(yè)設(shè)備接入系統(tǒng)的設(shè)計(jì)
- 基于A(yíng)RM 嵌入式以太網(wǎng)接口設(shè)計(jì)與實(shí)現(xiàn)Design and
- 基于CP2200 的嵌入式系統(tǒng)以太網(wǎng)接口設(shè)計(jì)
- AC7840x-W5500嵌入式以太網(wǎng)控制器方案簡(jiǎn)介 1893次閱讀
- 嵌入式以太網(wǎng)功能實(shí)現(xiàn)架構(gòu)、電路設(shè)計(jì)與應(yīng)用 1992次閱讀
- 基于雙以太網(wǎng)處理器Jupiter實(shí)現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)的設(shè)計(jì) 3836次閱讀
- 嵌入式系統(tǒng)的全面解析 3280次閱讀
- 基于以太網(wǎng)和現(xiàn)場(chǎng)總線(xiàn)控制系統(tǒng)實(shí)現(xiàn)嵌入式HTTP服務(wù)器的設(shè)計(jì) 889次閱讀
- 基于通用型單片機(jī)和以太網(wǎng)控制器實(shí)現(xiàn)嵌入式以太網(wǎng)接口的設(shè)計(jì) 3401次閱讀
- 以太網(wǎng)接口的設(shè)計(jì)嵌入式系統(tǒng)是關(guān)鍵 1383次閱讀
- 基于SOPC技術(shù)的嵌入式以太網(wǎng)網(wǎng)絡(luò)終端設(shè)備解決方案設(shè)計(jì)詳解 1338次閱讀
- 一種應(yīng)用于測(cè)控系統(tǒng)的基于Linux的嵌入式系統(tǒng)的設(shè)計(jì)方案 1048次閱讀
- 以ARM處理器為基礎(chǔ)的以太網(wǎng)的嵌入式控制實(shí)現(xiàn)設(shè)計(jì)詳解 2573次閱讀
- DM9000AE工作原理 以太網(wǎng)接口電路設(shè)計(jì) 1.3w次閱讀
- 基于Xilinx FPGA的嵌入式串行千兆以太網(wǎng)設(shè)計(jì) 3470次閱讀
- 嵌入式以太網(wǎng)解決方案:集設(shè)計(jì)方案、開(kāi)發(fā)工具于一體 1325次閱讀
- 嵌入式工業(yè)以太網(wǎng)的應(yīng)用研究 1514次閱讀
- 一種CAN總線(xiàn)與以太網(wǎng)互連系統(tǒng)的設(shè)計(jì)方案 4413次閱讀
下載排行
本周
- 1EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊(cè)
- 1.19 MB | 1次下載 | 免費(fèi)
- 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊(cè)
- 0.78 MB | 1次下載 | 免費(fèi)
- 4ZX8002E 觸摸調(diào)光LED集成IC數(shù)據(jù)手冊(cè)
- 2.27 MB | 次下載 | 免費(fèi)
- 5SOD-323塑料封裝ESD保護(hù)二極管SD05T系列規(guī)格書(shū)
- 1.07 MB | 次下載 | 免費(fèi)
- 6SOT-23塑料封裝ESD保護(hù)二極管SMxx Series系列規(guī)格書(shū)
- 0.93 MB | 次下載 | 免費(fèi)
- 7高效率整流二極管HER151 THRU HER158數(shù)據(jù)手冊(cè)
- 0.54 MB | 次下載 | 免費(fèi)
- 8低壓降肖特基整流管SL22 THRU SL210數(shù)據(jù)手冊(cè)
- 1.03 MB | 次下載 | 免費(fèi)
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 111次下載 | 1 積分
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費(fèi)
- 3蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業(yè)用開(kāi)關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費(fèi)
- 6QW2893應(yīng)急燈專(zhuān)用檢測(cè)芯片
- 590.40 KB | 4次下載 | 免費(fèi)
- 7相關(guān)協(xié)議信號(hào)總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 8EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論