久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊

 wwwijhyt圖書館 2014-05-08
互聯(lián)網(wǎng)絡(luò)硬件、軟件的迅猛發(fā)展,,使得網(wǎng)絡(luò)用戶呈指數(shù)增長,,在使用計(jì)算機(jī)進(jìn)行網(wǎng)絡(luò)互聯(lián)的同時(shí),各種家電設(shè)備,、儀器儀表以及工業(yè)生產(chǎn)中的數(shù)據(jù)采集與控制設(shè)備在逐步地走向網(wǎng)絡(luò)化,,以便共享網(wǎng)絡(luò)中龐大的信息資源。在電子設(shè)備日趨網(wǎng)絡(luò)化的背景下,,利用廉價(jià)的51單片機(jī)來控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊具有十分重要的意義,。

  1 以太網(wǎng)(Ethernet)協(xié)議

  一個(gè)標(biāo)準(zhǔn)的以太網(wǎng)物理傳輸幀由七部分組成(如表1所示,單位:字節(jié)),。

  表1 以太網(wǎng)的物理傳輸幀結(jié)構(gòu)表

  

PR SD DA SA TYPE DATA FCS
同步位 分隔位 目的地址 源地址 類型字段 數(shù)據(jù)段 幀校驗(yàn)序列
7 1 6 6 2 46~1500 4

  除了數(shù)據(jù)段的長度不定外,,其他部分的長度固定不變。數(shù)據(jù)段為46~1500字節(jié),。以太網(wǎng)規(guī)定整個(gè)傳輸包的最大長度不能超過1514字節(jié)(14字節(jié)為DA,、SA、TYPE),,最小不能小于60字節(jié),。除去DA、SA,、TYPE14字節(jié),,還必須傳輸46字節(jié)的數(shù)據(jù),當(dāng)數(shù)據(jù)段的數(shù)據(jù)不足46字節(jié)時(shí)需填充,,填充字符的個(gè)數(shù)不包括在長度字段里,;超過1500字節(jié)時(shí),需拆成多個(gè)幀傳送,。事實(shí)上,,發(fā)送數(shù)據(jù)時(shí),PR,、SD,、FCS及填充字段這幾個(gè)數(shù)據(jù)段由以太網(wǎng)控制器自動產(chǎn)生;而接收數(shù)據(jù)時(shí),,PR,、SD被跳過,控制器一旦檢測到有效的前序字段(即PR,、SD),,就認(rèn)為接收數(shù)據(jù)開始。

  2 RTL8019AS以太網(wǎng)控制器簡介

  由臺灣Realtek公司生產(chǎn)的RTL8019AS以太網(wǎng)控制器,,由于其優(yōu)良的性能,、低兼的價(jià)格,,使其在市場上10Mbps網(wǎng)卡中占有相當(dāng)?shù)谋壤?/p>

  用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊

  2.1 主要性能

  (1)符號Ethernet II與IEEE802.3(10Base5,、10Base2,、10BaseT)標(biāo)準(zhǔn);

 ?。?)全雙工,,收發(fā)可同時(shí)達(dá)到10Mbps的速率;

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

  (4)支持8/16位數(shù)據(jù)總線,,8個(gè)中斷申請線以及16個(gè)I/O基地址選擇,;

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

 ?。?)允許4個(gè)診斷LED引腳可編程輸出;

 ?。?)100腳的PQFP封裝,,縮小了PCB尺寸。

  2.2 內(nèi)部結(jié)構(gòu)

  RTL8019AS內(nèi)部可分為遠(yuǎn)程DMA接口,、本地DMA接口,、MAC(介質(zhì)訪問控制)邏輯、數(shù)據(jù)編碼解碼邏輯和其他端口,。內(nèi)部結(jié)構(gòu)如圖1所示,。

  遠(yuǎn)程DMA接口是指單片機(jī)對RTL8019AS內(nèi)部RAM進(jìn)行讀寫的總線,即ISA總線的接口部分,。單片機(jī)收發(fā)數(shù)據(jù)只需對遠(yuǎn)程DMA操作,。本地DMA接口是把RTL8019AS與網(wǎng)線的連接通道,完成控制器與網(wǎng)線的數(shù)據(jù)交換,。

  MAC(介質(zhì)訪問控制)邏輯完成以下功能:當(dāng)單片機(jī)向網(wǎng)上發(fā)送數(shù)據(jù)時(shí),,先將一幀數(shù)據(jù)通過遠(yuǎn)程DMA通道送到RTL8019AS中的發(fā)送緩存區(qū),然后發(fā)出傳送命令,;當(dāng)RTL8019AS完成了上幀的發(fā)送后,,再開始此幀的發(fā)送,。RTL819接收到的數(shù)據(jù)通過MAC比較、CRC校驗(yàn)后,,由FIFO存到接收緩沖區(qū),;收滿一幀后,以中斷或寄存器標(biāo)志的方式通知主處理器,。FIFO邏輯對收發(fā)數(shù)據(jù)作16字節(jié)的緩沖,,以減少對本地DMA請求的頻率。

  2.3 內(nèi)部RAM地址空間分配

  RTL8019AS內(nèi)部有兩塊RAM區(qū),。一塊16K字節(jié),,地址為0x4000~0x7fff;一塊32字節(jié),,地址為0x0000~0x001f,。RAM按頁存儲,每256字節(jié)為一頁,。一般將RAM的前12頁(即0x4000~0x4bff)存儲區(qū)作為發(fā)送緩沖區(qū),;后52頁(即0x4c00~0x7fff)存儲區(qū)作為接收緩沖區(qū)。第0頁叫Prom頁,,只有32字節(jié),,地址為0x0000~0x001f,用于存儲以太網(wǎng)物理地址,。

  要接收和發(fā)送數(shù)據(jù)包就必須通過DMA讀寫RTL8019AS內(nèi)部的16KB RAM,。它實(shí)際上是雙端口的RAM,是指有兩套總線連接到該RAM,,一套總線RTL8019AS讀或?qū)懺揜AM,,即本地DMA;另一套總線是單片機(jī)讀或?qū)懺揜AM,,即遠(yuǎn)程DMA,。

  2.4 I/O地址分配

  RTL8019AS具有32位輸入輸出地址,地址偏移量為00H~1FH,。其中00H~0FH共16個(gè)地址,,為寄存器地址。寄存器分為4頁:PAGE0,、PAGE1,、PAGE2、PAGE3,,由RTL8019AS的CR(Command Register命令寄存器)中的PS1,、PS0位來決定要訪問的頁。但與NE2000兼容的寄存器只有前3頁,PAGE3是RTL8019AS自己定義的,,對于其他兼容NE2000的芯片如DM9008無效,。遠(yuǎn)程DMA地址包括10H~17H,都可以用來做遠(yuǎn)程DMA端口,,只要用其中的一個(gè)就可以了,。復(fù)位端口包括18H~1FH共8個(gè)地址,功能一樣,,用于RTL8019AS復(fù)位,。

  3 接口電路設(shè)計(jì)

  下面介紹51系列單片機(jī)與RTL8019AS的接口電路,實(shí)現(xiàn)的網(wǎng)絡(luò)接口采用UTP(無屏蔽雙絞線)RJ-45接口,。

  圖2給出了89C52單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊的接口電路框圖,。用到的主要芯片有80C52、RTL8019AS,、93C46(64×16bit的EEPROM),、74HC573(8位鎖存)、62256(32K字節(jié)的RAM),。為分配好地址空間,,采用對93C46進(jìn)行讀(或?qū)懀┎僮鱽碓O(shè)置RTL8019AS的端口I/O基地址和以太網(wǎng)物理地址,。

  93C46是采用4線SPI串行接口的Serial EEPROM,,容量為1Kbit(64×16bit),主要保存RTL8019AS的配置信息,。00H~03H的地址空間用于存儲RTL8019AS內(nèi)配置寄存器CONFIG1~4的上電初始化值,;地址04H~11H存儲網(wǎng)絡(luò)節(jié)點(diǎn)地址即物理地址;地址12H~7FH內(nèi)存儲即插即用的配置信息,。RTL8019AS通過引腳EECS,、EESK、EEDI控制93C46的CS,、SK,、DI引腳,通過EEDO接收93C46的DO引腳的狀態(tài),。RTL8019AS復(fù)位后讀取93C46的內(nèi)容并設(shè)置內(nèi)部寄存器的值,,如果93C46中內(nèi)容不正確,RTL8019AS就無法正常工作,。先通過編程器如ALL07把配置好的數(shù)據(jù)寫入93C46,,再焊入電路。

  對93C46進(jìn)行數(shù)據(jù)配置:數(shù)據(jù)00H寫入93C46的地址00H內(nèi),;93C46地址04H~0AH中存放的是物理地址,,可以寫入設(shè)置所需的物理地址值,或不修改,采用原始值為物理地址,。通過編程器讀出04H~0AH的原始值為52544CC59906,,即所采用的物理地址。

  這樣,,RTL8019AS復(fù)位后讀取93C46中配置好的內(nèi)容,,對應(yīng)設(shè)置配置寄存器CONFIG1的值為00H,CONFIG1的低4位IOS3~0用于選擇I/O基地址,。IOS3~0設(shè)置值均為0時(shí),,RTL8019AS選擇的端口I/O基地址為300H。

  RTL8019AS的地址為20位,,那么用到RTL8019AS的地址空間為00300H~0031FH,,用二進(jìn)制表示00300H~0031FH,可以發(fā)現(xiàn)第19位到第5位是固定的:000000000011000,。RTL8019 AS的20根地址線SA0~SA19如表2連接,。

  表2 RTL8019AS地址線的連接表

  

