版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MACROBUTTONMTEditEquationSection2SEQMTEqn\r\hSEQMTSec\r1\hSEQMTChap\r1\h基于MCU的以太网接入模块设计姓名:学号:指导教师::专业:完成日期:20
摘要给出了单片机控制RTL8019AS实现以太网通讯的软硬件设计方案。首先设计了系统的硬件电路,并对接口电路的设计进行了详细的阐述,然后设计了RTL8019AS的以太网驱动程序.最后通过一个简单的数据收发试验验证了设计的正确性。关键词RTL8019AS;51单片机;TCP/IP协议;传感器AbstractGivenSCMRTL8019ASEthernetcommunicationshardwareandsoftwaredesign.Designthehardwarecircuit,theinterfacecircuitdesignindetail,andthendesignRTL8019ASEthernetdriver.Sendandreceivedatathroughasimpletesttoverifythecorrectnessofthedesign.
KeywordsTheRTL8019AS;51microcontroller;TCP/IPprotocol;sensor
目录27291第1章绪论 7278601.1本设计的背景 7231631.2以太网络接口芯片RTL8019AS介绍 732573第2章、系统总体结构设计 10101782.1系统控制模块的硬件设计 1025642.11控制系统的主要硬件电路 10120922.2系统控制模块的软件设计 10320782.21TCP/IP协议 10135292.22软件设计流程 11225632.3程序部分 11171412.31主程序 11115442.32发送控制过程 13135252.33接收控制过程 1414684第3章总结 1619964第4章参考文献 172352第5章设计总结 183402第6章致谢 19第1章绪论1.1本设计的背景随着互联网技术的飞速发展,Internet网络日益成为人们日常生活中必不可少的工具。人们在使用互联网学习、娱乐的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以便共享网络中庞大的信息资源,给人们的工作学习带来更大的便利。就目前来看,利用8位的微处理器,实现与Internet网络的通信,具有十分重要的意义。本设计主要为了解决利用单片机控制网卡芯片实现以太网的链接,已达到最大程度的利用网络资源,方便人们生活学习的目的。1.2以太网络接口芯片RTL8019AS介绍RTL8019AS:是台湾Realtek公司制造的一种高集成度的10Mb/s以太网控制芯片,可实现基于以太网协议的MAC层的全部功能,内置16kBSRAM、双DMA通道和FIFO,可完成数据包的接收和发送功能。主要性能(1)符号EthernetÒ与IEEE802.3(10Base5,10Base2,10BaseT)标准;(2)全双工,收发可同时达到10Mb/s的速率;(3)内置16kB的SRAM,用于收发缓冲,降低对主处理器的速度要求;(4)支持8/16位数据总线8个中断申请线以及16个I/O基地址选择;(5)支持UTP,AUI,BNC自动检测还支持对10BaseT拓扑结构的自动修复;(6)允许4个诊断LED引脚可编程输出;(7)100脚的PQFP封装,缩小了PCB尺寸。内部结构:RTL80l9AS内部可分为远程DMA接口、本地DMA接口、MAC(介质访问控制)逻辑、数据编码解码逻辑和其他端口。内部结构如图l所示ISA总线接口ISA总线接口ENA(编码译码)逻辑即插即用PnPBootROM端口EEPROM端口AUI接口双绞线接口8K*16SROMMAC逻辑图一远程DMA接口是指单片机对RTL80l9AS内部RAM进行读写的总线,即ISA总线的接口部分。单片机收发数据只需对远程DMA操作。本地DMA接口是指RTL80l9AS与网线的连接通道,完成控制器与网线的数据交换。MAC(介质访问控制)逻辑完成以下功能:当单片机向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL80l9AS中的发送缓存区,然后发出传送命令;当RTL80l9AS完成了上一帧的发送后,再开始此帧的发送。RTL80l9AS接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;收满一帧后,以中断或寄存器标志的方式通知主处理器。FIFO逻辑对收发数据作l6字节的缓冲,以减少对本地DMA请求的频率。2.3内部RAM地址空间分配RTL8Ol9AS内部有两块RAM区。一块l6K字节,地址为OX4OOO~OX7fff;一块32字节,地址为OXOOOO~OXOOlf。RAM按页存储,每256字节为一页。一般将RAM的前l2页(即OX4OOO~OX4bff)存储区用作发送缓冲区;后52页(即OX4cOO~OX7fff)存储区用作接收缓冲区。第O页叫Prom页,有32字节,地址为OXOOOO~OXOOlf,存放以太网物理地址。要接收和发送数据包就须通过DMA读写RTL8Ol9AS内部的l6KBRAM。实际上它是双端口的RAM,是指它有两套总线连接到此RAM,一套总线是RTL8Ol9AS读或写此RAM,即本地DMA;另一套总线是单片机读或写该RAM,即远程DMA第2章、系统总体结构设计2.1系统控制模块的硬件设计系统控制单元以单片机主控模块为核心.其他外围电路主要包括:ISP下载线模块、系统供电模块、硬件时钟模块、网络接口卡模块、外部数据采集模块。2.11控制系统的主要硬件电路本系统的主控模块主要采用STC公司的89C52作为主控芯片其中具体包括在线编程模块电路、系统复位电路、系统供电电路、网卡驱动电路、外部数据采集电路。要实现8位微处理器的上网首先要解决的就是与以太网的连接问题,即如何将通用处理器的网络装置应用于嵌入式网络的开发与应用。目前市面上有许多型号的以太网控制芯片,多数功耗较高、功能复杂,不适合用于价格低廉的嵌入式系统。还需要考虑的一点是网络接口芯片(RTL8019AS)与单片机的接口不能太复杂,要尽量少占用单片机的系统资源。根据上面的原则,选用RTL8019AS作为网络接口芯片,网络接口卡设计方案如图二所示。单片机单片机外部RAM存存储器网络控制器隔离滤波器RJ45串口电平转换芯片Pc机网络接口串口EEPROM图二2.2系统控制模块的软件设计2.21TCP/IP协议嵌入式设备网络化的关键是实现TCP/IP网络协议。众所周知,TCP/IP是一个数量庞大的协议体系,是由几百种网络协议组成的集合,在嵌入式系统有限的资源中难以完全实现。且嵌入式系统以应用为中心,即使具有特定功能的计算机系统,也不需要实现那么多的协议。因此系统设计的首先就是进行TCP/IP协议栈子集的选择。TCP/IP常被认为是一个由链路层、网络层、传输层和应用层组成的四层协议系统,且每一层都有相应的协议集合用以实现不同的功能。数据链路层主要处理和传输介质相关的物理接口部分,考虑到以太网数据流量大并且通用性强,因此采用以太网协议,用RJ45接口把嵌入式设备连入网络。网络层主要作用是处理数据包在网络中的协议封装,该层选用TCP/IP协议栈的核心IP协议,同时选用ARP协议实现IP地址到MAC物理地址的转换。传输层主要为两台主机上的应用程序提供端到端的通信,有UDP和TCP两种协议。UDP协议是不面向连接的,因此不能保证数据传输的可靠性。TCP是面向连接的,但是其可靠性的保证是以许多复杂措施以及由此而增加的开销为代价换来的。因此在此选择TCP为传输层协议,但是针对应用进行简化以适应嵌入式应用的要求。应用层负责处理特定的应用程序部分,应用层协议种类很多,考虑到嵌入式应用的特殊性,不选取通用的应用层协议。2.22软件设计流程对网卡编程就是对网络接口控制器(NIC)RTL8019AS中各寄存器进行编写程序控制,进而完成数据分组的正确发送及接收。2.3程序部分2.31主程序主程序可分为网络通讯和串行通讯这两部分。网络通讯又可分为网卡初始化、发送控制和接收控制三部分。主程序框图如图三所示。YY初始化串口初始化网卡接收串口数据装入以太网帧接收以太网帧收到确认帧N图三网卡初始化过程如下:RTL8019AS的初始化主要是设置一些工作参数,如RAM的分配,中断初始化,MAC地址设置,接收设置,发送设置等,具体在以下程序中注释。voidrtl8019Init(void){ RTL8019_RESET_PORT_H(); delayms(50);RTL8019_RESET_PORT_L();//RTL8019AS复位管脚置0 RTL8019WRITE(ISR,rtl8019Read(ISR)); //软件复位 delayms(50);RTL8019WRITE(CR,0xE1);//选择第3页,配置寄存器RTL8019WRITE(0x01,0xC0);//EEM1=EEM0=1RTL8019WRITE(CONFIG2,0x20);//设置网卡为10M自动检测模式RTL8019WRITE(CONFIG3,0);//设置LED工作模式delayms(255);RTL8019WRITE(0x01,0);//EEM1=EEM0=0RTL8019WRITE(CR,0x21);//第0页 delayms(2);RTL8019WRITE(DCR,DCR_INIT);//#defineDCR_INIT0x58 RTL8019WRITE(RBCR0,0x00); RTL8019WRITE(RBCR1,0x00); RTL8019WRITE(RCR,0x04);//接收结构寄存器 RTL8019WRITE(TCR,0x02);//传送配置寄存器RTL8019WRITE(TPSR,TXSTART_INIT);//#defineTXSTART_INIT0x40 RTL8019WRITE(PSTART,RXSTART_INIT);//#defineRXSTART_INIT0x47 RTL8019WRITE(BNRY,RXSTART_INIT);//#defineRXSTART_INIT0x47 RTL8019WRITE(PSTOP,RXSTOP_INIT);//#defineRXSTOP_INIT0x60 RTL8019WRITE(ISR,0xFF);//清除中断标志 RTL8019WRITE(IMR,IMR_INIT);//中断屏蔽 RTL8019WRITE(CR,0x61);//第1页 delayms(2); RTL8019WRITE(CURR,RXSTART_INIT);//#defineRXSTART_INIT0x47 //设置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); //starttheNIC}//endrtl8019asinit2.32发送控制过程在网络中,帧传输的过程就是发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡发送到网络的传输线上。发送程序框图如图4所示。数据长度=46数据长度=46数据长度+14初始化远程字节计算器RBCR启动远程DMA数据写入缓冲区启动本地DMA发送字节计数器赋值初始化发送页起始地址寄存器TTTPSR发送缓冲区数据到网上初始化数据长度小于46《《《度,444444646发送完毕发送完毕返回YYNNNYYY图四首先设置网卡发送数据包的RAM首地址,用以存放要发送的数据,和上两节写RAM相同。然后设置远程读此数据包的长度,(RBCR1,0在读数据包的时候作用为要读数据包的长度;在发送数据包的时候作用为远程接收此包时,此包的有效字节长度,相当于RTL8019AS接收数据包的Byte3,4,详细请看第二章的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,(1<<ISR_PTX));//清除发送中断标志 RTL8019WRITE(RBCR0,(unsignedchar)(packetLength));//远程读数据包长度的低8位 RTL8019WRITE(RBCR1,(unsignedchar)(packetLength>>8));//远程读数据包长度的高8位 RTL8019WRITE(TBCR0,(unsignedchar)(sendPacketLength));//发送数据包长度的低8位 RTL8019WRITE(TBCR1,(unsignedchar)((sendPacketLength)>>8)); //发送数据包长度的高8位 RTL8019WRITE(CR,0x12);//启动写RAM命令for(unsignedinti=0;i<length;i++)RTL8019WRITE(RDMAPORT,Buffer[i]);//写数据到RAMRTL8019WRITE(CR,0x24);//发送数据包CR的TXP=1 RTL8019WRITE(ISR,(1<<ISR_RDC));//清除RAM操作完成标志2.33接收控制过程读数据包之前,可通过读BNRY和CURR来判断有无数据包的接收,BNRY=CURR的时候说明没有数据包接收,当BNRY不等于CURR时,说明有数据包收到,此时可从以BNRY为首地址的RAM中读出4个字节来判断收到数据包的长度,从而设置RBCR1,0,再从接收RAM中读出以太网数据包。需要注意的是,设置完RBCR1,0后,再从RAM读数据包的时候,首地址为BNRY+4,因为前4个字节已经读过了,如果不加4,读到的数据将不完整;同时,读之前还要判断是否有内存溢出,如果溢出,则做相应的处理。rtl8019ProcessInterrupt();//检测RAM是否溢出RTL8019WRITE(CR,0x62);//第1页读CURR curr=rtl8019Read(CURR);//读CURR RTL8019WRITE(CR,0x22);//第0页读BNRY bnry=rtl8019Read(BNRY);//读BNRY if(bnry==curr) return;//没有包,返回RTL8019WRITE(ISR,(1<<ISR_PRX));//清除接收中断标志RTL8019WRITE(RBCR0,4);RTL8019WRITE(RBCR1,0);RTL8019WRITE(RSAR0,0);RTL8019WRITE(RSAR1,bnry);RTL8019WRITE(CR,0x0A);//启动读RAM命令 for(i=0;i<4;i++) buffer[i]=rtl8019Read(RDMAPORT);RTL8019WRITE(CR,0x22);//终止RAM操作//等待RAM操作完成for(i=0;i<=20;i++)if(rtl8019Read(ISR)&1<<6)break;RTL8019WRITE(ISR,1<<6);//清除RAM操作完成中断标志 rxlen=(buffer[3]<<8)+buffer[2];//数据包实际长度 nextPage=buffer[1];//下一数据包页的首地址 ReadAddress=(bnry<<8)+4;//读实际数据包的RAM地址 //读实际数据包RTL8019WRITE(RBCR0,(unsignedchar)rxlen);RTL8019WRITE(RBCR1,(unsignedchar)(rxlen>>8));RTL8019WRITE(RSAR0,(unsignedchar)ReadAddress);RTL8019WRITE(RSAR1,(unsignedchar)(ReadAddress>>8));RTL8019WRITE(CR,0x0A);//启动读RAM命令 for(i=0;i<(rxlen-4);i++) DataBuffer[i]=rtl8019Read(RDMAPORT);RTL8019WRITE(CR,0x22);//终止RAM操作//等待RAM操作完成for(i=0;i<=20;i++)if(rtl8019Read(ISR)&1<<6)break;RTL8019WRITE(ISR,1<<6);//清除RAM操作完成中断标志RTL8019WRITE(BNRY,nextPage);//设置下一个数据包的页地址第3章总结RTL8019AS芯片具有性价比高、连接方便等特点,是进行嵌入式以太网设计时首选的控制芯片,本文利用单片机控制RTI8019AS来实现网络通信,主要解决了硬件电路连接和以太网驱动程序设计的问题。该方法在工业自动化系统、远程分散式设备控制、网络家电等方面具有广阔的应用前景。第4章参考文献[1]李华.MCS-51系列单片机实用接口技术[M].北京:北京航空大学出版社,2002.[2]杨延双,张建标,王全民.TCP/IP协议分析及应用[M].北京:机械工业出版社,2007[3]BehrouzA.Forouzan.TCP/IP协议族(第四版).王海等译[M].北京:清华大学出版社,2011[4]韩毅刚.计算机网络技术[M].北京:机械工业出版社,2010[5]RTL8019AS数据手册[6]D.Gaponstev.Quasi-single-modefiberlasernears2kWoutputwithhigh-qualitybeam[J].LaserFocusWorld.2005[7]谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,2003[8]罗军周,钱松荣,杨明等.TCP/IP协议及网络编程技术[M].北京:清华大学出版社,2004[9]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,1998[10]严天峰.单片机开发[M].成都:科学出版社,2007[11]任清珍,黄天戍.多路数据采集内存使用及存盘法[J].计算机应用研究,1991年03期[12]张家喜.用PC—1500构成的多路数据采集系统[J].工业仪表与自动化装置,1992年04期[13]章公器.8051单片机开发的几点经验[J].电子与自动化,1994年01期[14]章公器.8051单片机开发的几点经验[J].电子技术应用,1994年03期[15]汪家铭.分散式数据采集系统IMP[J].数据采集与处理,1991年02期[16]A.Neto,H.Fernandes,A.Duarte,Firesignal-Dataacquisitionandcontrolsystemsoftware[J].FusionEngineeringandDesign82(2007)[17]DavidGay,PhilLevis,RobVonBehren,etal.ThenesCLanguage:AHolisticApproachtoNetworkedEmbeddedSystems[J].ProceedingsofProgrammingLanguageDesignandImplementation(PLDI),1996第5章设计总结在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品,达到了预期的目的,完了最初的设想。通过这一次的经验我意识到了对电路的设计、布局要先有一个好的构思,而且要认真仔细的检查各个功能模块的具体情况,确保不遗留什么元件,才做出美观、大方的电路板。程序编写中,先研究各个功能模块的程序,不懂的就通过查资料或者请教老师和同学来解决,然后再整理好这些程序,最终完成了能实现整个设计要求的程序。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,也练就了我们的耐心和细心,做什么事都要认真仔细,因为细节决定成败。总之,这次设计使我的能力得到了全方位的提高。第6章致谢这次的设计和论文是在李老师的悉心指导下完成的。您严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,您都始终给予我细心的指导和不懈的支持。在此谨向李老师致以诚挚的谢意和崇高的敬意。最后,衷心感谢在百忙之中抽出宝贵时间对此论文进行评阅与审议的李老师。感谢学院给我提供了一个展现自己的舞台,给我一次难得煅炼的机会,使得我的动手能力和专业技能都有了很大的提高。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现单片机监测系统在挤压机上的应用MSP430单片机在智能水表系统上的研究与应用HYPER
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论