《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AVR高性能單片機(jī)的以太網(wǎng)接口設(shè)計
基于AVR高性能單片機(jī)的以太網(wǎng)接口設(shè)計
摘要: 本系統(tǒng)采用ATMEL公司的高性能單片機(jī)Mega64和10 Mb/s以太網(wǎng)控制芯片RTL8019AS實現(xiàn)了以太網(wǎng)接口,,詳細(xì)介紹了硬件電路的連接以及嵌入式TCP/IP的實現(xiàn),,使單片機(jī)具有了互聯(lián)網(wǎng)絡(luò)的接入功能,。
關(guān)鍵詞: avr Mega64 以太網(wǎng) RTL8019AS
Abstract:
Key words :

隨著互聯(lián)網(wǎng)的迅速發(fā)展,,各種家電設(shè)備,、儀器儀表也在逐步走向網(wǎng)絡(luò)化,以便共享網(wǎng)絡(luò)信息資源,、遠(yuǎn)程監(jiān)控等,,這也是嵌入式系統(tǒng)發(fā)展的趨勢。而以太網(wǎng)作為目前應(yīng)用最為廣泛的局域網(wǎng),,在工業(yè)自動化和過程控制領(lǐng)域得到了越來越多的應(yīng)用,,因此,對于大量存在的8位微控制器而言,,實現(xiàn)以太網(wǎng)通信具有重要的實際意義?,F(xiàn)在應(yīng)用較多的是基于51內(nèi)核單片機(jī)的上網(wǎng)方案,由于處理能力的限制,,要實現(xiàn)較復(fù)雜的網(wǎng)絡(luò)傳輸和控制有點(diǎn)困難,。本系統(tǒng)采用ATMEL公司的高性能單片機(jī)Mega64和10 Mb/s以太網(wǎng)控制芯片RTL8019AS實現(xiàn)了以太網(wǎng)接口,詳細(xì)介紹了硬件電路的連接以及嵌入式TCP/IP的實現(xiàn),,使單片機(jī)具有了互聯(lián)網(wǎng)絡(luò)的接入功能,。

1 硬件電路設(shè)計

1.1 主要器件選擇

微控制器選用高性能的AVR單片機(jī)Mega64,AVR是ATMEL公司結(jié)合了成熟的51系列和PIC系列單片機(jī)的優(yōu)點(diǎn)而推出的高性能8位單片機(jī),,具有性價比高,、資源豐富、速度快,、功耗低,、開發(fā)方便等特點(diǎn),。Mega64采用RISC結(jié)構(gòu),工作頻率可達(dá)16 MHz,,完全滿足運(yùn)行多種網(wǎng)絡(luò)協(xié)議的要求,,片內(nèi)具有4 KB的SRAM,64 KB的FLASH,,以太網(wǎng)最大數(shù)據(jù)包為1 514 B,,4 KB的RAM足夠以太網(wǎng)幀的存儲,64 KB的FLASH對于適當(dāng)?shù)某绦蛞约昂唵蔚腤eb Page來說也是可以的,,所以無需再外擴(kuò)資源,,大大簡化了外圍電路,提高了可靠性,。

以太網(wǎng)控制芯片選用的是臺灣REALTEK公司生產(chǎn)的RTL8019AS,,該芯片集成了介質(zhì)訪問控制子層(MAC)和物理層的性能,可以方便地設(shè)計基于ISA總線的系統(tǒng),。另外,,它還具有與NE2000兼容、軟件移植性好,、與單片機(jī)接口簡單,、價格低貨源好等優(yōu)點(diǎn),其主要

功能特性如下:

(1)符合EthernetⅡ與IEEE802.3(10Base5,,10Base2,,10BaseT)標(biāo)準(zhǔn)。

(2)軟件和8位及16位插槽的NE2000兼容,。

(3)全雙工,,收發(fā)可同時達(dá)到10 Mb/s的速率。

(4)內(nèi)置16 KB的SRAM,,用于收發(fā)緩存,,降低對主處理器的速度要求。

(5)支持8/16位數(shù)據(jù)總線,,8條中斷申請線以及16個I/0基地址選擇,。

(6)支持UTP,AUI,,BNC自動檢測以及對10BaseT拓?fù)浣Y(jié)構(gòu)的自動極性修正,。

(7)允許4個診斷LED引腳可編程輸出。

1.2 RTL8019AS與單片機(jī)的連接

