基于ARM LPC2210的以太网RTL8019AS驱动系统设计

发布者:素雅之韵最新更新时间:2016-08-03 来源: eefocus关键字:ARM  LPC2210  以太网  RTL8019AS  驱动系统 手机看文章 扫描二维码
随时随地手机看文章
Author             :tiger-john

WebSite            :blog.csdn.net/tigerjb

Email               :jibo.tiger@gmail.com

开发环境         硬件环境:LPC2200

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

                            编译环境:ADS1.2

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

Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,

但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人

联系或留言给我。3Q

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

 一.            系统硬件概述

 

 

 1.1.ARM LPC2210芯片简介

LPC2210是Philips公司推出的微处理器,带有16 KBRAM,76个通用I/O口,12个独立外部中断引脚,集成有8通道的10位A/D,能够基于芯片设计复杂的系统。

 1.2. RTL8019AS芯片简介

?  RTL8019AS是台湾Realtek半导体公司生产的以太网控制器,其性能包括:支持EthernetII和IEEE802.3标准;支持8/16位数据总线;内置16 KWord的SRAM;全双工,收发同时达到10 Mb/s;支持BNC,AUI,UTP介质。RTLS019AS可提供100脚的TQFP封装,减少了PCB面积,更适合于嵌入式系统。

1.3.HR901170A芯片简介

HR901170A是汉仁电子有限公司生产的RJ45接口连接器(带网络变压器/滤波器),该连接器满足IEEES02.3和IEEE902.3ab标准,能够较好地抑制电磁干扰。通过HR901170A系统就可以连接到以太网上。

注:RTL8019AS与网络介质之间的连接由Rj45接头HR901170A完成。

二       RTL8019AS芯片工作原理

2.1RTL8019AS寄存器及其映射方式

?  RTL8019AS寄存器采用内存映射的方式。映射地址根据具体的硬件连接方式不同而不同。在LPC2210开发板中RTL8019AS在CPU的存储空间上映射的基地址为0X83400000。

?  LPC2210 通过16 位DMA 方式实现对RTL8019AS 双口RAM的访问,另外使用P0.8控制RTL8019AS芯片复位,使用以太网接口时必须将P0.8设置为输出模式,并且将跳线器JP8_NET_RST短接。RTL8019AS芯片中的中断输出与P0.9(EINT3)相连,当需要使用RTL8019AS中断时必须将P0.9设置为EINT3功能,并且将跳线器JP8_NET_INT短接。

2.2RTL8019AS内部结构及工作原理

 

1>RTL8019AS 芯片内部具有一个16Kbytes 的双口RAM作为数据FIFO, 它从逻辑上可划分为64 个256 字节的页,每一个页面包括16个寄存器,每个寄存器均是8位。在不同的页面下,同一个端口对应不同的寄存器。

2>一般将RAM的前12页(即0X4000~0X4bff)存储区作为发送缓冲区;后52页(即0x4c00~0x7fff)存储区作为接收缓冲区;页的地址就是地址的高8位(即0x40~0x4b;0x4c~0x7f);第0页叫Prom页,只有32字节,地址为0x000~0x001f,用于存储以太网物理地址。

说明:

?  寄存器和内置RAM是网卡功能实现的载体,驱动程序也是通过对它们的操作完成CPU所指令的任务。驱动程序所涉及的寄存器主要在Page0和Page1。

?  至于内置RAM,在Jumper模式下我们只需要关心其收发缓存部分。偏移地址从0x4000开始至0x7FFF的16KB RAM区域构成8019的收发缓存,它以256字节为单位划分为64页(Page),页地址为0x40 ~ 0x7F,发送和接收缓存所分配的页数可以由驱动程序设定。一种比较常见的分配方式为[0x40,0x4C)用作发送,[0x4C,0x80)用作接收,这也是本例所采用的配置。

3>接收和发送数据包是通过DMA读写RTL8019AS内部的16K B RAM,它是双端口的RAM,即有两套总线连接到该RAM。

如图2:

?  一套总线是RTL8019AS读或写该RAM,即本地DMA;

?  另一套总线是LPC2210读或写该RAM,即远程DMA。

4>本地DMA大部分工作由RTL8019AS自动完成,驱动程序只需要在初始化RTL8019AS时设置缓冲环的大小(最大不超过64KB),即寄存器PSTRT和PSTOP的值,同时使PSTART=BNRY(边界寄存器)=CURR+1(当前页面指针寄存器)。

