<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 淺談AT91RM9200在以太網接口模塊應用

          淺談AT91RM9200在以太網接口模塊應用

          作者: 時間:2012-01-06 來源:網絡 收藏

          0 引 言

          本文引用地址:http://www.ex-cimer.com/article/149862.htm

          在Internet飛速發(fā)展的今天,網絡已經滲透到生活的方方面面,與網絡的結合已經成為嵌入式系統(tǒng)發(fā)展的必然趨勢。目前,ARM微處理器已經在多個領域中得到,各種基于ARM微處理器的設備數量已經遠遠超過了通用計算機,基于ARM微處理器的開發(fā)正成為數字時代的技術潮流。ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),設計了大量高性能、廉價、耗能低的RISC處理器、相關技術及軟件。技術具有性能高、成本低和能耗省的特點。適用于多種領域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應用等。

          l 簡介

          是基于ARM920T核的高性能、低功耗16/32位RISC(精簡指令集計算機)微處理器。其內部集成豐富的外設資源,適用于要求外設資源豐富、功耗低、工作嚴格穩(wěn)定的工業(yè)控制和野外儀器等方面。 從而為低功耗,低成本,高性能的計算機應用提供了一個單片解決方案。適用于要求外設資源豐富,功耗低,工作穩(wěn)定的工業(yè)控制等方面。

          處理器主要具有如下特點:1)低功耗:VDDCORE電流為30.4mA,待機模式電流為3.1mA.2)雙向、32位外部數據總線支持8位、16位、32位數據寬度讀寫,支持SDRAM、static Memory、Burst Flash、Compact FLASH和NAND Flash,滿足采集站對于數據的采集和處理要求。3)提供一系列符合工業(yè)標準的外設,如:USART、SSC、SPI、USB及I2C等。4)具有20通道外圍數據控制器(PDC或DMA),可以數據的傳輸更快,同時可以減輕CPU的負擔,以便實時響應其它的處理。5)支持USB 2.0(12Mbps)主機端口,可以方便在野外采集時另接存儲器,以便持續(xù)采集。 6)支持10/100,可以很方便的實現(xiàn)采集之間的快速通信。

          2 最小系統(tǒng)設計

          硬件系統(tǒng)設計是嵌入式系統(tǒng)設計的基礎,ARM系統(tǒng)硬件平臺主要分為兩部分:一部分為基于ARM處理器的最小系統(tǒng);另一部分為外圍擴展電路。系統(tǒng)只有在硬件最小系統(tǒng)調試穩(wěn)定的基礎上,才能靈活、輕松地擴展出其他外圍應用,所以最小系統(tǒng)是保證微處理器可靠工作所必須的基本電路。基于AT91RM9200微處理器的最小系統(tǒng)由微處理器、電源電路、時鐘電路、復位電路、JTAG、存儲器、串行調試等電路組成。

          2.1 電源電路設計

          在系統(tǒng)中AT91RM9200需要1.8 V和3.3 V電源,另外,大部分外圍器件需要3.3 V電源,小部分外圍器件還需要5 V電源,假設輸入電壓為5 V直流穩(wěn)壓電源。為了得到可靠的3.3 V電壓,此處選用的電壓轉換芯片是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個固定輸出電壓,所以設計比較簡單,只需要在電路中與芯片并聯(lián)2個典型值為10 tLF、的濾波電容即可。

          2.2 時鐘電路設計

          時鐘電路為AT91RM9200和其他外設電路提供工作時鐘。處理器內部帶有鎖相環(huán)電路,所以外接頻率比較低的晶體振蕩器,該設計用晶體振蕩器Y1(20 MHz)作為系統(tǒng)的主時鐘振蕩器。處理器內部還帶有實時時鐘電路,還需要外接32.768 kHz的晶體振蕩器。振蕩器產生的主時鐘和慢時鐘經過微處理器內部2個鎖相環(huán)后,產生系統(tǒng)所需的各種主時鐘、外設時鐘以及USB器件工作時鐘。振蕩器(英文:oscillator)是用來產生重復電子訊號(通常是正弦波或方波)的電子元件。其構成的電路叫振蕩電路。能將直流電轉換為具有一定頻率交流電信號輸出的電子電路或裝置。種類很多,按振蕩激勵方式可分為自激振蕩器、他激振蕩器;按電路結構可分為阻容振蕩器、電感電容振蕩器、晶體振蕩器、音叉振蕩器等;按輸出波形可分為正弦波、方波、鋸齒波等振蕩器。廣泛用于電子工業(yè)、醫(yī)療、科學研究等方面。

          2.3 復位電路設計

          AT91RM9200有2個獨立的復位信號,即系統(tǒng)復位信號NRST與調試復位信號NTRSI,都是低電平有效。系統(tǒng)上電后,AT91RM9200必須執(zhí)行一個上電復位,在過渡狀態(tài)下,它的強制復位信號為低,直到電源電壓和振蕩器工作頻率穩(wěn)定為止。此外,NRST和NTRST還可以手動復位,以方便用戶調試程序。

          2.4 存儲器設計

          存儲器包括NOR FLASH存儲器和SDRAM存儲器。

          NOR FLASH存儲器用于存儲系統(tǒng)運行所需的程序和重要數據,即使掉電,程序和數據也不會丟失。該設計中所用芯片是Atmel公司生產的AT49BNl614T,以保持與AT91RM9200的兼容性,其存儲容量為2 MB,工作電壓為3.3 V,采用56引腳TSOP封裝,具有16位數據寬度。AT91RM9200需要以下引腳與之對應相連:A[1:21],D[0:15],NCSO/BFCS,NRST,BFRDY,BFWE,BFOE.

          SDRAM存儲器的作用是存放系統(tǒng)運行時的程序和數據,掉電后該部分程序和數據會丟失。SDRAM:Synchronous Dynamic Random Access Memory,同步動態(tài)隨機存儲器,同步是指 Memory工作需要同步時鐘,內部的命令的發(fā)送與數據的傳輸都以它為基準;動態(tài)是指存儲陣列需要不斷的刷新來保證數據不丟失;隨機是指數據不是線性依次存儲,而是自由指定地址進行數據讀寫。SDRAM從發(fā)展到現(xiàn)在已經經歷了四代,分別是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(顯卡上的DDR已經發(fā)展到DDR5) 設計中使用兩片數據寬度為16位的SDRAM并為一個具有32位數據寬度的SDRAM模塊,以充分發(fā)揮微處理器32位數據寬度的高性能。AT91RM9200需要以下引腳與HY57V561620對應相連:D[0:31],A[2:11],A[13:14],NBS0,N:BSl,NBS2,NBS3,SDCKE,SDCK,SDCS,RAS,CAS,SDWE.這里特別注意:A12引腳不使用。

          2.5 JTAG接口電路設計

          JTAG是英文Joint Test Action Group(聯(lián)合測試行為組織)的詞頭字母的簡寫,該組織成立于1985 年,是由幾家主要的電子制造商發(fā)起制訂的PCB 和IC 測試標準。JTAG 建議于1990 年被IEEE 批準為IEEE1149.1-1990 測試訪問端口和邊界掃描結構標準。該標準規(guī)定了進行邊界掃描所需要的硬件和軟件。自從1990 年批準后,IEEE 分別于1993 年和1995 年對該標準作了補充,形成了現(xiàn)在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994.JTAG 主要應用于:電路的邊界掃描測試和可編程芯片的在線系統(tǒng)編程JTAG也是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內部測試?,F(xiàn)在多數的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。 相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設置JTAG接口處于某種特定的測試模式;TRST為測試復位,輸入引腳,低電平有效。GND JTAG調試接口設計是否標準,直接影響到硬件平臺是否能夠連接ARM仿真器。所以在設計時,有以下幾點需要注意:

          (1)盡可能按照標準的20針接口設計。如果設計成14針接口,一定要嚴格按照14針接口對應于20針接口的對應關系來設計。

          (2)nTRST和nRESET、引腳不用時,要用10 kΩ的電阻拉高,否則JTAG上這兩個引腳的信號不確定,會造成ARM調試器不能正常連接目標系統(tǒng)。

          (3)JTAG上輸出的信號都要用10 kΩ的電阻拉高。

          2.6 UART、串行接口電路設計

          AT91RM9200的UASRT作為同步/異步串行接口,在調試狀態(tài)下作為調試串口;在正常工作狀態(tài)下為一般串行口使用,可以通過RS 232實現(xiàn)與其他設備的通信。該設計中的UART、接口芯片是MAX3232,其工作電壓為3.3 V,16引腳SOIC封裝。其最為簡單且常用的是三線制接法,即地線,接收數據線和發(fā)送數據線三腳對應相連。

          在完成以上幾部分電路設計后,基于AT91RM9200的嵌入式系統(tǒng)就具有了安全可靠的工作條件,也為下面的擴展接口設計打下了良好的基礎。

          3 接口設計

          在ARM系統(tǒng)中,以太網接口是與遠程機進行通信及調試的基礎,還可以進行內部局域網和互聯(lián)網間的通信。而基于ARM的系統(tǒng)若沒有以太網接口,其應用價值就會大打折扣。因此,就整個嵌入式系統(tǒng)而言,以太網接口電路是必不可少的,但同時也是相對復雜的。

          從硬件的角度看,以太網接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構成。該設計中所用到的以太網接口芯片RTL8019AS,其內部結構包含這兩部分。RTL8019AS是一款高集成度的以太網控制芯片,具有8/16位總線模式,集成了IEEE802.3協(xié)議標準的MAC層和PHY層的性能,與NE2000相兼容,支持以太網全雙工通信方式;支持UTP,AUI和BNC自動檢測,支持16位I/O基本地址選項和額外I/O地址輸入/輸出完全解碼方式;支持存儲器瞬時讀寫,收發(fā)可同時達到10 Mb/s的速率,內置16 KB的SRAM,可以方便地與微處理器進行連接。它支持多種嵌入式處理器芯片,內置有FIFO緩存器用于發(fā)送和接收數據。

          3.1 以太網接口工作原理

          使用RTL8019AS作為以太網的物理層接口,它的基本工作原理是:在收到由主機發(fā)來的數據包后,偵聽網絡線路。如果線路忙,它就等到線路空閑為止,否則,立即發(fā)送該數據幀。在發(fā)送過程中,首先為數據包添加幀頭(包括前導字段和幀開始標志),然后生成CRC校驗碼,最后將此數據幀發(fā)送到以太網上。

          在接收過程中,它將從以太網收到的數據包在經過解碼、去幀頭和地址校驗等步驟后緩存在片內。在CRC校驗通過后,它會根據初始化配置情況,通知RTL8019AS收到了數據包。最后,用某種傳輸模式(I/O模式、Memory模式、DMA模式)傳到ARM系統(tǒng)的存儲區(qū)中。

          3.2 硬件電路設計

          用RTL8019AS芯片設計的以太網控制器相關電路,可以通過RJ45連上以太網,在判斷網卡芯片是否工作正常時,有兩個依據,一是看狀態(tài)指示LED是否有閃爍;二是用專用網絡監(jiān)聽工具軟件進行監(jiān)聽。在本設計中用兩個LED指示燈表示接收和發(fā)送狀態(tài),當有網絡連接且收發(fā)數據包時,LED閃爍。此外,網卡芯片單獨不能工作,還必須有一個網絡變壓器在RJ45接口和網卡芯片中間進行電平轉換,該設計中所用的電平轉換器是20F001N.另外要特別注意,由于RTL8019AS的復位引腳是高電平有效,而AT91RM9200的NRST引腳是低電平有效,所以不能直接將兩個引腳進行連接。該設計所用的解決方法是:在兩引腳間加上一個共發(fā)射極的三極管,利用它的反相作用,來達到兩個復位引腳間的電平匹配。同時,為了提高數據的傳輸速率,需要將網卡芯片設計成16位的數據通道,這就要求將RTL8019AS的IOCSl6B引腳用電阻上拉來達到設計目的。RTL8019AS與AT91RM9200進行連接還需要以下引腳:NOE,NEW,NCS2,D[O:15],一條中斷線IRQ0以及地址線A[O:4](設計RTL8019AS的I/O基地址為300H,所以只需要SA[O:4]接A[O:4],而A[5:19]只需要接地即可)。至此,硬件電路已經設計完畢,整個電路的結構框圖如圖1所示。

          4 軟件設計

          4.1 以太網口初始化

          初始化第一步是復位以太網口。以太網口復位分為硬件復位和軟件復位。硬件復位通過給RTL8019AS的RESET引腳發(fā)送一個復位脈沖;軟件復位通過寫端口達到復位,也就是給18~1F之間的任意一個寄存器寫入任意一個數,就使得以太網口復位。第二步是設置一些寄存器的初始值,寄存器保存本機的物理地址,只有和寄存器保存的物理地址相同的以太網幀才被接收(RCR寄存器中PRO=O)。

          以太網口第一次復位必須是硬件復位,硬件復位以后要經過大約10 ms的等待才能對以太網口操作,特別是發(fā)送和接收操作。

          4.2 以太網口存儲及初始化

          RTL8019AS內部RAM地址范圍從0x0000~0x7FFFF,其中0x4000~Ox7FFF用作接收和發(fā)送緩沖區(qū)。緩沖區(qū)是按頁管理的,256 b為一頁,這樣接收發(fā)送緩沖頁面是0x40~0x7F.發(fā)送緩沖區(qū)的起始頁在TPSR寄存器中設置,接收緩沖區(qū)的起始頁在PSTART寄存器中設置,PSTART實際上也表明了發(fā)送緩沖區(qū)的結束頁。接收緩沖區(qū)的結束頁是PSTOP.所以發(fā)送緩沖區(qū)的頁從TPSR到PSTART-1,接收緩沖區(qū)的頁從PSTART到PSTOP-1.一般設置如下:

          使發(fā)送緩沖區(qū)可以容納下兩個最大以太網幀(最大為1 514 B),第一個幀放在SEND_START_PAGEO起始頁,第二個幀放在SEND_START_PAGE1起始頁,剩下的緩沖區(qū)都作為接收緩沖區(qū)。

          RTL8019AS內部RAM是雙口 RAM,因為它要支持兩個獨立的操作:一個是用戶CPU讀取RAM中的內容,對這個操作RTL8019AS提供一個讀寫口,也就是寄存器中的Remote DMA Port;另一個是RTL8019AS內部控制電路把從網絡接收的數據寫入RAM中,這時RAM稱為Local DMA.RTL8019AS通過Local DMA寫入RAM是不需要用戶干涉的,它通過Remote DMA Port讀寫RAM.

          讀RAM見RTLReadRam函數,代碼如下:

          這個函數表示從address開始讀取size個字節(jié)的內容到buff指向的內存中。設置CR寄存器指令為:writereg(cr,(0x00 | er_remote_read | cr_start_com-mand));然后從Remote DMA Port讀取size次,就得到所需的數據。

          寫RAM函數,操作基本上和讀RAM函數差不多,只要將最后一步的讀size次改成寫size次就可以。

          4.3 發(fā)送數據包

          發(fā)送數據包的基本步驟如下:

          (1)首先將發(fā)送的起始頁,一般是發(fā)送緩沖區(qū)內的頁(Ox40~Ox4b),寫入StartPage變量中。將要發(fā)送的數據寫入地址為StartPage《8開始的緩沖區(qū)中,然后等待上一次發(fā)送結束。對于過大或者過小的數據包,不發(fā)送;對于過小的幀,在發(fā)送時要填充。

          TPSR為發(fā)送起始寄存器,將StartPage寫入TPSR寄存器,高字節(jié)寫入TBCRH(TBCRl),低字節(jié)寫入TBCRL(TBCRO)。當寫發(fā)送命令時,RTL8019AS將從TPSR《8地址開始發(fā)送size個字節(jié)的數據。

          (2)發(fā)送數據幀:發(fā)送緩沖區(qū)可以存儲2個最大的以太網幀,一個起始頁為SEND_START_PAGEO,另一個起始頁SEND_START_PAGEl,兩個交替使用。發(fā)送數據幀時,CR寄存器設置為:writereg(cr,((prepageOxCO)|cr_abort_compile_dma|cr_txp |cr_start_command]));發(fā)送數據包函數代碼如下:

          4.4 接收數據包

          接收數據包的步驟如下:

          (1)接收緩沖操作。當RTL8019AS接收到一個數據包后,自動將接收的數據包放到CURR頁。如果一頁放不下,則CURR加1;如果CURR=接收結束頁,則CURR自動變成接收開始頁,繼續(xù)寫入接收的數據。

          (2)用戶讀取接收數據包。RTL8019AS通過Local DMA把接收的數據寫入接收緩沖區(qū),并自動改變CURR和識別緩沖區(qū)的界限,這些都不需要用戶干預。

          當一個無錯的數據接收完畢,則觸發(fā)中斷處理函數。然后讀取數據包到分配的內存,可以從接收字節(jié)計數器中得知讀取數據。這里要處理一種情況:如果接收的數據包存儲不是連續(xù)的,在這種情況下要分2次才能讀取1個完整的數據包,判斷是否存儲不連續(xù)的條件是:

          bnry>Head[1]Head[1]!=RECEIVE_START_PAGE

          其中:bnry是這個包的起始頁;Head[1]是下一個包的起始頁。

          接收數據包函數與發(fā)送數據包函數相似,只需要修改相應寄存器配置即可。然后將接收的數據寫入網絡接口層的輸入隊列,如果寫入失敗則釋放內存。寫入后上層協(xié)議將提取這個數據包。最后網卡通過中斷控制器向ARM響應中斷,中斷完畢清除中斷標志。

          5 結 語

          ARM微處理器正以其極好的性價比和極低的功耗,與其他體系結構的微處理器進行激烈的競爭,其應用將進一步深入到各行各業(yè)??梢灶A測,在將來的一段時期內,ARM微處理器將成為32位微處理器市場的統(tǒng)治者。了解、學習、掌握和應用ARM微處理器技術很有必要,也非常重要。在ARM系統(tǒng)采用高性能的以太網控制器,系統(tǒng)通信和調試快速、可靠,具有很高的實時性。該設計構造一個基于以太網的嵌入式系統(tǒng)的應用,該接口模塊的主要任務是完成與外界的信息交互,以達到網絡監(jiān)控的目的。在實際應用中,它運行穩(wěn)定,能夠十分方便地實現(xiàn)網絡互連。

          上拉電阻相關文章:上拉電阻原理
          雙控開關相關文章:雙控開關原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();