SA19~SA10 接地
SA9~SA8 接單片機(jī)P2口的P2.7,即地址總線ADDR15
SA7~SA5 接地
SA4~SA0 對應(yīng)為地址總線的ADDR0~ADDR4

  通過ADDR15,、I/OW,、I/OR來劃分RTL8019AS和62256的地址空間。ADDR15接62256的CE腳,,低電平時(shí)選擇62256,;高電平時(shí)選擇RTL8019AS的地址空間80C52單片機(jī)的地址為16位,按圖2的電路框圖連接RTL8019AS的地址空間,。定義reg00~reg1f來對應(yīng)端口00300H~0031FH,。

  #define reg00 XBYTE[0x8000]/*300H*/

  #define reg01 XBYTE[0x8001]/*301H*/

  …

  #define reg1f XBYTE[0x801F]/*31FH*/

  讀寫操作、復(fù)位操作對應(yīng)的引腳按表3連接,。

  表3 RTL8019AS的ISA總線接口引腳與單片機(jī)的連接表

  

Pin29 IORB 讀信號,,接到單片機(jī)的WR引腳(P3.6)。
Pin30 IOWB 寫信號,,接到單片機(jī)的RD引腳(P3.7),。
Pin33 RSTDRV RESET信號,接單片機(jī)的T0(P3.4),。
Pin34 AEN 地址有效信號,,接地。
Pin96 IOCS16 采用電阻下拉該引腳,,復(fù)位時(shí)刻腳為低電平,,選擇8位模式。
Pin36~Pin43 SD0~SD7 8位數(shù)據(jù)總線,,接單片機(jī)的P0口,。(只用到8位數(shù)據(jù)總線,SD8~SD15不接。)

  采用10BASE-T布線標(biāo)準(zhǔn)通過雙絞線進(jìn)行以太網(wǎng)通訊,,而RTL8019AS內(nèi)置了10BASE-T收發(fā)器,,所以網(wǎng)絡(luò)接口的電路比較簡單。外接一個(gè)隔離LPF濾波器0132,,TPIN±為接收線,,TPOUT±為發(fā)送線,經(jīng)隔離后分別與RJ-45接口的RX±,、TX±端相連,。

  時(shí)鐘電路通過T1、T2接口一個(gè)20MHz晶振以及2個(gè)電容,,實(shí)現(xiàn)全雙工方式,。

  LED0、LED1各接一發(fā)光二極管以反映通訊狀態(tài):LED0表示LED_COL,,即通訊有沖突,;LED1表示LED_RX,即接收到網(wǎng)上的信息包,。

  4 程序設(shè)計(jì)

  所有程序采用Framclin C51語言編制,,可讀性強(qiáng),移植性好,,開發(fā)簡易,。

  4.1 復(fù)位RTL8019AS

  80C52的P3.4連接RTL8019AS的RESDRV來進(jìn)行復(fù)位操作。RSTDRV為高電平有效,,至少需要800ns的寬度,。給該引腳旋加一個(gè)1μs以上的高電平就可以復(fù)位,。施加一個(gè)高電平后,,然后施加一個(gè)低電平。復(fù)位過程將執(zhí)行一些操作,,至少需要2ms的時(shí)間,,推薦等待更久的時(shí)間之后如100ms之后才對它操作,以確保完全復(fù)位,。

  4.2 初始化RTL8019AS

  初始化頁0與頁1的相關(guān)寄存器,,頁2的寄存器是只讀的,不可以設(shè)置,,頁3的寄存器不是NE2000兼容的,,不用設(shè)置。

 ?。?)CR=0x21,選擇頁0的寄存器,;

  (2)TPSR=0x45,發(fā)送頁的起始頁地址,,初始化為指向第一個(gè)發(fā)送緩沖區(qū)的頁即0x40,;

  (3)PSTART=0x4c,,PSTOP=0x80,,構(gòu)造緩沖環(huán):0x4c~0x80;

 ?。?)BNRY=0x4c,,設(shè)置指針;

 ?。?)RCR=0xcc,,設(shè)置接收配置寄存器,使用接收緩沖區(qū),,僅接收自己地址的數(shù)據(jù)包(以及廣播地址數(shù)據(jù)包)和多點(diǎn)播送地址包,,小于64字節(jié)的包丟棄,校驗(yàn)錯的數(shù)據(jù)包不接收,;

 ?。?)TCR=0xe0,設(shè)置發(fā)送配置寄存器,,啟用CRC自動生成和自動校驗(yàn),,工作在正常模式;

 ?。?)DCR=0xc8,,設(shè)置數(shù)據(jù)配置寄存器,使用FIFO緩存,,普通模式,,8位數(shù)據(jù)DMA;

 ?。?)IMR=0x00,,設(shè)置中斷屏蔽寄存器,屏蔽所有中斷,;

 ?。?)CR=0x61,選擇頁1的寄存器;

 ?。?0)CURR=0x4d,,CURR是RTL8019AS寫內(nèi)存的指針,指向當(dāng)前正在寫的頁的下一頁,,初始化時(shí)指和0x4c+1=0x4d,;

 ?。?1)設(shè)置多址寄存器MAR0~MAR5,均設(shè)置為0x00,;

 ?。?2)設(shè)置網(wǎng)卡地址寄存器PAR0~PAR5;

 ?。?3)CR=0x22,,選擇頁1的寄存器,進(jìn)入正常工作狀態(tài),。

  用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊

  4.3 發(fā)送幀

  將待發(fā)送的數(shù)據(jù)按幀格式封裝,,通過遠(yuǎn)程DMA通道送到RTL8019AS中的發(fā)送緩存區(qū),然后發(fā)出傳送命令,,完成幀的發(fā)送,。需要設(shè)置以太網(wǎng)目的地址、以太網(wǎng)源地址,、協(xié)議類型,,再按所設(shè)置的協(xié)議類型來設(shè)置數(shù)據(jù)段。之后啟動遠(yuǎn)程DMA,,數(shù)據(jù)寫入RTL8019AS的RAM,,再啟動本地DMA,將數(shù)據(jù)發(fā)送網(wǎng)上,。

  RTL8019AS無法將整個(gè)數(shù)據(jù)包通過DMA通道一次存入FIFO,,則在構(gòu)成一個(gè)新的數(shù)據(jù)包之前必須先等待前一數(shù)據(jù)包發(fā)送完成。為提高發(fā)送效率,,設(shè)計(jì)將12頁的發(fā)送緩存區(qū)分為兩個(gè)6頁的發(fā)送緩存區(qū),,一個(gè)用于數(shù)據(jù)包發(fā)送,另一個(gè)用于構(gòu)造端的數(shù)據(jù)包,,交替使用,。

  5 軟件的調(diào)試與驗(yàn)證

  調(diào)試環(huán)境包括RTL8019AS實(shí)驗(yàn)板、PC機(jī)(帶網(wǎng)卡)以及網(wǎng)線,。

  用C51語言編程,,實(shí)現(xiàn)TCP/IP協(xié)議中ARP數(shù)據(jù)幀的收發(fā)。

  實(shí)驗(yàn)中,,單片機(jī)首先構(gòu)造一個(gè)ARP請求包發(fā)送給PC機(jī),PC機(jī)收到后會發(fā)送一個(gè)ARP應(yīng)答包給單片機(jī),,單片機(jī)收到該應(yīng)簽包后再發(fā)一個(gè)ARP請求包給PCF機(jī),,如此不斷循環(huán),來測試系統(tǒng)的性能,。在PC機(jī)上采用Sniffer軟件如Windump軟件來監(jiān)視(或截獲)PC機(jī)網(wǎng)卡接收ARP包的情況,,取得了滿意的效果,。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多