5>远程DMA操作由外部微处理器完成,RTL8019AS有远程读(Remote Read),远程写(Remote Write)和包发送(Send Packet)三种工作模式,由命令寄存器(CR)中的RD0,RD1和RD2位控制。其中远程读和远程写的工作相似,都是先赋值远程DMA的起始地址寄存器(RSAR0,RSAR1)和远程DMA字节计数器(RBCR0,RBCR1),然后在RTL8019AS的远程DMA端口读写即可。包发送操作用于数据发送,只需要发送一个包发送命令,就可以在RTL8019AS的远程DMA端口读取RAM中接收的数据。当执行这个指令时,RTL8019AS就自动设置了起始地址寄存器和字节计数器,边界寄存器(BNRY)指向下一个数据帧。

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

关于具体的寄存器功能请大家查看RTL8019AS的数据手册

三    以太网驱动系统设计说明

3.1以太网驱动系统概述

 

以太网RTL8019AS驱动系统的内容是完成对芯片初始化,接收数据包和发送数据包模块的编写。发送数据包时,驱动程序把要发送的数据按指定格式写入芯片并启动发送命令,RTL8019AS会自动把数据转换成物理帧格式在物理信道上传输。反之,当接收数据报时,RTL8019AS收到物理信号后将其还原成数据,按指定格式存放在RAM中,以便主机程序取用。驱动程序通过控制RTL8019AS内部寄存器以及DMA端口,来实现芯片初始化,接收数据报和发送数据报的任务。

3.2 RTL8019AS以太网驱动系统的组成

 

?  芯片初始化模块:初始化模块是针对以太网RT8019AS进行的初始化设置,使其能正常芯片复位,设置芯片寄存器及启动芯片。

?  发送数据报模块:所有的数据发送都要通过该模块发送

?  接收数据报模块:查询是否有新数据包并接收进缓冲区

?  写数据子模块:把数据写入RTL8019AS芯片中

?  读数据子模块: 从RTL8019AS中把数据读出

?  设置芯片物理地址子模块: 将物理地址写入RTL8019AS(PAR0~PAR5)寄存器中。

?  页面切换模块:页面切换功能,可选择0,1,2三页,第四页作为芯片保留。

四.            芯片初始化模块

4.1芯片初始化模块的功能

初始化LPC2210 与设备相关的控制管脚和初始化RTL8019AS 相关控制寄存器

4.2 芯片初始化模块的组成

 

 

 

1>  选择引脚:

使用P0.8引脚控制RTL8019AS芯片复位时,要将P0.8设置为输出模式

2>  复位芯片

?  设置P0.8为输出高电平,控制RTL8019AS硬件复位

?  向RTL8019AS的0x1f号寄存器写入00使RTL8019AS软件复位。

3>  使RTL8019AS芯片停止

配置命令寄存器(CR):配置CR寄存中的RD2,RD1,RD0三位为100使DMA为停止模式,配置STA,STP位为01。使8019芯片停止,为进行寄存器设置做准备。

4>  设置RTL8019寄存器

设置RTL8019AS芯片寄存器,主要完成对以下几个寄存器的初始化:

?  RBCR0,RBCR1:配置远程DMA字节计数寄存器

?  PSTART:配置接收缓冲区的起始页地址

?  PSTOP:配置接收缓冲区的结束页的地址

?  TPSR:配置发送缓冲区的起始地址

?  BNRY:配置边界寄存器(读指针)

?  CURR:配置当前的接收结束页地址(写指针)

1)设置远程DMA字节计数寄存器(RBCR0,RBCR1):初始化远程DMA字节计数器为0

2)设置接收配置寄存器(RCR)和传输配置寄存器(TCR)

 

在配置寄存器时,要与外部网络断开(因此设置接收配置寄存器的MON位,和传输配置寄存器的LOOPBACK,与外网断开)。

3)设置数据配置寄存器(DCR):设置FT1,FT0位为10进行FIFO的选择;设置ARM位为0,使其不发送命令包;设置LS位为1,使其为正常模式;LAS位必须为0;设置BOS位为1,使其为大端格式(即高字节在低地址中);设置WTS位为1,使其为字长度的DMA传送(16字节DMA传送)

4)初始化接收缓冲区容量为:0x4c~0x7f(PSTART=0X4C,PSTOP=0x80)共52个页。

?  设置页面起始寄存器(PSTART):初始化页面接收缓冲环的起始地址为0x4c。

?  设置页面终止寄存器(PSTOP):初始化页面接收缓冲环的结束地址为0X80。

5)初始化发送缓冲区容量为:0x40~0x4b(TPSR=0X40,BNRY=0X4C)共12页,可存储两个最大以太网数据包。(每一页256字节,256*12=3072,而一个以太网最大数据包为1518)。

