基于RTL8019AS单片机在以太网通信中的应用

2014-04-22 06:31汪文涛巨永龙施良伟
科技视界 2014年24期
关键词:精简以太网数据包

汪文涛 徐 贵 巨永龙 施良伟 汤 超

(安徽工程大学电气工程学院,安徽 芜湖 241000)

0 引言

随着网络技术的迅速发展,网络用户呈指数增长,在使用计算机进行网络连互的同时,小至各类家电、仪器仪表设备大至工业生产过程中数据采集、控制设备都在逐步趋向网络化。网络数据传输技术具有传输距离远、传输速率高、信息共享程度高等优点,因此对嵌入式设备增加网络功能有着深远的意义。

目前在工业控制领域底层的仪器仪表、各类传感器的参数等数据几乎都是通过现场总线的方式进行上传,但是现场总线的协议并不是统一的,故而在生产过程中带来极大的不便。由于TCP/IP协议在行业内已有统一的标准,故而利用嵌入式芯片内嵌TCP/IP精简协议与以太网接口芯片RTL8019AS协同工作便能很好地解决这个问题。这种方法的显著优点就是成本低、实现简单。可以说通过以太网进行通信是工业控制领域一大趋势。

本文以远程数据传输和控制指令传输为应用背景,设计了一套基于嵌入式系统的以太网通信模块。

1 系统简介

本系统采用的核心嵌入式控制芯片是C8051F020,该单片机使用美国Cygnal公司的CIP-51微控制器内核。它采用PQFP-100的封装形式,内部集成了ADC、DAC、PCA、模拟比较器以及多种节电休眠和停机方式,工作频率高达25MHz。

以太网接口芯片是采用采用RealTek公司生产的RTL8019AS,它符合EthernetII与IEEE802.3标准;全双工,收发可同时进行,内置16KB的SRAM,用于收发缓冲,降低了对处理器的速度要求;支持8/16位的数据总线;采用了100脚PQFP封装。

系统主要是由单片机C8051F020来驱动以太网接口芯片RTL8019AS,完成远程数据的交换和控制指令的交换,从而由单片机发出指令使执行机构进行相应的指令操作。系统结构简图如图1所示:

图1 系统结构简图

从信号采集装置采集而来的模拟信经过单片机C8051F020内部的AD装换器变成后续器件能够处理的数字信号,之后将其按照系统所需要的TCP/IP精简协议规范要求,逐层进行封装,得到一个标准的以太网数据帧送往 RTL8019AS,然后数据帧便会按照 IEEE802.3标准经过以太网络发送到目的地址。接收数据的过程与发送数据过程类似,不再详述。

2 硬件设计

由图1系统结构简图易知,硬件设计的主要部分是单片机及其模数信号相互转换以及以太网通信部分组成。

2.1 嵌入式控制器

嵌入式控制器模块核心采用美国Cygnal公司生产的高性能片上处理系统C8051F020,单个芯片上集成了大量的模拟、数字设备资源,主要包括8路12位逐次逼近型ADC,具有100kbps的最大可编程转换速率和2.4V的内部电压基准,也可以选用外部电压基准;具有多达64个数字I/O端口,支持TTL信号电平;具有多于5个16位定时器/计数器资源;内部集成64KB的 flash程序存储器;片内集成了符合IEEE1149.1标准的JTAG编程扫描和调试电路,即使不用仿真器,也可以实现全速、非侵入式在系统程序调试。这些单片机资源,降低了成本,并简化了系统设计的复杂性。

2.2 RTL8019AS与C8051F20的连接

一方面在嵌入式系统中以太网芯片是不允许经常插拔的;另一方面为了精简系统、降低成本和减少连线,所以本设计方案中使RTL8019AS工作于跳线工作方式,在这种模式下通过连接RTL8019AS的一些引脚来设定其工作方式,省去了要通EEPROM中的内容来决定其工作方式,从而使控制程序变得精简。如图2所示其具体实现方式如下:

(1)让JP脚接高电平,使其工作在跳线工作方式下;

(2)C8051F20的数据总线与芯片RTL8019AS的 SD0-SD7口相连,用于8位数据交换;

(3)地址线A0-A4与芯片RTL8019AS的SA0-SA4地址线相连,用于单片机访问不同的寄存器;

(4)RD、WR分别为读、写信号,RST是芯片RTL8019AS的复位操作,AEN接地,使地址信号有效;

(5)INT0为定时器中断,用于通知C8051F20读取RTL8019AS缓冲中的数据;

(6)最后是RTL8019AS经过网络滤波芯片LPT连接到RJ45接头。

图2 RTL8019AS与C8051F20的连接电路图

3 软件设计

软件部分主要由两个部分组成,其中包括 TCP/IP精简协议[1]的实现和RTL8019AS的驱动程序。

3.1 TCP/IP精简协议的实现

