1、 学 士 学 位 论 文基于MCU的以太网接入模块设计姓 名:学 号:指导教师:院系(部所):专 业:完成日期:2013年05月15日摘 要 给出了单片机控制RTL8019AS实现以太网通讯的软硬件设计方案。首先设计了系统的硬件电路,并对接口电路的设计进行了详细的阐述,然后设计了RTL8019AS的以太网驱动程序最后通过一个简单的数据收发试验验证了设计的正确性。关键词 RTL8019AS; 51单片机; TCP/IP协议;传感器AbstractGiven SCM RTL8019AS Ethernet communications hardware and software design. De
2、sign the hardware circuit, the interface circuit design in detail, and then design RTL8019AS Ethernet driver. Send and receive data through a simple test to verify the correctness of the design.Key words The RTL8019AS; 51 microcontroller; TCP / IP protocol; sensor目 录第1章 绪论71.1本设计的背景71.2以太网络接口芯片RTL80
3、19AS 介绍7第2章、系统总体结构设计102.1系统控制模块的硬件设计102.11控制系统的主要硬件电路102.2系统控制模块的软件设计102.21 TCP/ IP 协议102.22 软件设计流程112.3程序部分112.31主程序112.32发送控制过程132.33接收控制过程14第3章 总结16第4章 参考文献17第5章 设计总结18第6章 致谢19第1章 绪论1.1本设计的背景随着互联网技术的飞速发展,Internet网络日益成为人们日常生活中必不可少的工具。人们在使用互联网学习、娱乐的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以便共享网络中庞大
4、的信息资源,给人们的工作学习带来更大的便利。就目前来看,利用 8位的微处理器,实现与Internet网络的通信,具有十分重要的意义。本设计主要为了解决利用单片机控制网卡芯片实现以太网的链接,已达到最大程度的利用网络资源,方便人们生活学习的目的。1.2以太网络接口芯片RTL8019AS 介绍RTL8019AS: 是台湾Realtek 公司制造的一种高集成度的10 Mb/ s 以太网控制芯片, 可实现基于以太网协议的MAC 层的全部功能,内置16 kB SRAM、双DMA 通道和FIFO,可完成数据包的接收和发送功能。主要性能( 1) 符号Ethernet 与IEEE802.3 ( 10Base5
5、,10Base2, 10BaseT) 标准;( 2) 全双工, 收发可同时达到10 Mb/ s 的速率;( 3) 内置16 kB 的SRAM, 用于收发缓冲, 降低对主处理器的速度要求;( 4) 支持8/ 16 位数据总线8 个中断申请线以及16 个I/ O 基地址选择;( 5) 支持UTP,AUI,BNC自动检测还支持对10BaseT 拓扑结构的自动修复;( 6) 允许4个诊断LED 引脚可编程输出;( 7) 100 脚的PQFP 封装,缩小了PCB 尺寸。内部结构:RTL80l9AS内部可分为远程DMA接口、本地DMA接口、MAC(介质访问控制)逻辑、数据编码解码逻辑和其他端口。内部结构如
6、图l所示ISA总线接口ENA(编码译码)逻辑即插即用PnPBoot ROM端口EEPROM端口AUI接口双绞线接口8K*16SROMMAC逻辑图一 远程DMA接口是指单片机对RTL80l9AS内部RAM进行读写的总线,即ISA总线的接口部分。单片机收发数据只需对远程DMA操作。本地DMA接口是指RTL80l9AS与网线的连接通道,完成控制器与网线的数据交换。MAC(介质访问控制)逻辑完成以下功能:当单片机向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL80l9AS中的发送缓存区,然后发出传送命令;当RTL80l9AS完成了上一帧的发送后,再开始此帧的发送。RTL80l9AS接收到的数
7、据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;收满一帧后,以中断或寄存器标志的方式通知主处理器。FIFO逻辑对收发数据作l6字节的缓冲,以减少对本地DMA请求的频率。2.3内部RAM地址空间分配RTL8Ol9AS内部有两块RAM区。一块l6K字节,地址为OX4OOOOX7fff;一块32字节,地址为OXOOOOOXOOlf。RAM按页存储,每256字节为一页。一般将RAM的前l2页(即OX4OOOOX4bff)存储区用作发送缓冲区;后52页(即OX4cOOOX7fff)存储区用作接收缓冲区。第O页叫Prom页,有32字节,地址为OXOOOOOXOOlf,存放以太网物理地址。要接收和
8、发送数据包就须通过DMA读写RTL8Ol9AS内部的l6KBRAM。实际上它是双端口的RAM,是指它有两套总线连接到此RAM,一套总线是RTL8Ol9AS读或写此RAM,即本地DMA;另一套总线是单片机读或写该RAM,即远程DMA第2章、系统总体结构设计2.1系统控制模块的硬件设计系统控制单元以单片机主控模块为核心其他外围电路主要包括:ISP下载线模块、系统供电模块、硬件时钟模块、网络接口卡模块、外部数据采集模块。2.11控制系统的主要硬件电路本系统的主控模块主要采用STC公司的89C52作为主控芯片 其中具体包括在线编程模块电路、系统复位电路、系统供电电路、网卡驱动电路、外部数据采集电路。要
9、实现8位微处理器的上网首先要解决的就是与以太网的连接问题,即如何将通用处理器的网络装置应用于嵌入式网络的开发与应用。目前市面上有许多型号的以太网控制芯片,多数功耗较高、功能复杂,不适合用于价格低廉的嵌入式系统。还需要考虑的一点是网络接口芯片(RTL8019AS)与单片机的接口不能太复杂,要尽量少占用单片机的系统资源。根据上面的原则,选用RTL 8019AS作为网络接口芯片,网络接口卡设计方案如图二所示。单片机外部RAM存 存储器网络控制器隔离滤波器RJ45串口电平转换芯片Pc机网络接口串口EEPROM 图二2.2系统控制模块的软件设计2.21 TCP/ IP 协议嵌入式设备网络化的关键是实现T
10、CP/ IP 网络协议。众所周知, TCP/ IP 是一个数量庞大的协议体系,是由几百种网络协议组成的集合, 在嵌入式系统有限的资源中难以完全实现。且嵌入式系统以应用为中心, 即使具有特定功能的计算机系统, 也不需要实现那么多的协议。因此系统设计的首先就是进行TCP/ IP 协议栈子集的选择。TCP/ IP常被认为是一个由链路层、网络层、传输层和应用层组成的四层协议系统, 且每一层都有相应的协议集合用以实现不同的功能。数据链路层主要处理和传输介质相关的物理接口部分, 考虑到以太网数据流量大并且通用性强, 因此采用以太网协议, 用RJ45接口把嵌入式设备连入网络。网络层主要作用是处理数据包在网络
11、中的协议封装,该层选用TCP/ IP 协议栈的核心IP 协议, 同时选用ARP 协议实现IP 地址到MAC 物理地址的转换。传输层主要为两台主机上的应用程序提供端到端的通信,有UDP和TCP两种协议。UDP协议是不面向连接的, 因此不能保证数据传输的可靠性。TCP是面向连接的,但是其可靠性的保证是以许多复杂措施以及由此而增加的开销为代价换来的。因此在此选择TCP为传输层协议,但是针对应用进行简化以适应嵌入式应用的要求。应用层负责处理特定的应用程序部分, 应用层协议种类很多, 考虑到嵌入式应用的特殊性,不选取通用的应用层协议。2.22 软件设计流程对网卡编程就是对网络接口控制器(NIC)RTL8
12、019AS 中各寄存器进行编写程序控制,进而完成数据分组的正确发送及接收。2.3程序部分2.31主程序主程序可分为网络通讯和串行通讯这两部分。网络通讯又可分为网卡初始化、发送控制和接收控制三部分。主程序框图如图三 所示。Y初始化串口初始化网卡接收串口数据装入以太网帧接收以太网帧收到确认帧N图三网卡初始化过程如下:RTL8019AS的初始化主要是设置一些工作参数,如RAM的分配,中断初始化,MAC地址设置,接收设置,发送设置等,具体在以下程序中注释。void rtl8019Init(void)RTL8019_RESET_PORT_H(); delayms(50); RTL8019_RESET_P
13、ORT_L(); /RTL8019AS复位管脚置0RTL8019WRITE( ISR, rtl8019Read(ISR) ) ; / 软件复位delayms(50); RTL8019WRITE(CR, 0xE1); / 选择第3页,配置寄存器 RTL8019WRITE(0x01, 0xC0); /EEM1=EEM0=1 RTL8019WRITE(CONFIG2, 0x20);/设置网卡为10M自动检测模式 RTL8019WRITE(CONFIG3, 0); /设置LED工作模式 delayms(255); RTL8019WRITE(0x01, 0); /EEM1=EEM0=0 RTL8019W
14、RITE(CR, 0x21); /第0页delayms(2);RTL8019WRITE(DCR, DCR_INIT); / #define DCR_INIT 0x58RTL8019WRITE(RBCR0,0x00);RTL8019WRITE(RBCR1,0x00);RTL8019WRITE(RCR,0x04); /接收结构寄存器RTL8019WRITE(TCR,0x02); /传送配置寄存器RTL8019WRITE(TPSR, TXSTART_INIT); /#define TXSTART_INIT 0x40RTL8019WRITE(PSTART, RXSTART_INIT); /#defin
15、e RXSTART_INIT 0x47RTL8019WRITE(BNRY, RXSTART_INIT); /#define RXSTART_INIT 0x47RTL8019WRITE(PSTOP, RXSTOP_INIT); /#define RXSTOP_INIT 0x60RTL8019WRITE(ISR,0xFF); /清除中断标志RTL8019WRITE(IMR, IMR_INIT); /中断屏蔽RTL8019WRITE(CR, 0x61); /第1页delayms(2);RTL8019WRITE(CURR, RXSTART_INIT); /#define RXSTART_INIT 0x
16、47 /设置MAC地址RTL8019WRITE(PAR0+0, MYMAC_0);RTL8019WRITE(PAR0+1, MYMAC_1);RTL8019WRITE(PAR0+2, MYMAC_2);RTL8019WRITE(PAR0+3, MYMAC_3);RTL8019WRITE(PAR0+4, MYMAC_4);RTL8019WRITE(PAR0+5, MYMAC_5); RTL8019WRITE(CR, 0x22);/ start the NIC /end rtl8019as init2.32发送控制过程在网络中,帧传输的过程就是发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡
17、发送到网络的传输线上。发送程序框图如图4所示。数据长度=46数据长度+14初始化远程字节计算器RBCR启动远程DMA数据写入缓冲区启动本地DMA发送字节计数器赋值初始化发送页起始地址寄存器TTTPSR发送缓冲区数据到网上初始化数据长度小于46度,444444646发送完毕发送完毕返回YYNNNYYY图四首先设置网卡发送数据包的RAM首地址,用以存放要发送的数据,和上两节写RAM相同。然后设置远程读此数据包的长度,(RBCR1,0在读数据包的时候作用为要读数据包的长度;在发送数据包的时候作用为远程接收此包时,此包的有效字节长度,相当于RTL8019AS接收数据包的Byte3,4,详细请看第二章的
18、3.9节),然后设置发送数据包的长度,:发送数据包的长度与远程读此数据包的长度是一样的吧!然后把要发送的数据包写入RAM,启动发送数据包命令,发送数据包,程序如下:RTL8019WRITE(CR,0x22); /第0页 开始命令while( rtl8019Read(CR) & 0x04 ); /有数据包发送则等发送完毕RTL8019WRITE(TPSR,0x40); /加载发送RAM页的首地址RTL8019WRITE(RSAR0,0x00); /写RAM地址 低8位RTL8019WRITE(RSAR1,0x40); /写RAM地址 高8位RTL8019WRITE(ISR,(18); /远程读数
19、据包长度的高8位RTL8019WRITE(TBCR0, (unsigned char)(sendPacketLength); /发送数据包长度的低8位RTL8019WRITE(TBCR1, (unsigned char)(sendPacketLength)8);/发送数据包长度的高8位 RTL8019WRITE(CR,0x12); /启动写RAM命令for(unsigned int i=0;ilength;i+) RTL8019WRITE(RDMAPORT, Bufferi); /写数据到RAMRTL8019WRITE(CR,0x24); /发送数据包 CR的TXP=1RTL8019WRITE
20、(ISR, (1ISR_RDC); /清除RAM操作完成标志 2.33接收控制过程读数据包之前,可通过读BNRY和CURR来判断有无数据包的接收,BNRY=CURR的时候说明没有数据包接收,当BNRY不等于CURR时,说明有数据包收到,此时可从以BNRY为首地址的RAM中读出4个字节来判断收到数据包的长度,从而设置RBCR1,0,再从接收RAM中读出以太网数据包。需要注意的是,设置完RBCR1,0后,再从RAM读数据包的时候,首地址为BNRY+4,因为前4个字节已经读过了,如果不加4,读到的数据将不完整;同时,读之前还要判断是否有内存溢出,如果溢出,则做相应的处理。rtl8019Process
21、Interrupt(); /检测RAM是否溢出RTL8019WRITE(CR,0x62); /第1页 读CURRcurr = rtl8019Read(CURR); / 读CURRRTL8019WRITE(CR,0x22); /第0页 读BNRYbnry = rtl8019Read(BNRY) ; /读BNRYif( bnry = curr )return ; /没有包,返回RTL8019WRITE(ISR, (1ISR_PRX); /清除接收中断标志RTL8019WRITE(RBCR0, 4); RTL8019WRITE(RBCR1, 0); RTL8019WRITE(RSAR0, 0); R
22、TL8019WRITE(RSAR1, bnry); RTL8019WRITE(CR, 0x0A); /启动读RAM命令for(i=0;i4;i+)bufferi = rtl8019Read(RDMAPORT); RTL8019WRITE(CR, 0x22); /终止RAM操作 /等待RAM操作完成 for(i = 0; i = 20; i+) if(rtl8019Read(ISR) & 16) break; RTL8019WRITE(ISR, 16); /清除RAM操作完成中断标志rxlen = (buffer38) + buffer2; /数据包实际长度nextPage = buffer1
23、; /下一数据包页的首地址ReadAddress = (bnry8); RTL8019WRITE(RSAR0, (unsigned char) ReadAddress); RTL8019WRITE(RSAR1, (unsigned char)( ReadAddress8); RTL8019WRITE(CR, 0x0A); /启动读RAM命令for(i=0;i(rxlen-4);i+)DataBufferi = rtl8019Read(RDMAPORT);RTL8019WRITE(CR, 0x22); /终止RAM操作 /等待RAM操作完成 for(i = 0; i = 20; i+) if(r
24、tl8019Read(ISR) & 16) break; RTL8019WRITE(ISR, 16); /清除RAM操作完成中断标志RTL8019WRITE(BNRY, nextPage); /设置下一个数据包的页地址第3章 总结RTL 8019AS芯片具有性价比高、连接方便等特点,是进行嵌入式以太网设计时首选的控制芯片,本文利用单片机控制RTI 8019AS来实现网络通信,主要解决了硬件电路连接和以太网驱动程序设计的问题。该方法在工业自动化系统、远程分散式设备控制、网络家电等方面具有广阔的应用前景。第4章 参考文献1李华.MCS-51系列单片机实用接口技术M.北京:北京航空大学出版社,200
25、2.2杨延双,张建标,王全民.TCP/IP协议分析及应用M.北京:机械工业出版社,20073Behrouz A.Forouzan.TCP/IP协议族(第四版).王海等译M.北京:清华大学出版社,20114韩毅刚.计算机网络技术M.北京:机械工业出版社,20105RTL8019AS 数据手册6D.Gaponstev.Quasi-single-mode fiber laser nears 2kW output with high-quality beamJ.Laser Focus World.2005 7谭浩强.C语言程序设计(第二版)M.北京:清华大学出版社,20038罗军周,钱松荣,杨明等.T
26、CP/IP协议及网络编程技术M.北京:清华大学出版社,20049徐爱钧,彭秀华.单片机高级语言C51应用程序设计M.北京:电子工业出版社,199810严天峰.单片机开发M.成都:科学出版社,200711任清珍,黄天戍.多路数据采集内存使用及存盘法J.计算机应用研究,1991年03期12张家喜.用PC1500构成的多路数据采集系统J.工业仪表与自动化装置,1992年04期13章公器.8051单片机开发的几点经验J.电子与自动化,1994年01期14章公器.8051单片机开发的几点经验J.电子技术应用,1994年03期15汪家铭.分散式数据采集系统IMPJ.数据采集与处理,1991年02期16A.
27、Neto,H.Fernandes,A.Duarte,Firesignal-Data acquisition and control system softwareJ.FusionEngineering and Design 82(2007)17David Gay,PhilLevis,Rob Von Behren,et alThe nesC Language:A Holistic Approach to Networked Embedded SystemsJProceedings of Programming Language Design and Implementation(PLDI),19
28、96第5章 设计总结在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品,达到了预期的目的,完了最初的设想。通过这一次的经验我意识到了对电路的设计、布局要先有一个好的构思,而且要认真仔细的检查各个功能模块的具体情况,确保不遗留什么元件,才做出美观、大方的电路板。程序编写中,先研究各个功能模块的程序,不懂的就通过查资料或者请教老师和同学来解决,然后再整理好这些程序,最终完成了能实现整个设计要求的程序。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,也练就了我们的耐心和细心,做什么事都要认真仔细,因为细节决定成败。总之,这次设计使我的能力得到了全
29、方位的提高。 第6章 致谢这次的设计和论文是在李老师的悉心指导下完成的。您严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,您都始终给予我细心的指导和不懈的支持。在此谨向李老师致以诚挚的谢意和崇高的敬意。 最后,衷心感谢在百忙之中抽出宝贵时间对此论文进行评阅与审议的李老师。感谢学院给我提供了一个展现自己的舞台,给我一次难得煅炼的机会,使得我的动手能力和专业技能都有了很大的提高。目 录第一章 总 论 11.1项目概况 11.2研究依据及范围 21.3结论 31.4建议 4第二章 项目建设的背景和必要性 52.1项目建设的背景 62.2项目建设
30、的必要性 7第三章 项目服务需求分析 9第四章 项目选址与建设条件 114.1选址原则 114.2项目选址 114.3建设条件 12第五章 建设方案与设计 125.1建设规模与内容 125.2总体规划设计 135.3结构方案 185.4主要配套设备 195.5给水工程 205.6排水工程 225.7电气设计 235.8节能设计 26第六章 项目实施进度和招投标管理296.1项目实施进度 296.2招投标管理 31第七章 环境影响分析 317.1项目主要污染源分析327.2 环境保护措施及治理效果 35第八章 消防、安全与卫生防护 378.1 消防 378.2 劳动安全 388.3 卫生防护 39第九章 组织机构、运作方式与项目实施进度399.1 项目建设组织机构399.2项目运营组织机构 419.3劳动定员 42第十章 投资估算和资金筹措4210.1投资估算4310.2项目所需流动资金 4910.3资金筹措 49第十一章 经济和社会效益评价 5011.1 经济效益评价5011.2 社会效益评价 50第十二章 结 论 50 12.1 主要结论 50 12.2 建 议 51附录:1、*发改局关于*迁建工程项目建议书的批复 2、*村镇建设管理所*迁建项目用地红线