由于操作过于频繁,请点击下方按钮进行验证!

用单片机实现以太网卡通讯设计

  1引言 

  随着网络技术与计算机技术的发展和普及,以及电子设备日趋网络化的背景下,用单片机控制以太网卡进行数据通讯成为当前的主要发展趋势。通过单片机控制以太网卡编程可以实现局域网内任意两个终端的通讯。本文所介绍的太网卡设计主要应用于工业现场控制领域的数据采集和数据传输方面。下面简要介绍以51为核心的单片机和RTL8019AS以太网控制芯片所设计的网卡的硬件电路结构及软件程序设计。

  2系统硬件结构设计

1 系统硬件框图

  系统的硬件电路结构如图1所示。在该系统中主要包括MCU单元,串口通讯单元,EEPROM单元和网卡芯片单元等。

  我们采用AT89C51单片机作为主处理器控制以太网卡芯片来实现和以太网的数据交换。由于单片机内存资源小,处理速度慢,则需要对单片机外扩RAM。这样,使用外扩RAM可以提高单片机的数据传输速度,以及处理复杂的TCP/IP协议。以太网数据包最大可以达到1500多字节,89C51单片机无法存储这么大的包,只有放到外部的RAM进行存储。同时外部RAM也用作串行口的输入输出缓冲,以使单片机可以高速的传输数据速度。

  在系统中还使用x5045作为外部扩展的EEPROM,用来存储IP地址、物理地址以及网卡的其他配置信息。同时x5045还具有电压监控,看门狗定时器,上电复位三种功能,使用x5045监控系统的运行过程,当系统不稳定的时候可以进行有效的复位。

  由于单片机的高低电平和串行口的高低电平不一样,二者之间需要进行电平转换,在本设计中使用MAX232作为串口电平转换芯片,负责单片机与PC机的电平转换。数据可以从串口输入到单片机,单片机在把数据送到8019传出去。反之,从8019接收到的数据通过单片机可以从串口发出去。

  网卡芯片采用的是Realtek公司生产的RTL8019AS以太网卡控制器,价格低廉,和NE2000兼容。RTL8019AS符合ETHERNET II和802.3标准;内置16K SRAM,用于收发缓冲,降低对主处理器的要求;支持8/16位数据总线,8个中断申请,16个I/O基地址选择等许多特性;在本设计中选用8位数据总线,选择8位数据总线的方法是在RTL8019AS的IOCS16B引脚接一个27K的下拉电阻。

  由于网卡控制器与以太网是不能直接相连的,中间要通过网络隔离变压器才能连接到以太网上。网络隔离变压器的作用是隔直通交,避免双绞线上的直流电平干扰芯片(RTL8019AS)的工作点;同时,利用变压器自身的通频带限制高频的干扰。

  8019提供3种配置I/O端口和中断的模式:第一种为跳线模式(Jumper),RTL8019AS的I/O端口和中断由跳线引脚决定;第二种为即插即用模式(Plug and Play,PnP),由软件自动配置;第三种为免跳线模式(Jumperless),RTL8019AS的I/O端口和中断由9346(EEPROM)里的配置信息决定。在本电路中,没有使用9346而是使用x5045作为闪盘存储MAC地址和其他配置信息。PnP模式主要使用在PC机中。所以,使用跳线模式来选择I/O端口和中断。RTL8019AS第65引脚JP接高电平(直接接到VDD或通过一个10kΩ的电阻上拉),8019工作在跳线模式。I/O端口基址选为300H,中断使用IRQ2/9引脚。

  当系统上电复位后,在RSTDRV下降沿,8019AS读入各个跳线引脚的状态,写入到系统配置寄存器中,作为系统默认的初始配置。

  3 系统软件实现

  以太网通信软件的设计包括以太网卡控制器的驱动程序设计和上层协议软件设计。驱动程序设计有网卡芯片初始化和收发数据包程序。上层软件主要是实现TCP/IP协议,由于单片机自身资源有限,它的存储容量、处理速度和总线宽度等都不能像PC机那样采用标准的TCP/IP协议,但可以根据系统的特点和功能,将精简的TCP/IP协议嵌入到单片机里。

  (1)网卡初始化和收发数据包程序设计

  首先对8019AS进行复位,当系统复位完成后,要对网卡的工作参数进行设置,即对网卡初始化,网卡的工作参数可通过对RTL8019AS内部寄存器设置。RTL8019AS内部寄存器有4页,和NE2000兼容的有三页,第4页不用。页选择由CR寄存器的PS1,PS0位确定。在0页寄存器中可以设置接收、发送状态配置以及发送缓存区的起始页与接收缓存区起、止页地址等寄存器;在1页寄存器中可以设置以太网接口的MAC地址和组播地址。

  RTL8019AS内部由两块RAM区。一块16K字节,地址为0x4000~0x7fff;RAM按页存储,每256字节为一页。将RAM的前12页(即0x4000~0x4bff)存储区作为发送缓冲区;后52页(即0x4c00 ~ 0x7fff)存储区作为接收缓冲区,用来存放接收的以太网帧。另一块RAM只有32字节,地址为0x0000~0x001f,用于存储以太网物理地址。

  接收和发送数据包都必须通过DMA读写网卡内部的16K RAM,网卡的16K RAM是一个双端口RAM,所谓双端口就是有两套总线连接到该RAM上,一套总线是单片机读写网卡上的RAM,即远程DMA;另一套总线是网卡控制器读写网上的RAM,即本地DMA。

  接收数据是通过本地DMA从网卡接口接收,RTL8019AS对接收到的数据包通过MAC比较,CRC校验,由FIFO存到接受缓冲区,收满一帧后以中断或者寄存器标志方式通知主处理器,主处理器通过远程DMA将缓冲区的数据读到自己的内存中进行处理。

  数据包的发送过程包括三个步骤:主处理器将数据包按照RTL8019AS发送数据帧格式进行封装;封装完之后通过远程DMA通道将数据包送到RTL8019AS的发送缓冲区;然后通过本地DMA将数据送到FIFO,通过设置寄存器CR启动发送。RTL8019AS完成上一帧的发送,在开始下一帧的发送。

  (2)上层软件设计

  在本系统设计中,TCP/IP协议软件首先在网络接口层实现对以太网帧的打包和解析工作。在以太网帧中,将数据包分为ARP包、IP包。ARP包分为ARP请求和APR应答,以实现IP地址与MAC地址的动态绑定。IP包可解析为TCP包、UDP包和ICMP包,TCP包用于可靠的有连接的数据传输,系统与外部数据信息的交换都通过TCP协议进行传输;UDP包用于无连接的数据报传输,对一个以太网帧的解析过程如图4所示。

图2  以太网帧解析过程

  4结束语

  该设计真正实现了单片机系统直接与Internet的连接。可以使PC机远程访问单片机系统,也可以使单片机系统将有用的信息发送到远端的PC机或其他终端上,提高了单片机与互联网之间的信息共享。在本设计中存在主要不足之处在于单片机处理速度较慢,因此只能应用于对数据传输速度要求不太高的场合,提高单片机传输数据的速度有待于进一步的研究。

  参考文献:

  [ 1 ]  Richard Stevens W  TCP/IP详解 卷1:协议. 范建华等译. 机械工业出版社,2000

  [ 2 ]  胡汉才.  单片机原理极其接口技术  清华大学出版社,1996。

  [ 3 ]  RTL8019AS datasheet.  (暂不可见).

  [ 4 ]  老古网站   (暂不可见)

 


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@mmsonline.com.cn。

网友评论 匿名:

分享到