微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于AVR高性能单片机的以太网接口设计

基于AVR高性能单片机的以太网接口设计

时间:05-09 来源:EDN 点击:

2 系统软件实现

2.1 RTL8019AS地址空间与寄存器

RTL8019AS内部的16 KB的RAM用于收发缓冲,地址为Ox4000~0x7FFF,收发缓冲以页为单位,每页256 B,共64页,如果某页没有完全填满数据,则下包数据也不能继续使用该页,只能使用新的页。一般将前12页作为发送缓冲区,分为两个6页的缓冲区(因为一个最大数据包占6页),两个发送缓冲区交替使用,可提高发送效率,后52页作为接收缓冲区。该RAM是双端口的,具有两套总线,一套是RTL8019AS读写该RAM,即本地DMA;另一套是单片机读写该RAM,即远程DMA,要接收和发送数据包就必须对这块RAM进行DMA读写。

RTL8019AS具有32位I/O地址,地址偏移量为00H~1FH,本系统中对应于300H~31FH,其中,00H~0FH为16个寄存器地址,寄存器分为4页,与NE2000兼容的只有前3页,第4页是RTL8019AS自己定义的,对于其他兼容NE2000的芯片无效,所以为了保证驱动程序对所有NE2000兼容的网卡都有效,不要去操作第4页的寄存器。10H~17H为8个远程DMA地址,都可以用来做远程DMA地址,使用其中一个即可,微控制器通过读写数据端口10H~17H实现对缓冲区的访问。18H~1FH共8个地址为复位端口,它们功能一样,使用其中一个即可,用于RTL8019AS的热复位。

2.2 嵌入式TCp/IP实现

TCP/IP协议族是一组不同层次上的多个协议的组合,分为链路层、网络层、传输层和应用层。对于8位单片机来说,由于其处理速度和存储能力的问题,要实现完整的TCP/IP协议栈是比较困难的,因此要根据其特点及自己的需求,对协议进行裁剪,保留其核心部分。该系统只实现了ARP,IP,ICMP,UDP,TCP协议,采用C语言编写。

在链路层上,首先要解决RTL8019AS的驱动问题,驱动程序包括三部分:以太网接口芯片初始化程序、发送数据程序和接收数据程序,它们屏蔽了底层硬件处理细节,同时向上层软件提供与硬件无关的接口。驱动程序将已封装好的待发送数据按指定格式写入芯片并启动发送命令,8019会自动把数据包转换成物理帧格式在信道上传输;反之,8019收到物理信号后将其还原成数据,按指定格式存放在芯片RAM中以便主机程序取用,下面给出部分初始化程序,主要是对一些寄存器进行设置,其中,reg00~regof为宏定义,代表RTL8019AS内地址偏移量为00H~0FH的寄存器地址。

页2的寄存器是只读的,页3的寄存器不是NE2000兼容的,所以均不用设置。首先选择为页O,网卡芯片为停止模式,因为还没有进行初始化,设置0x40~Ox4B为网卡的发送缓冲区,共12页,刚好存储2个最大的以太网数据包;0x4C~0x7F为网卡的接收缓冲区,共52页;刚开始时网卡没有接收到任何数据包,因此BNRY指向第一个接收缓冲区的页0x4C。设置完页O的寄存器后切换为页1,由于设计中没有使用93C46,因此需要在程序中指定芯片的物理地址,写入到PAR寄存器,然后启动芯片开始工作。读指针BN-RY和写指针CURR主要用来控制缓冲区的存取过程,保证能正确读出和写入数据。

单片机负责RTL8019AS的初始化及通过控制RTL8019AS实现网络协议,进行数据的接收和发送等通信任务,主程序按照以太网数据帧分用的思路进行编写,即将单片机作为服务器端,初始化完成后使其处于监听状态。当有数据从RJ45过来时,RTL8019AS在接收和处理完以太网数据帧后传送给单片机,单片机对数据包进行分析,如果是ARP数据包,则程序转入ARP处理程序;如果是IP数据包且IP地址正确,则继续分析若是ICMP包,则调用ICMP处理程序,若是UDP或TCP数据包,则解包后将数据存储或从串口输出。反之,当有数据要发送时,单片机按照各层协议格式将数据打包,送入RTL8019AS的缓存区,由RTL8019AS将数据输出到局域网中,主程序的框架如下:

在嵌入TCP/IP协议后,已经实现了以太网的接入,但要实现远程控制,还需要实现应用层协议,这需要网络层和传输层的支持,嵌入式TCP/IP协议在应用层上要求简单,本系统实现了一个HTTP协议。由于单片机的资源有限,采用静态网页访问的形式,使用HT-ML语言来编写,网页代码存储在Mega64的片内FLASH中。嵌入式系统把要传输的数据、参数等存入网页的相关位置,当有客户端请求连接时,这些数据信息通过HTTP协议沿TCP连接发送至浏览器,这样就可以在远端PC机的浏览器中访问存储在系统中的网页,从而实现远程访问及控制。

3 结 语

介绍了一种利用AVR单片机实现以太网接口电路的方法,硬件电路少,结构简单,使用方便。考虑到单片机的资源有限,只实现了与需要有关的部分协议,根据实际需求做适当的修改和完善就可应用于诸如远程抄表、信息家电的远程控制、智能小区等实时性要求不高的场合,为了提高数据传输速度和进行复杂的TCP/IP处理,可以扩展32 KB的外部RAM来提高单片机的数据吞吐量,同时外部RAM也可用作串行口的输入输出缓冲。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top