<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM LPC2210的以太網(wǎng)RTL8019AS驅動(dòng)系統設計

基于A(yíng)RM LPC2210的以太網(wǎng)RTL8019AS驅動(dòng)系統設計

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
Author:tiger-john

WebSite:blog.csdn.net/tigerjb

本文引用地址:http://dyxdggzs.com/article/201611/316897.htm

Email:jibo.tiger@gmail.com

開(kāi)發(fā)環(huán)境硬件環(huán)境:LPC2200

操作系統:UC/OS-II操作系統

編譯環(huán)境:ADS1.2

Update-Time: 2011年2月28日星期四

Tiger聲明:本人鄙視直接復制本人文章而不加出處的個(gè)人或團體,

但不排斥別人轉載tiger-john的文章,只是請您注明出處并和本人

聯(lián)系或留言給我。3Q

---------------------------------------------------------

一.系統硬件概述

1.1.ARM LPC2210芯片簡(jiǎn)介

LPC2210是Philips公司推出的微處理器,帶有16 KBRAM,76個(gè)通用I/O口,12個(gè)獨立外部中斷引腳,集成有8通道的10位A/D,能夠基于芯片設計復雜的系統。

1.2.RTL8019AS芯片簡(jiǎn)介

?RTL8019AS是臺灣Realtek半導體公司生產(chǎn)的以太網(wǎng)控制器,其性能包括:支持EthernetII和IEEE802.3標準;支持8/16位數據總線(xiàn);內置16 KWord的SRAM;全雙工,收發(fā)同時(shí)達到10 Mb/s;支持BNC,AUI,UTP介質(zhì)。RTLS019AS可提供100腳的TQFP封裝,減少了PCB面積,更適合于嵌入式系統。

1.3.HR901170A芯片簡(jiǎn)介

HR901170A是漢仁電子有限公司生產(chǎn)的RJ45接口連接器(帶網(wǎng)絡(luò )變壓器/濾波器),該連接器滿(mǎn)足IEEES02.3和IEEE902.3ab標準,能夠較好地抑制電磁干擾。通過(guò)HR901170A系統就可以連接到以太網(wǎng)上。

注:RTL8019AS與網(wǎng)絡(luò )介質(zhì)之間的連接由Rj45接頭HR901170A完成。

二RTL8019AS芯片工作原理

2.1RTL8019AS寄存器及其映射方式

?RTL8019AS寄存器采用內存映射的方式。映射地址根據具體的硬件連接方式不同而不同。在LPC2210開(kāi)發(fā)板中RTL8019AS在CPU的存儲空間上映射的基地址為0X83400000。

?LPC2210通過(guò)16位DMA方式實(shí)現對RTL8019AS雙口RAM的訪(fǎng)問(wèn),另外使用P0.8控制RTL8019AS芯片復位,使用以太網(wǎng)接口時(shí)必須將P0.8設置為輸出模式,并且將跳線(xiàn)器JP8_NET_RST短接。RTL8019AS芯片中的中斷輸出與P0.9(EINT3)相連,當需要使用RTL8019AS中斷時(shí)必須將P0.9設置為EINT3功能,并且將跳線(xiàn)器JP8_NET_INT短接。

2.2RTL8019AS內部結構及工作原理

1>RTL8019AS芯片內部具有一個(gè)16Kbytes的雙口RAM作為數據FIFO,它從邏輯上可劃分為64個(gè)256字節的頁(yè),每一個(gè)頁(yè)面包括16個(gè)寄存器,每個(gè)寄存器均是8位。在不同的頁(yè)面下,同一個(gè)端口對應不同的寄存器。

2>一般將RAM的前12頁(yè)(即0X4000~0X4bff)存儲區作為發(fā)送緩沖區;后52頁(yè)(即0x4c00~0x7fff)存儲區作為接收緩沖區;頁(yè)的地址就是地址的高8位(即0x40~0x4b;0x4c~0x7f);第0頁(yè)叫Prom頁(yè),只有32字節,地址為0x000~0x001f,用于存儲以太網(wǎng)物理地址。

說(shuō)明:

?寄存器和內置RAM是網(wǎng)卡功能實(shí)現的載體,驅動(dòng)程序也是通過(guò)對它們的操作完成CPU所指令的任務(wù)。驅動(dòng)程序所涉及的寄存器主要在Page0和Page1。