RTL8019AS支持三種工作方式:第一種為跳線方式,,網(wǎng)絡(luò)控制器的I/O地址和中斷都由跳線決定,;第二種為免跳線方式,I/O地址和中斷由外接的E2PROM 93C46里的內(nèi)容所決定,;第三種為即插即用方式(PNP),,I/O地址和中斷都由軟件或操作系統(tǒng)自動進(jìn)行管理和配置,,用戶不必過多干預(yù),當(dāng)然這種方式要耗費(fèi)系統(tǒng)資源,。網(wǎng)絡(luò)控制器采用哪種方式由RTL8019AS的65腳(JP)決定,,本系統(tǒng)采用第一種即跳線方式,這時JP要接高電平,;第三種方式一般用于PC機(jī)中,,對于8位單片機(jī)來說無法實現(xiàn),未用第二種方式又可以省掉一片93C46芯片,,不但簡化了硬件電路設(shè)計,,而且降低了成本。

RTL8019AS有兩種復(fù)位方式:冷復(fù)位和熱復(fù)位,。給8019的復(fù)位引腳施加一個1μs以上的高電平就可以實現(xiàn)冷復(fù)位,;先讀再寫8019的任意一個復(fù)位端口都可以實現(xiàn)熱復(fù)位,這在PC機(jī)中用的較多,??梢詫?019的復(fù)位引腳和單片機(jī)的復(fù)位引腳相連,單片機(jī)復(fù)位的時候8019也復(fù)位,,這種情況可以減少單片機(jī)的一個引腳的使用,,但為了保證能夠完全復(fù)位,可以在程序中進(jìn)行熱復(fù)位,。然而Mega64為低電平復(fù)位,,而8019為高電平復(fù)位,如果這樣連接的話還需要加一個非門進(jìn)行反相,,鑒于Mega64的引腳較多,,所以將8019的復(fù)位引腳連接到Mega64的一個I/O口上,由該引腳對8019進(jìn)行冷復(fù)位,。

圖1所示為RTL8019AS的部分電路圖,其工作時鐘為20 MHz,。RTL8019AS的引腳懸空時,,輸入狀態(tài)為低電平,因為芯片引腳內(nèi)部已經(jīng)接了一個100 kΩ的下拉電阻,。AEN引腳為I/O端口操作允許使能腳,,接地使地址一直處于有效;IOCSl6B引腳用一個27 kΩ的電阻下拉到地,,復(fù)位時刻為低電平,,選擇8位總線模式;讀寫引腳IORB,、IOWB分別與單片機(jī)的RD,,WR引腳相連,;8位數(shù)據(jù)總線SD0~sD7接到單片機(jī)的PA口;IOSO~I(xiàn)OS3為I/O基地址選擇引腳,,懸空設(shè)置為300H,,所以SA5~SA7,SAl0~SAl9接地,,SA8和SA9接高電平,,真正用到的地址線只有SA0~SA4,接到單片機(jī)的地址線上,;IRQS0~I(xiàn)RQS2為中斷選擇引腳,,懸空選擇中斷INT0,實際上并沒有使用中斷,,而是使用了查詢方式,;AUI引腳用于AUI接口外部MAU檢測,決定使用AUI還是BNC接口,,BNC接口方式支持8線雙絞或同軸電纜,,所以將該引腳懸空選擇使用RJ45接口;SMEMRB和SMEMWB為存儲器讀寫引腳,,由于我們使用的是I/O模式讀寫網(wǎng)絡(luò)芯片,,所以將它們接高電平;TPIN和TPOUT為差分輸入輸出引腳,,分別用來接收來自雙絞線和向雙絞線發(fā)送10 Mb/s的差分曼徹斯特編碼信號,,RTL8019AS需要經(jīng)過隔離處理才能和RJ45接口相連,然后接入以太網(wǎng),,隔離低通濾波器選用的是20F001N,,內(nèi)部有兩個傳輸變壓器,用來傳輸信號以及抑制噪聲干擾,。

2 系統(tǒng)軟件實現(xiàn)

2.1 RTL8019AS地址空間與寄存器