?  设置页面边界寄存器(BNRY读指针):初始化页面最后一次页面接收缓冲环的地址为0X4C。

?  设置页面传输起始寄存器(TPSR):初始化传输包的页面开始地址为0x40。

6)初始化中断状态寄存器和中断屏蔽寄存器。

?  设置中断状态寄存器(ISR):清除所有中断标志位。

?  设置中断允许寄存器(IMR):初始化使能OVW(溢出中断)和PRX(接收包无错误中断).

7)设置当前页面寄存器(CURR): 设置当前页面地址为0x4d

注:该寄存器指出首先接收缓冲器页面地址。这个寄存器用来对数据包的接收(为写页指针)。

8)设置组播地址寄存器(MR0~MR7):初始化组播地址为0。

说明:组播地址寄存器用于提供为CRC逻辑提供,组播地址的过滤位。

9)设置芯片物理地址:

调用写数据子模块将实际地址写入MAC地址寄存器(PAR0~PAR05)中。

这些寄存器用于记录本以太网节点的MAC地址,并用于对比接收包的目标地址是否一致而决定接收还是放弃。

10)设置传输配置寄存器(TCR)和接收配置寄存器(RCR)为正常模式,与外部网络连接

5>  设置芯片启动

6>  配置中断状态寄存器(ISR)清除所有中断标志位

4.3 芯片初始化模块的接口

芯片初始化模块调用了写数据子模块,页面切换子模块和设置芯片物理地址子模块

?  设置芯片物理地址子模块: 将物理地址写入RTL8019AS芯片中。

?  写数据子模块:将数据写入RTL8019AS芯片中

?  页面切换子模块:可选择Page0,Page1,Page3三个页面。

4.3 芯片初始化模块程序

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

**                            西安邮电学院

**                            graduate school

**                                                                 XNMS实验室

**                            Author:冀博

**                                                                 Time:2011年2月21日

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

**

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

 

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

**函数原型        :void        InitNic()

**入口参数           :无

**返 回 值           :无           

**说    明            :对芯片的工作寄存器进行设置,各个寄存器的用法可参考文档和

**                       络芯片的数据手册

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

void InitNic(uint8 num) 

{

      

       uint8  i;

       uint8  j;

       //使P0.8引脚为输出

       IODIR=IODIR|NET_RST;

       //向P0.8引脚写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++);

       }

      

       //使芯片处于停止模式,这时进行寄存器设置

       WriteToNet(0x00,0x21); 

       //延时10毫秒,确保芯片进入停止模式

       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);         

       //初始化发送缓冲区容量为0X40~0x4b(TPSR=0X40,bnry=0x4c)

       WriteToNet(0x03,0x4c);     

       WriteToNet(0x04,0x40); 

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

*/

       WriteToNet(0x07,0xff); 

       WriteToNet(0x0f,0x11); 

       //初始化当前页面寄存器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);

    //将物理地址写入MAC(PAR0~PAR5)寄存器中

       SetMacID(NetPort[num].My_Mac); 

       page(0);

/*设置传输配置寄存器(TCR)和接收配置寄存器(RCR),将芯片设置成正常模式,跟外部网络连接

*/

       WriteToNet(0x0c,0xcc); 

       WriteToNet(0x0d,0xe0);

       //启动芯片开始工作

       WriteToNet(0x00,0x22); 

       //清除所有中断标志位

       WriteToNet(0x07,0xff);          

}

关键字:ARM  LPC2210  以太网  RTL8019AS  驱动系统 引用地址:基于ARM LPC2210的以太网RTL8019AS驱动系统设计

上一篇:ARM-Linux驱动相关头文件知识点
下一篇:STM32启动过程相关代码分析

推荐阅读最新更新时间:2024-03-16 15:03

智能家居远程监控系统的设计及实现
    引言     随着国民经济的快速发展和人们生活水平的不断提高,人们对居住房子的舒适性及安全性要求也提升到了更高的档次,同时计算机技术、网络和信息技术也在不断发展,这使得家庭智能系统的远程监控成为一种现实。本文设计的智能家居远程监控系统实现了家用电器等的智能化管理,对家庭环境的实时监视和自动报警功能。     1 智能家居系统的总体结构     智能家居远程监控系统的核心部分是一个嵌入式Web服务器,系统集有线和无线Web服务器于一体,用户可以利用办公室的PC登录家中的Web服务器,在通过用户名和密码验证后,便可以查看并控制家用电器。系统结构框图如图1所示。     2 系统硬件设计     本系统硬