?至于內置RAM,在Jumper模式下我們只需要關(guān)心其收發(fā)緩存部分。偏移地址從0x4000開(kāi)始至0x7FFF的16KB RAM區域構成8019的收發(fā)緩存,它以256字節為單位劃分為64頁(yè)(Page),頁(yè)地址為0x40 ~ 0x7F,發(fā)送和接收緩存所分配的頁(yè)數可以由驅動(dòng)程序設定。一種比較常見(jiàn)的分配方式為[0x40,0x4C)用作發(fā)送,[0x4C,0x80)用作接收,這也是本例所采用的配置。

3>接收和發(fā)送數據包是通過(guò)DMA讀寫(xiě)RTL8019AS內部的16K B RAM,它是雙端口的RAM,即有兩套總線(xiàn)連接到該RAM。

如圖2:

?一套總線(xiàn)是RTL8019AS讀或寫(xiě)該RAM,即本地DMA;

?另一套總線(xiàn)是LPC2210讀或寫(xiě)該RAM,即遠程DMA。

4>本地DMA大部分工作由RTL8019AS自動(dòng)完成,驅動(dòng)程序只需要在初始化RTL8019AS時(shí)設置緩沖環(huán)的大小(最大不超過(guò)64KB),即寄存器PSTRT和PSTOP的值,同時(shí)使PSTART=BNRY(邊界寄存器)=CURR+1(當前頁(yè)面指針寄存器)。

5>遠程DMA操作由外部微處理器完成,RTL8019AS有遠程讀(Remote Read),遠程寫(xiě)(Remote Write)和包發(fā)送(Send Packet)三種工作模式,由命令寄存器(CR)中的RD0,RD1和RD2位控制。其中遠程讀和遠程寫(xiě)的工作相似,都是先賦值遠程DMA的起始地址寄存器(RSAR0,RSAR1)和遠程DMA字節計數器(RBCR0,RBCR1),然后在RTL8019AS的遠程DMA端口讀寫(xiě)即可。包發(fā)送操作用于數據發(fā)送,只需要發(fā)送一個(gè)包發(fā)送命令,就可以在RTL8019AS的遠程DMA端口讀取RAM中接收的數據。當執行這個(gè)指令時(shí),RTL8019AS就自動(dòng)設置了起始地址寄存器和字節計數器,邊界寄存器(BNRY)指向下一個(gè)數據幀。

------------------------------------------------------------------------------------

關(guān)于具體的寄存器功能請大家查看RTL8019AS的數據手冊。

三以太網(wǎng)驅動(dòng)系統設計說(shuō)明

3.1以太網(wǎng)驅動(dòng)系統概述

以太網(wǎng)RTL8019AS驅動(dòng)系統的內容是完成對芯片初始化,接收數據包和發(fā)送數據包模塊的編寫(xiě)。發(fā)送數據包時(shí),驅動(dòng)程序把要發(fā)送的數據按指定格式寫(xiě)入芯片并啟動(dòng)發(fā)送命令,RTL8019AS會(huì )自動(dòng)把數據轉換成物理幀格式在物理信道上傳輸。反之,當接收數據報時(shí),RTL8019AS收到物理信號后將其還原成數據,按指定格式存放在RAM中,以便主機程序取用。驅動(dòng)程序通過(guò)控制RTL8019AS內部寄存器以及DMA端口,來(lái)實(shí)現芯片初始化,接收數據報和發(fā)送數據報的任務(wù)。

3.2 RTL8019AS以太網(wǎng)驅動(dòng)系統的組成

?芯片初始化模塊:初始化模塊是針對以太網(wǎng)RT8019AS進(jìn)行的初始化設置,使其能正常芯片復位,設置芯片寄存器及啟動(dòng)芯片。

?發(fā)送數據報模塊:所有的數據發(fā)送都要通過(guò)該模塊發(fā)送

?接收數據報模塊:查詢(xún)是否有新數據包并接收進(jìn)緩沖區

?寫(xiě)數據子模塊:把數據寫(xiě)入RTL8019AS芯片中

?讀數據子模塊:從RTL8019AS中把數據讀出

?設置芯片物理地址子模塊:將物理地址寫(xiě)入RTL8019AS(PAR0~PAR5)寄存器中。

