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