TCP/IP实质上是一系列协议的总称,是实现Internet通讯必不可少的部分,其中包括十几个协议标准,在本研究课题中仅仅只需要实现嵌入式芯片连机通信,故而只需要选用其中部分即可,选用的标准是使代码最简,执行效率最高。以下作出了详细的介绍。

OSI七层网络模型理论[3-4]中指出,物理层是提供相邻设备的比特流传输;数据链路层负责在两个相邻节点间线路上无差错地传送以帧为单位的数据,采用IEEE802.3标准的以太网协议;网络层主要负责处理数据包在网络中的协议封装,该层选用IP协议,同时选用ARP协议实现IP地址到MAC物理地址的转换;传输层主要为两台主机上的应用程序提供端到端的通信,选用TCP传输层协议,但针对底层的采集装置进行适当的简化以适应嵌入式要求;应用层则定义了运行在不同端系统上的应用程序进程如何相互传递报文,根据本系统的实际需求选用应用层协议中的DNS、FTP以及SNMP三个协议。

3.2 RTL8019AS 的驱动程序

RTL8019AS的驱动程序[5]主要由初始化、数据包的收发两个部分组成,初始化是用来具体RTL8019AS的工作方式,设置一些必要的工作寄存器等;RTL8019AS对于数据包的收发均是采用 IEEE802.3协议,发送部分只要把数据写入缓冲区,启动执行命令,芯片会自动发送。通常情况下会在其内部RAM中开辟2个以太网数据包的空间作为发送缓冲区。数据的发送校验和总线数据包的碰撞检测与避免都是由芯片自身独立完成的,只需要配置发送数据的源地址、物理层地址、目的地址、数据包类型和发送的数据即可;RTL8019AS在接收到以太网数据包后自动将其存在接收缓冲区并发出中断信号,在中断服务程序中通过DMA就可接收到数据,即通过远端DMA把数据从以太网接口芯片RTL8019AS的RAM空间读回单片机中处理。

3.3 部分代码

由于篇幅有限,本文只附上数据发送子程序。在本程序主要是发送一个数据包的命令,数据包的长度最小为60个字节,最大1514个字节,需要发送的数据包要先存放在txdnet缓冲区中,然后远端通过DMA从缓冲区中读走数据。C程序[6]如下所示:

void send packet(union netcard*txdnet,unsigned int length)

{

unsigned char i;

unsigned int j;

page(0); //选择页零的寄存器

if(length<60)

length=60;

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

txdnet->etherframe.sourcenodeid[i]=ethernet_address.words[i];

txd_buffer=!txd_buffer;

if(txd_buffer)

reg09=0x40;

else

reg09=0x46;

reg08=0x00;

reg0b=length>>8;

reg0a=length&0xFF;

reg00=0x12;

for(j=4;j

reg10=txdnet->bytes.bytebuf[j];

for(i=0;i<6;i++) //重发最多6次

{

for(j=0;j<1000;j++)//检查txp为是否为低

if((reg00&0x04)==0)break;

if((reg04&0x01)!=0)break;//发送成功

reg00=0x3E;

}

if(txd_buffer)

reg04=0x40;

else

reg04=0x46;

reg06=length>>8;

reg05=length&0xFF;

reg00=0x3E;

}

程序说明:本程序中未定义的变量均在主程序中有所定义。

4 结论

本文中最大创新之处是通过嵌入式芯片C8051F20内嵌TCP/IP精简协议以驱动以太网接口芯片RTL8019AS构成以太网通信接口。它只需要将外部的模拟信号直接通过接口就可以实现联机上网。这是一个通用型的设计,它相对于传统的以太网通信接口模块而言成本低、实现方便。非常适合工业控制现场和家电物联网等方面的应用,具有良好的应用前景。

[1]苏锦秀,杨庆江,张广璐.以太网控制芯片 RTL8019AS详细配置[J].广州:现代电子技术出版社,2007:151-1531.

[2]陈立家,焦战立,熊文龙.基于精简TCP/IP协议栈网络服务器的实现[J].武汉理工大学学报,2007:565-5681.

[3]W.Richard Stevens.TCP/IP 详解卷 1:协议[M].范建华,等,译.北京:机械工业出版,2000:15-170.

[4]W.Richard Stevens.TCP/IP 详解卷 2:实现[M].范建华,等,译.北京:机械工业出版社,2001:54-170.

[5]赵建领.51 系列单片机开发宝[M].北京:电子工业出版社,2007.

[6]谭浩强.C 语言程序设计[M].3 版.北京:清华大学出版社,2005:29-31.

猜你喜欢
精简以太网数据包
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
SmartSniff
时常精简多余物品
一种面向应用的流量监测精简架构设计
谈实时以太网EtherCAT技术在变电站自动化中的应用
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
应用于SAN的自动精简配置架构设计与实现
视觉注意的数据包优先级排序策略研究
移动IPV6在改进数据包发送路径模型下性能分析