?頁(yè)面切換模塊:頁(yè)面切換功能,可選擇0,1,2三頁(yè),第四頁(yè)作為芯片保留。

四.芯片初始化模塊

4.1芯片初始化模塊的功能

初始化LPC2210與設備相關(guān)的控制管腳和初始化RTL8019AS相關(guān)控制寄存器

4.2芯片初始化模塊的組成

1>選擇引腳:

使用P0.8引腳控制RTL8019AS芯片復位時(shí),要將P0.8設置為輸出模式

2>復位芯片

?設置P0.8為輸出高電平,控制RTL8019AS硬件復位

?向RTL8019AS的0x1f號寄存器寫(xiě)入00使RTL8019AS軟件復位。

3>使RTL8019AS芯片停止

配置命令寄存器(CR):配置CR寄存中的RD2,RD1,RD0三位為100使DMA為停止模式,配置STA,STP位為01。使8019芯片停止,為進(jìn)行寄存器設置做準備。

4>設置RTL8019寄存器

設置RTL8019AS芯片寄存器,主要完成對以下幾個(gè)寄存器的初始化:

?RBCR0,RBCR1:配置遠程DMA字節計數寄存器

?PSTART:配置接收緩沖區的起始頁(yè)地址

?PSTOP:配置接收緩沖區的結束頁(yè)的地址

?TPSR:配置發(fā)送緩沖區的起始地址

?BNRY:配置邊界寄存器(讀指針)

?CURR:配置當前的接收結束頁(yè)地址(寫(xiě)指針)

1)設置遠程DMA字節計數寄存器(RBCR0,RBCR1):初始化遠程DMA字節計數器為0

2)設置接收配置寄存器(RCR)和傳輸配置寄存器(TCR)

在配置寄存器時(shí),要與外部網(wǎng)絡(luò )斷開(kāi)(因此設置接收配置寄存器的MON位,和傳輸配置寄存器的LOOPBACK,與外網(wǎng)斷開(kāi))。

3)設置數據配置寄存器(DCR):設置FT1,FT0位為10進(jìn)行FIFO的選擇;設置ARM位為0,使其不發(fā)送命令包;設置LS位為1,使其為正常模式;LAS位必須為0;設置BOS位為1,使其為大端格式(即高字節在低地址中);設置WTS位為1,使其為字長(cháng)度的DMA傳送(16字節DMA傳送)

4)初始化接收緩沖區容量為:0x4c~0x7f(PSTART=0X4C,PSTOP=0x80)共52個(gè)頁(yè)。

?設置頁(yè)面起始寄存器(PSTART):初始化頁(yè)面接收緩沖環(huán)的起始地址為0x4c。

?設置頁(yè)面終止寄存器(PSTOP):初始化頁(yè)面接收緩沖環(huán)的結束地址為0X80。

5)初始化發(fā)送緩沖區容量為:0x40~0x4b(TPSR=0X40,BNRY=0X4C)共12頁(yè),可存儲兩個(gè)最大以太網(wǎng)數據包。(每一頁(yè)256字節,256*12=3072,而一個(gè)以太網(wǎng)最大數據包為1518)。

?設置頁(yè)面邊界寄存器(BNRY讀指針):初始化頁(yè)面最后一次頁(yè)面接收緩沖環(huán)的地址為0X4C。

?設置頁(yè)面傳輸起始寄存器(TPSR):初始化傳輸包的頁(yè)面開(kāi)始地址為0x40。

6)初始化中斷狀態(tài)寄存器和中斷屏蔽寄存器。

?設置中斷狀態(tài)寄存器(ISR):清除所有中斷標志位。

?設置中斷允許寄存器(IMR):初始化使能OVW(溢出中斷)和PRX(接收包無(wú)錯誤中斷).

7)設置當前頁(yè)面寄存器(CURR):設置當前頁(yè)面地址為0x4d

注:該寄存器指出首先接收緩沖器頁(yè)面地址。這個(gè)寄存器用來(lái)對數據包的接收(為寫(xiě)頁(yè)指針)。

8)設置組播地址寄存器(MR0~MR7):初始化組播地址為0。

說(shuō)明:組播地址寄存器用于提供為CRC邏輯提供,組播地址的過(guò)濾位。

9)設置芯片物理地址:

調用寫(xiě)數據子模塊將實(shí)際地址寫(xiě)入MAC地址寄存器(PAR0~PAR05)中。