RTL8019AS內(nèi)部的16 KB的RAM用于收發(fā)緩沖,,地址為Ox4000~0x7FFF,收發(fā)緩沖以頁為單位,,每頁256 B,,共64頁,如果某頁沒有完全填滿數(shù)據(jù),,則下包數(shù)據(jù)也不能繼續(xù)使用該頁,,只能使用新的頁。一般將前12頁作為發(fā)送緩沖區(qū),,分為兩個6頁的緩沖區(qū)(因為一個最大數(shù)據(jù)包占6頁),,兩個發(fā)送緩沖區(qū)交替使用,可提高發(fā)送效率,后52頁作為接收緩沖區(qū),。該RAM是雙端口的,,具有兩套總線,一套是RTL8019AS讀寫該RAM,,即本地DMA,;另一套是單片機(jī)讀寫該RAM,即遠(yuǎn)程DMA,,要接收和發(fā)送數(shù)據(jù)包就必須對這塊RAM進(jìn)行DMA讀寫,。

RTL8019AS具有32位I/O地址,地址偏移量為00H~1FH,,本系統(tǒng)中對應(yīng)于300H~31FH,,其中,00H~0FH為16個寄存器地址,,寄存器分為4頁,,與NE2000兼容的只有前3頁,第4頁是RTL8019AS自己定義的,,對于其他兼容NE2000的芯片無效,,所以為了保證驅(qū)動程序?qū)λ蠳E2000兼容的網(wǎng)卡都有效,不要去操作第4頁的寄存器,。10H~17H為8個遠(yuǎn)程DMA地址,,都可以用來做遠(yuǎn)程DMA地址,使用其中一個即可,,微控制器通過讀寫數(shù)據(jù)端口10H~17H實現(xiàn)對緩沖區(qū)的訪問,。18H~1FH共8個地址為復(fù)位端口,它們功能一樣,,使用其中一個即可,,用于RTL8019AS的熱復(fù)位。

2.2 嵌入式TCp/IP實現(xiàn)

TCP/IP協(xié)議族是一組不同層次上的多個協(xié)議的組合,,分為鏈路層,、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層,。對于8位單片機(jī)來說,,由于其處理速度和存儲能力的問題,要實現(xiàn)完整的TCP/IP協(xié)議棧是比較困難的,,因此要根據(jù)其特點(diǎn)及自己的需求,對協(xié)議進(jìn)行裁剪,,保留其核心部分,。該系統(tǒng)只實現(xiàn)了ARP,IP,ICMP,,UDP,,TCP協(xié)議,采用C語言編寫,。

在鏈路層上,,首先要解決RTL8019AS的驅(qū)動問題,驅(qū)動程序包括三部分:以太網(wǎng)接口芯片初始化程序,、發(fā)送數(shù)據(jù)程序和接收數(shù)據(jù)程序,,它們屏蔽了底層硬件處理細(xì)節(jié),同時向上層軟件提供與硬件無關(guān)的接口,。驅(qū)動程序?qū)⒁逊庋b好的待發(fā)送數(shù)據(jù)按指定格式寫入芯片并啟動發(fā)送命令,,8019會自動把數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在信道上傳輸;反之,,8019收到物理信號后將其還原成數(shù)據(jù),,按指定格式存放在芯片RAM中以便主機(jī)程序取用,下面給出部分初始化程序,,主要是對一些寄存器進(jìn)行設(shè)置,,其中,reg00~regof為宏定義,,代表RTL8019AS內(nèi)地址偏移量為00H~0FH的寄存器地址,。
 

頁2的寄存器是只讀的,頁3的寄存器不是NE2000兼容的,,所以均不用設(shè)置,。首先選擇為頁O,網(wǎng)卡芯片為停止模式,,因為還沒有進(jìn)行初始化,,設(shè)置0x40~Ox4B為網(wǎng)卡的發(fā)送緩沖區(qū),共12頁,,剛好存儲2個最大的以太網(wǎng)數(shù)據(jù)包,;0x4C~0x7F為網(wǎng)卡的接收緩沖區(qū),共52頁,;剛開始時網(wǎng)卡沒有接收到任何數(shù)據(jù)包,,因此BNRY指向第一個接收緩沖區(qū)的頁0x4C。設(shè)置完頁O的寄存器后切換為頁1,,由于設(shè)計中沒有使用93C46,,因此需要在程序中指定芯片的物理地址,寫入到PAR寄存器,,然后啟動芯片開始工作,。讀指針BN—RY和寫指針CURR主要用來控制緩沖區(qū)的存取過程,保證能正確讀出和寫入數(shù)據(jù)。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。