淺談AT91RM9200在以太網(wǎng)接口模塊應(yīng)用
0 引 言
本文引用地址:http://m.butianyuan.cn/article/149862.htm在Internet飛速發(fā)展的今天,網(wǎng)絡(luò)已經(jīng)滲透到生活的方方面面,與網(wǎng)絡(luò)的結(jié)合已經(jīng)成為嵌入式系統(tǒng)發(fā)展的必然趨勢(shì)。目前,ARM微處理器已經(jīng)在多個(gè)領(lǐng)域中得到應(yīng)用,各種基于ARM微處理器的設(shè)備應(yīng)用數(shù)量已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了通用計(jì)算機(jī),基于ARM微處理器的開(kāi)發(fā)應(yīng)用正成為數(shù)字時(shí)代的技術(shù)潮流。ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點(diǎn)。適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多媒體、DSP和移動(dòng)式應(yīng)用等。
l AT91RM9200簡(jiǎn)介
AT91RM9200是基于ARM920T核的高性能、低功耗16/32位RISC(精簡(jiǎn)指令集計(jì)算機(jī))微處理器。其內(nèi)部集成豐富的外設(shè)資源,適用于要求外設(shè)資源豐富、功耗低、工作嚴(yán)格穩(wěn)定的工業(yè)控制和野外儀器等方面。 從而為低功耗,低成本,高性能的計(jì)算機(jī)應(yīng)用提供了一個(gè)單片解決方案。適用于要求外設(shè)資源豐富,功耗低,工作穩(wěn)定的工業(yè)控制等方面。
AT91RM9200處理器主要具有如下特點(diǎn):1)低功耗:VDDCORE電流為30.4mA,待機(jī)模式電流為3.1mA.2)雙向、32位外部數(shù)據(jù)總線支持8位、16位、32位數(shù)據(jù)寬度讀寫(xiě),支持SDRAM、static Memory、Burst Flash、Compact FLASH和NAND Flash,滿足采集站對(duì)于數(shù)據(jù)的采集和處理要求。3)提供一系列符合工業(yè)標(biāo)準(zhǔn)的外設(shè)接口,如:USART、SSC、SPI、USB及I2C等。4)具有20通道外圍數(shù)據(jù)控制器(PDC或DMA),可以數(shù)據(jù)的傳輸更快,同時(shí)可以減輕CPU的負(fù)擔(dān),以便實(shí)時(shí)響應(yīng)其它的處理。5)支持USB 2.0(12Mbps)主機(jī)端口,可以方便在野外采集時(shí)另接存儲(chǔ)器,以便持續(xù)采集。 6)支持以太網(wǎng)10/100,可以很方便的實(shí)現(xiàn)采集之間的快速通信。
2 最小系統(tǒng)設(shè)計(jì)
硬件系統(tǒng)設(shè)計(jì)是嵌入式系統(tǒng)設(shè)計(jì)的基礎(chǔ),ARM系統(tǒng)硬件平臺(tái)主要分為兩部分:一部分為基于ARM處理器的最小系統(tǒng);另一部分為外圍擴(kuò)展電路。系統(tǒng)只有在硬件最小系統(tǒng)調(diào)試穩(wěn)定的基礎(chǔ)上,才能靈活、輕松地?cái)U(kuò)展出其他外圍應(yīng)用,所以最小系統(tǒng)是保證微處理器可靠工作所必須的基本電路?;贏T91RM9200微處理器的最小系統(tǒng)由微處理器、電源電路、時(shí)鐘電路、復(fù)位電路、JTAG接口、存儲(chǔ)器模塊、串行調(diào)試接口等電路組成。
2.1 電源電路設(shè)計(jì)
在系統(tǒng)中AT91RM9200需要1.8 V和3.3 V電源,另外,大部分外圍器件需要3.3 V電源,小部分外圍器件還需要5 V電源,假設(shè)輸入電壓為5 V直流穩(wěn)壓電源。為了得到可靠的3.3 V電壓,此處選用的電壓轉(zhuǎn)換芯片是NCPlll7ST33T3,它的輸入電壓為5 V,輸出電壓為3.3 V,最大輸出電流為0.8 A.同樣,為了得到可靠的1.8 V電壓,選用NCPlll7STl8T3,它的輸入電壓為5 V,輸出電壓為1.8 V,最大輸出電流為0.8 A.由于3.3 V和1.8 V屬于NCPlll7系列的2個(gè)固定輸出電壓,所以設(shè)計(jì)比較簡(jiǎn)單,只需要在電路中與芯片并聯(lián)2個(gè)典型值為10 tLF、的濾波電容即可。
2.2 時(shí)鐘電路設(shè)計(jì)
時(shí)鐘電路為AT91RM9200和其他外設(shè)電路提供工作時(shí)鐘。處理器內(nèi)部帶有鎖相環(huán)電路,所以外接頻率比較低的晶體振蕩器,該設(shè)計(jì)用晶體振蕩器Y1(20 MHz)作為系統(tǒng)的主時(shí)鐘振蕩器。處理器內(nèi)部還帶有實(shí)時(shí)時(shí)鐘電路,還需要外接32.768 kHz的晶體振蕩器。振蕩器產(chǎn)生的主時(shí)鐘和慢時(shí)鐘經(jīng)過(guò)微處理器內(nèi)部2個(gè)鎖相環(huán)后,產(chǎn)生系統(tǒng)所需的各種主時(shí)鐘、外設(shè)時(shí)鐘以及USB器件工作時(shí)鐘。振蕩器(英文:oscillator)是用來(lái)產(chǎn)生重復(fù)電子訊號(hào)(通常是正弦波或方波)的電子元件。其構(gòu)成的電路叫振蕩電路。能將直流電轉(zhuǎn)換為具有一定頻率交流電信號(hào)輸出的電子電路或裝置。種類很多,按振蕩激勵(lì)方式可分為自激振蕩器、他激振蕩器;按電路結(jié)構(gòu)可分為阻容振蕩器、電感電容振蕩器、晶體振蕩器、音叉振蕩器等;按輸出波形可分為正弦波、方波、鋸齒波等振蕩器。廣泛用于電子工業(yè)、醫(yī)療、科學(xué)研究等方面。
2.3 復(fù)位電路設(shè)計(jì)
AT91RM9200有2個(gè)獨(dú)立的復(fù)位信號(hào),即系統(tǒng)復(fù)位信號(hào)NRST與調(diào)試復(fù)位信號(hào)NTRSI,都是低電平有效。系統(tǒng)上電后,AT91RM9200必須執(zhí)行一個(gè)上電復(fù)位,在過(guò)渡狀態(tài)下,它的強(qiáng)制復(fù)位信號(hào)為低,直到電源電壓和振蕩器工作頻率穩(wěn)定為止。此外,NRST和NTRST還可以手動(dòng)復(fù)位,以方便用戶調(diào)試程序。
2.4 存儲(chǔ)器模塊設(shè)計(jì)
存儲(chǔ)器模塊包括NOR FLASH存儲(chǔ)器和SDRAM存儲(chǔ)器。
NOR FLASH存儲(chǔ)器用于存儲(chǔ)系統(tǒng)運(yùn)行所需的程序和重要數(shù)據(jù),即使掉電,程序和數(shù)據(jù)也不會(huì)丟失。該設(shè)計(jì)中所用芯片是Atmel公司生產(chǎn)的AT49BNl614T,以保持與AT91RM9200的兼容性,其存儲(chǔ)容量為2 MB,工作電壓為3.3 V,采用56引腳TSOP封裝,具有16位數(shù)據(jù)寬度。AT91RM9200需要以下引腳與之對(duì)應(yīng)相連:A[1:21],D[0:15],NCSO/BFCS,NRST,BFRDY,BFWE,BFOE.
SDRAM存儲(chǔ)器的作用是存放系統(tǒng)運(yùn)行時(shí)的程序和數(shù)據(jù),掉電后該部分程序和數(shù)據(jù)會(huì)丟失。SDRAM:Synchronous Dynamic Random Access Memory,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,同步是指 Memory工作需要同步時(shí)鐘,內(nèi)部的命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn);動(dòng)態(tài)是指存儲(chǔ)陣列需要不斷的刷新來(lái)保證數(shù)據(jù)不丟失;隨機(jī)是指數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)讀寫(xiě)。SDRAM從發(fā)展到現(xiàn)在已經(jīng)經(jīng)歷了四代,分別是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(顯卡上的DDR已經(jīng)發(fā)展到DDR5) 設(shè)計(jì)中使用兩片數(shù)據(jù)寬度為16位的SDRAM并為一個(gè)具有32位數(shù)據(jù)寬度的SDRAM模塊,以充分發(fā)揮微處理器32位數(shù)據(jù)寬度的高性能。AT91RM9200需要以下引腳與HY57V561620對(duì)應(yīng)相連:D[0:31],A[2:11],A[13:14],NBS0,N:BSl,NBS2,NBS3,SDCKE,SDCK,SDCS,RAS,CAS,SDWE.這里特別注意:A12引腳不使用。
2.5 JTAG接口電路設(shè)計(jì)
JTAG是英文Joint Test Action Group(聯(lián)合測(cè)試行為組織)的詞頭字母的簡(jiǎn)寫(xiě),該組織成立于1985 年,是由幾家主要的電子制造商發(fā)起制訂的PCB 和IC 測(cè)試標(biāo)準(zhǔn)。JTAG 建議于1990 年被IEEE 批準(zhǔn)為IEEE1149.1-1990 測(cè)試訪問(wèn)端口和邊界掃描結(jié)構(gòu)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定了進(jìn)行邊界掃描所需要的硬件和軟件。自從1990 年批準(zhǔn)后,IEEE 分別于1993 年和1995 年對(duì)該標(biāo)準(zhǔn)作了補(bǔ)充,形成了現(xiàn)在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994.JTAG 主要應(yīng)用于:電路的邊界掃描測(cè)試和可編程芯片的在線系統(tǒng)編程JTAG也是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測(cè)試。現(xiàn)在多數(shù)的高級(jí)器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 相關(guān)JTAG引腳的定義為:TCK為測(cè)試時(shí)鐘輸入;TDI為測(cè)試數(shù)據(jù)輸入,數(shù)據(jù)通過(guò)TDI引腳輸入JTAG接口;TDO為測(cè)試數(shù)據(jù)輸出,數(shù)據(jù)通過(guò)TDO引腳從JTAG接口輸出;TMS為測(cè)試模式選擇,TMS用來(lái)設(shè)置JTAG接口處于某種特定的測(cè)試模式;TRST為測(cè)試復(fù)位,輸入引腳,低電平有效。GND JTAG調(diào)試接口設(shè)計(jì)是否標(biāo)準(zhǔn),直接影響到硬件平臺(tái)是否能夠連接ARM仿真器。所以在設(shè)計(jì)時(shí),有以下幾點(diǎn)需要注意:
(1)盡可能按照標(biāo)準(zhǔn)的20針接口設(shè)計(jì)。如果設(shè)計(jì)成14針接口,一定要嚴(yán)格按照14針接口對(duì)應(yīng)于20針接口的對(duì)應(yīng)關(guān)系來(lái)設(shè)計(jì)。
(2)nTRST和nRESET、引腳不用時(shí),要用10 kΩ的電阻拉高,否則JTAG上這兩個(gè)引腳的信號(hào)不確定,會(huì)造成ARM調(diào)試器不能正常連接目標(biāo)系統(tǒng)。
(3)JTAG上輸出的信號(hào)都要用10 kΩ的電阻拉高。
2.6 UART、串行接口電路設(shè)計(jì)
AT91RM9200的UASRT作為同步/異步串行接口,在調(diào)試狀態(tài)下作為調(diào)試串口;在正常工作狀態(tài)下為一般串行口使用,可以通過(guò)RS 232實(shí)現(xiàn)與其他設(shè)備的通信。該設(shè)計(jì)中的UART、接口芯片是MAX3232,其工作電壓為3.3 V,16引腳SOIC封裝。其最為簡(jiǎn)單且常用的是三線制接法,即地線,接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線三腳對(duì)應(yīng)相連。
在完成以上幾部分電路設(shè)計(jì)后,基于AT91RM9200的嵌入式系統(tǒng)就具有了安全可靠的工作條件,也為下面的擴(kuò)展以太網(wǎng)接口設(shè)計(jì)打下了良好的基礎(chǔ)。
3 以太網(wǎng)接口設(shè)計(jì)
在ARM系統(tǒng)中,以太網(wǎng)接口是與遠(yuǎn)程機(jī)進(jìn)行通信及調(diào)試的基礎(chǔ),還可以進(jìn)行內(nèi)部局域網(wǎng)和互聯(lián)網(wǎng)間的通信。而基于ARM的系統(tǒng)若沒(méi)有以太網(wǎng)接口,其應(yīng)用價(jià)值就會(huì)大打折扣。因此,就整個(gè)嵌入式系統(tǒng)而言,以太網(wǎng)接口電路是必不可少的,但同時(shí)也是相對(duì)復(fù)雜的。
從硬件的角度看,以太網(wǎng)接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構(gòu)成。該設(shè)計(jì)中所用到的以太網(wǎng)接口芯片RTL8019AS,其內(nèi)部結(jié)構(gòu)包含這兩部分。RTL8019AS是一款高集成度的以太網(wǎng)控制芯片,具有8/16位總線模式,集成了IEEE802.3協(xié)議標(biāo)準(zhǔn)的MAC層和PHY層的性能,與NE2000相兼容,支持以太網(wǎng)全雙工通信方式;支持UTP,AUI和BNC自動(dòng)檢測(cè),支持16位I/O基本地址選項(xiàng)和額外I/O地址輸入/輸出完全解碼方式;支持存儲(chǔ)器瞬時(shí)讀寫(xiě),收發(fā)可同時(shí)達(dá)到10 Mb/s的速率,內(nèi)置16 KB的SRAM,可以方便地與微處理器進(jìn)行連接。它支持多種嵌入式處理器芯片,內(nèi)置有FIFO緩存器用于發(fā)送和接收數(shù)據(jù)。
3.1 以太網(wǎng)接口工作原理
使用RTL8019AS作為以太網(wǎng)的物理層接口,它的基本工作原理是:在收到由主機(jī)發(fā)來(lái)的數(shù)據(jù)包后,偵聽(tīng)網(wǎng)絡(luò)線路。如果線路忙,它就等到線路空閑為止,否則,立即發(fā)送該數(shù)據(jù)幀。在發(fā)送過(guò)程中,首先為數(shù)據(jù)包添加幀頭(包括前導(dǎo)字段和幀開(kāi)始標(biāo)志),然后生成CRC校驗(yàn)碼,最后將此數(shù)據(jù)幀發(fā)送到以太網(wǎng)上。
在接收過(guò)程中,它將從以太網(wǎng)收到的數(shù)據(jù)包在經(jīng)過(guò)解碼、去幀頭和地址校驗(yàn)等步驟后緩存在片內(nèi)。在CRC校驗(yàn)通過(guò)后,它會(huì)根據(jù)初始化配置情況,通知RTL8019AS收到了數(shù)據(jù)包。最后,用某種傳輸模式(I/O模式、Memory模式、DMA模式)傳到ARM系統(tǒng)的存儲(chǔ)區(qū)中。
3.2 硬件電路設(shè)計(jì)
用RTL8019AS芯片設(shè)計(jì)的以太網(wǎng)控制器相關(guān)電路,可以通過(guò)RJ45連上以太網(wǎng),在判斷網(wǎng)卡芯片是否工作正常時(shí),有兩個(gè)依據(jù),一是看狀態(tài)指示LED是否有閃爍;二是用專用網(wǎng)絡(luò)監(jiān)聽(tīng)工具軟件進(jìn)行監(jiān)聽(tīng)。在本設(shè)計(jì)中用兩個(gè)LED指示燈表示接收和發(fā)送狀態(tài),當(dāng)有網(wǎng)絡(luò)連接且收發(fā)數(shù)據(jù)包時(shí),LED閃爍。此外,網(wǎng)卡芯片單獨(dú)不能工作,還必須有一個(gè)網(wǎng)絡(luò)變壓器在RJ45接口和網(wǎng)卡芯片中間進(jìn)行電平轉(zhuǎn)換,該設(shè)計(jì)中所用的電平轉(zhuǎn)換器是20F001N.另外要特別注意,由于RTL8019AS的復(fù)位引腳是高電平有效,而AT91RM9200的NRST引腳是低電平有效,所以不能直接將兩個(gè)引腳進(jìn)行連接。該設(shè)計(jì)所用的解決方法是:在兩引腳間加上一個(gè)共發(fā)射極的三極管,利用它的反相作用,來(lái)達(dá)到兩個(gè)復(fù)位引腳間的電平匹配。同時(shí),為了提高數(shù)據(jù)的傳輸速率,需要將網(wǎng)卡芯片設(shè)計(jì)成16位的數(shù)據(jù)通道,這就要求將RTL8019AS的IOCSl6B引腳用電阻上拉來(lái)達(dá)到設(shè)計(jì)目的。RTL8019AS與AT91RM9200進(jìn)行連接還需要以下引腳:NOE,NEW,NCS2,D[O:15],一條中斷線IRQ0以及地址線A[O:4](設(shè)計(jì)RTL8019AS的I/O基地址為300H,所以只需要SA[O:4]接A[O:4],而A[5:19]只需要接地即可)。至此,硬件電路已經(jīng)設(shè)計(jì)完畢,整個(gè)電路的結(jié)構(gòu)框圖如圖1所示。
4 軟件設(shè)計(jì)
4.1 以太網(wǎng)口初始化
初始化第一步是復(fù)位以太網(wǎng)口。以太網(wǎng)口復(fù)位分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位通過(guò)給RTL8019AS的RESET引腳發(fā)送一個(gè)復(fù)位脈沖;軟件復(fù)位通過(guò)寫(xiě)端口達(dá)到復(fù)位,也就是給18~1F之間的任意一個(gè)寄存器寫(xiě)入任意一個(gè)數(shù),就使得以太網(wǎng)口復(fù)位。第二步是設(shè)置一些寄存器的初始值,寄存器保存本機(jī)的物理地址,只有和寄存器保存的物理地址相同的以太網(wǎng)幀才被接收(RCR寄存器中PRO=O)。
以太網(wǎng)口第一次復(fù)位必須是硬件復(fù)位,硬件復(fù)位以后要經(jīng)過(guò)大約10 ms的等待才能對(duì)以太網(wǎng)口操作,特別是發(fā)送和接收操作。
4.2 以太網(wǎng)口存儲(chǔ)及初始化
RTL8019AS內(nèi)部RAM地址范圍從0x0000~0x7FFFF,其中0x4000~Ox7FFF用作接收和發(fā)送緩沖區(qū)。緩沖區(qū)是按頁(yè)管理的,256 b為一頁(yè),這樣接收發(fā)送緩沖頁(yè)面是0x40~0x7F.發(fā)送緩沖區(qū)的起始頁(yè)在TPSR寄存器中設(shè)置,接收緩沖區(qū)的起始頁(yè)在PSTART寄存器中設(shè)置,PSTART實(shí)際上也表明了發(fā)送緩沖區(qū)的結(jié)束頁(yè)。接收緩沖區(qū)的結(jié)束頁(yè)是PSTOP.所以發(fā)送緩沖區(qū)的頁(yè)從TPSR到PSTART-1,接收緩沖區(qū)的頁(yè)從PSTART到PSTOP-1.一般設(shè)置如下:
使發(fā)送緩沖區(qū)可以容納下兩個(gè)最大以太網(wǎng)幀(最大為1 514 B),第一個(gè)幀放在SEND_START_PAGEO起始頁(yè),第二個(gè)幀放在SEND_START_PAGE1起始頁(yè),剩下的緩沖區(qū)都作為接收緩沖區(qū)。
RTL8019AS內(nèi)部RAM是雙口 RAM,因?yàn)樗С謨蓚€(gè)獨(dú)立的操作:一個(gè)是用戶CPU讀取RAM中的內(nèi)容,對(duì)這個(gè)操作RTL8019AS提供一個(gè)讀寫(xiě)口,也就是寄存器中的Remote DMA Port;另一個(gè)是RTL8019AS內(nèi)部控制電路把從網(wǎng)絡(luò)接收的數(shù)據(jù)寫(xiě)入RAM中,這時(shí)RAM稱為L(zhǎng)ocal DMA.RTL8019AS通過(guò)Local DMA寫(xiě)入RAM是不需要用戶干涉的,它通過(guò)Remote DMA Port讀寫(xiě)RAM.
讀RAM見(jiàn)RTLReadRam函數(shù),代碼如下:
這個(gè)函數(shù)表示從address開(kāi)始讀取size個(gè)字節(jié)的內(nèi)容到buff指向的內(nèi)存中。設(shè)置CR寄存器指令為:writereg(cr,(0x00 | er_remote_read | cr_start_com-mand));然后從Remote DMA Port讀取size次,就得到所需的數(shù)據(jù)。
寫(xiě)RAM函數(shù),操作基本上和讀RAM函數(shù)差不多,只要將最后一步的讀size次改成寫(xiě)size次就可以。
4.3 發(fā)送數(shù)據(jù)包
發(fā)送數(shù)據(jù)包的基本步驟如下:
(1)首先將發(fā)送的起始頁(yè),一般是發(fā)送緩沖區(qū)內(nèi)的頁(yè)(Ox40~Ox4b),寫(xiě)入StartPage變量中。將要發(fā)送的數(shù)據(jù)寫(xiě)入地址為StartPage《8開(kāi)始的緩沖區(qū)中,然后等待上一次發(fā)送結(jié)束。對(duì)于過(guò)大或者過(guò)小的數(shù)據(jù)包,不發(fā)送;對(duì)于過(guò)小的幀,在發(fā)送時(shí)要填充。
TPSR為發(fā)送起始寄存器,將StartPage寫(xiě)入TPSR寄存器,高字節(jié)寫(xiě)入TBCRH(TBCRl),低字節(jié)寫(xiě)入TBCRL(TBCRO)。當(dāng)寫(xiě)發(fā)送命令時(shí),RTL8019AS將從TPSR《8地址開(kāi)始發(fā)送size個(gè)字節(jié)的數(shù)據(jù)。
(2)發(fā)送數(shù)據(jù)幀:發(fā)送緩沖區(qū)可以存儲(chǔ)2個(gè)最大的以太網(wǎng)幀,一個(gè)起始頁(yè)為SEND_START_PAGEO,另一個(gè)起始頁(yè)SEND_START_PAGEl,兩個(gè)交替使用。發(fā)送數(shù)據(jù)幀時(shí),CR寄存器設(shè)置為:writereg(cr,((prepageOxCO)|cr_abort_compile_dma|cr_txp |cr_start_command]));發(fā)送數(shù)據(jù)包函數(shù)代碼如下:
4.4 接收數(shù)據(jù)包
接收數(shù)據(jù)包的步驟如下:
(1)接收緩沖操作。當(dāng)RTL8019AS接收到一個(gè)數(shù)據(jù)包后,自動(dòng)將接收的數(shù)據(jù)包放到CURR頁(yè)。如果一頁(yè)放不下,則CURR加1;如果CURR=接收結(jié)束頁(yè),則CURR自動(dòng)變成接收開(kāi)始頁(yè),繼續(xù)寫(xiě)入接收的數(shù)據(jù)。
(2)用戶讀取接收數(shù)據(jù)包。RTL8019AS通過(guò)Local DMA把接收的數(shù)據(jù)寫(xiě)入接收緩沖區(qū),并自動(dòng)改變CURR和識(shí)別緩沖區(qū)的界限,這些都不需要用戶干預(yù)。
當(dāng)一個(gè)無(wú)錯(cuò)的數(shù)據(jù)接收完畢,則觸發(fā)中斷處理函數(shù)。然后讀取數(shù)據(jù)包到分配的內(nèi)存,可以從接收字節(jié)計(jì)數(shù)器中得知讀取數(shù)據(jù)。這里要處理一種情況:如果接收的數(shù)據(jù)包存儲(chǔ)不是連續(xù)的,在這種情況下要分2次才能讀取1個(gè)完整的數(shù)據(jù)包,判斷是否存儲(chǔ)不連續(xù)的條件是:
bnry>Head[1]Head[1]!=RECEIVE_START_PAGE
其中:bnry是這個(gè)包的起始頁(yè);Head[1]是下一個(gè)包的起始頁(yè)。
接收數(shù)據(jù)包函數(shù)與發(fā)送數(shù)據(jù)包函數(shù)相似,只需要修改相應(yīng)寄存器配置即可。然后將接收的數(shù)據(jù)寫(xiě)入網(wǎng)絡(luò)接口層的輸入隊(duì)列,如果寫(xiě)入失敗則釋放內(nèi)存。寫(xiě)入后上層協(xié)議將提取這個(gè)數(shù)據(jù)包。最后網(wǎng)卡通過(guò)中斷控制器向ARM響應(yīng)中斷,中斷完畢清除中斷標(biāo)志。
5 結(jié) 語(yǔ)
ARM微處理器正以其極好的性價(jià)比和極低的功耗,與其他體系結(jié)構(gòu)的微處理器進(jìn)行激烈的競(jìng)爭(zhēng),其應(yīng)用將進(jìn)一步深入到各行各業(yè)。可以預(yù)測(cè),在將來(lái)的一段時(shí)期內(nèi),ARM微處理器將成為32位微處理器市場(chǎng)的統(tǒng)治者。了解、學(xué)習(xí)、掌握和應(yīng)用ARM微處理器技術(shù)很有必要,也非常重要。在ARM系統(tǒng)采用高性能的以太網(wǎng)控制器,系統(tǒng)通信和調(diào)試快速、可靠,具有很高的實(shí)時(shí)性。該設(shè)計(jì)構(gòu)造一個(gè)基于以太網(wǎng)的嵌入式系統(tǒng)的應(yīng)用,該接口模塊的主要任務(wù)是完成與外界的信息交互,以達(dá)到網(wǎng)絡(luò)監(jiān)控的目的。在實(shí)際應(yīng)用中,它運(yùn)行穩(wěn)定,能夠十分方便地實(shí)現(xiàn)網(wǎng)絡(luò)互連。
評(píng)論