這些寄存器用于記錄本以太網(wǎng)節點(diǎn)的MAC地址,并用于對比接收包的目標地址是否一致而決定接收還是放棄。

10)設置傳輸配置寄存器(TCR)和接收配置寄存器(RCR)為正常模式,與外部網(wǎng)絡(luò )連接

5>設置芯片啟動(dòng)

6>配置中斷狀態(tài)寄存器(ISR)清除所有中斷標志位

4.3芯片初始化模塊的接口

芯片初始化模塊調用了寫(xiě)數據子模塊,頁(yè)面切換子模塊和設置芯片物理地址子模塊

?設置芯片物理地址子模塊:將物理地址寫(xiě)入RTL8019AS芯片中。

?寫(xiě)數據子模塊:將數據寫(xiě)入RTL8019AS芯片中

?頁(yè)面切換子模塊:可選擇Page0,Page1,Page3三個(gè)頁(yè)面。

4.3芯片初始化模塊程序

/****************************Copyright(c)********************

**西安郵電學(xué)院

**graduate school

**XNMS實(shí)驗室

**Author:冀博

**Time:2011年2月21日

**http://blog.csdn.net/tigerjb

**

****************************Copyright(c)********************/

/**********************************************************

**函數原型:voidInitNic()

**入口參數:無(wú)

**返回值:無(wú)

**說(shuō)明:對芯片的工作寄存器進(jìn)行設置,各個(gè)寄存器的用法可參考文檔和

**絡(luò )芯片的數據手冊

**********************************************************/

void InitNic(uint8 num)

{

uint8i;

uint8j;

//使P0.8引腳為輸出

IODIR=IODIR|NET_RST;

//向P0.8引腳寫(xiě)1,硬件復位

IOCLR=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

IOSET=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

IOCLR=NET_RST;

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

//軟件復位

WriteToNet(0x1f,0x00);

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

//使芯片處于停止模式,這時(shí)進(jìn)行寄存器設置

WriteToNet(0x00,0x21);

//延時(shí)10毫秒,確保芯片進(jìn)入停止模式

for(i=0;i<200;i++)

{

for(j=0;j<200;j++);

}

page(0);

//設置遠程DMA起始地址寄存器(RBCR0,RBCR1)為0

WriteToNet(0x0a,0x00);

WriteToNet(0x0b,0x00);

//設置接收配置寄存器(RCR)和傳輸寄存器(TCR)

WriteToNet(0x0c, 0xe0);

WriteToNet(0x0d, 0xe2);

//設置數據配置寄存器DCR

WriteToNet(0x0e,0xcb);

//初始化接受緩沖區容量為0X4C~0X7F(PSTART=0X4C,PSTOP=0X80)

WriteToNet(0x01,0x4c);

WriteToNet(0x02,0x80);

//初始化發(fā)送緩沖區容量為0X40~0x4b(TPSR=0X40,bnry=0x4c)

WriteToNet(0x03,0x4c);

WriteToNet(0x04,0x40);

/*初始化中斷寄存器(ISR和IMR)清除所有中斷標志位,使能OVW和PRX中斷

*/

WriteToNet(0x07,0xff);

WriteToNet(0x0f,0x11);

//初始化當前頁(yè)面寄存器CURR=BNRY+1

page(1);

WriteToNet(0x07,0x4d);

//初始化組播地址寄存器(MR0~MR5)

WriteToNet(0x08,0x00);

WriteToNet(0x09,0x00);

WriteToNet(0x0a,0x00);

WriteToNet(0x0b,0x00);

WriteToNet(0x0c,0x00);

WriteToNet(0x0d,0x00);

WriteToNet(0x0e,0x00);

WriteToNet(0x0f,0x00);

//將物理地址寫(xiě)入MAC(PAR0~PAR5)寄存器中

SetMacID(NetPort[num].My_Mac);

page(0);

/*設置傳輸配置寄存器(TCR)和接收配置寄存器(RCR),將芯片設置成正常模式,跟外部網(wǎng)絡(luò )連接

*/

WriteToNet(0x0c,0xcc);

WriteToNet(0x0d,0xe0);

//啟動(dòng)芯片開(kāi)始工作

WriteToNet(0x00,0x22);

//清除所有中斷標志位

WriteToNet(0x07,0xff);

}



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>