[网络通信]
ARM处理器7种工作模式
一、ARM处理器7种工作模式(特权模式 特权模式异常模式) 用户模式(USR):正常程序执行模式,不能直接切换到其他模式 系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权 快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式 中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式 管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发) 中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处 未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响
[单片机]
内核汇编基础——ARM汇编指令详解
ARM 的编程模式和七种模式 【文章福利 】小编推荐自己的Linux内核源码交流群:【点击链接加入群聊 869634926 】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前50名可进群领取,并额外赠送一份价值798的内核资料包(含视频教程、电子书、实战项目及代码)! 点击下方链接即可免费领取内核相关学习资料哦 学习直通车: Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 内核资料领取: Linux内核源码技术学习路线+视频教程内核源码 基本设定 架构 (32位) 约定 Byte(字节):8bits Halfword(半字) :16
[单片机]
ARM9 Bootloader的启动流程
Bootloader启动大多数都分为两个阶段.第一个阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段的任务有: 1、基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据cache等)。 2、为第二阶段准备RAM空间。 3、如果是从某个固态存储煤质中,则复制Bootloader的第二阶段代码到RAM。 4、设置堆栈。 5、跳转到第二阶段的c程序入口点。 特别注意的地方: 在第一阶段中为什么要关闭cache?通常使用cache以及写缓冲是为了提高系统性能。但由于cache的使用可能改变访问主存的数量、类型和时间,因此Bootloader通常是不需要的
[单片机]
用Ax88796实现SA1110的以太网接口
摘要:讨论嵌入式微处理器SA1110与以太网控制器Ax88796在实际应用中的硬件连接问题;给出软件设计方面的一些注意事项,为SA1110的网络应用提供一种参考。 关键词:嵌入式 SA1110 Ax88796 以太网 CPU MII   Intel公司的StrongARM SA1110是一款主要面向嵌入式应用的高性能32位微处理器,目前已经被广泛应用在PDA等手持设备上。SA1110最高主频可达206 MHz,具有内存管理单元(MMU)和大容量的指令/数据高速缓存(16 KB/8 KB),兼容SDRAM、SMROM等多种存储设备,并带有LCD和PCMCIA控制器。 1 Ax88796简介   Ax88796是台湾Asix
[嵌入式]
基于ARM的车辆检测系统控制单元设计
摘 要:本文介绍了利用ARM7内核微处理器LPC2114设计的高速公路车辆检测系统控制单元,着重分析了大容量Flash存储单元的设计和ARM开发相关注意事项,给出了系统原理框图、单元电路设计和软件设计思想。 关键词:ARM微处理器;LPC2114;Flash存储;车辆检测系统 引言 由于交通需求的不断增加,有越来越多的环形感应线圈检测器用于交通检测。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的。通
[传感技术]
基于ARM9处理器芯片S3C2440的服装舒适性检测系统
  一般来说,当人体皮肤温湿度处于热湿舒适性状态时,人们的智力、体力(手工)或感觉方面的表现均处于高水平状态,另外热湿舒适性是人们处于最佳健康状态的必要条件。通过对人体不同状态下不同部位的服装压力、温度湿度的测量,可以得到人体着装后的不同部位的压力、温湿度的分布状况。对测量结果进行分析可以为服装压力、热湿舒适性的客观评价提供量化指标,为服装的款式与结构设计提供科学依据。近年来越来越多的研究人员开展了有关服装功能测试的研究,并且取得了较多进展,但是相关的服装功能测试仪器的研发远远滞后于时代的需要。本文设计了基于ARM技术的便携式的服装压力、温湿度测量系统。   1 服装舒适性检测系统的构成   服装舒适性检测系统由数据采集模块、
[单片机]
基于<font color='red'>ARM</font>9处理器芯片S3C2440的服装舒适性检测<font color='red'>系统</font>
一种基于ARM的IEEE802.11MAC协议IP核设计
引言 无线局域网被认为是下一代IT产业发展的是大推动之一,被IT业赋予了极大的希望。无线局域网802.11系列标准的MAC协议是一样的,只是在物理层上有差异,因此对802.11MAC协议的开发,不论是在802.11b流行的今天,还是802.11g可能会成为主流的将来,都是很有意义的。当然,ARM以其先进的体系结构已经成为嵌入式市场的RISC标准,因此基于ARM的IEEE802.11MAC协议的开发是很有现实意义的。 我们的开发流程如图1所示。 PC软件开发是指脱离硬件的嵌入式软件开发阶段。此阶段可以在各种IDE环境下进行开发,并进行软仿真来验证软件的逻辑正确性。然后将开发出来的PC软件结合硬件所需要的硬件相关代码向硬件平台进行
[单片机]
一种基于<font color='red'>ARM</font>的IEEE802.11MAC协议IP核设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved