当时工业操控体系中盛行的操控方法:底层设备选用RS232总线结构,而上层的管理层一般选用以太网结构。该操控方法使信号能够在企业的Intranet上及时发布和同享,还能够在Internet/Intranet的任何方位对现场智能设备进行在线操控、功用组态以及长途确诊等,完结了操控网络真实意义上的开放性和互操作性。而RS485总线是一种依据平衡发送和差分接纳的串行总线,具有很强的抗共模搅扰才能,在恰当的波特率下传输间隔很远。一起因为其硬件规划简略、操控便利、易于进行网络扩展,被广泛的运用在许多工业现场。
本文所研讨的嵌入式以太网适配器,便是要处理嵌入式设备网络通讯的问题,便利嵌入式体系与核算机网络的通讯,完结长途监控、拜访及数据的传输。
一、首要芯片挑选及简介
1、单片机AT89S52
本规划中AT89S52作为中心处理器。AT89S52是Atmel公司出产的低功耗、高功用CMOS8位单片机,片内含有8k字节的EPROM和256字节的RAM。具有ISP(在体系编程)功用。它具有灵敏性高、运用便利、价格低廉等长处。因而,该芯片在嵌入式操控体系中得到了广泛运用。单片机AT89S52经过以太网传到PC机完结长途操控。运用AT89S52的ISP(在体系编程)功用,很便利地把编好的程序写到单片机中,而且调试、修正和晋级很简单。因为AT89S52单片机自身供给了一组全双工串行传输口,由TXD引脚来传送串行数据,而由RXD引脚来接纳数据,但是其作业逻辑电平皆为TTL电平(0V,5V)。AT89S52最小体系如图1所示。
图1 AT89S52最小体系
2、网络操控芯片ENC624J600
ENC624J600网络操控器是一款带有行业规范串行接口和并行接口的,专为嵌入式运用体系规划的独立以太网操控芯片。ENC624J600经过SPI或并行接口与单片机通讯,数据传输速率为14Mbit/s(关于SPI)至160Mbit/s(关于16位的并行接口),ENC624J600首要功用特性有,自适应的挑选传输速率,支撑10Mbit/s或100Mbit/s;充沛支撑半双工或全双工交流式以太网;可编程填充和CRC生成;供给24KBA片内RAM缓冲区,用于履行发送和接手操作,主单片机还能够用它来进行惯例的存储操作;支撑总线8位或16位CPU拜访,可编程主动回绝过错数据包;可编程为发生冲突时主动重发。
ENC624J600器材契合IEEE 802.3中适用于10 Base-T 和100 Base-TX 以太网的悉数规范,包含许多可选条款,例如主动洽谈。ENC624J600器材选用了一系列数据包过滤机制以对传入数据包进行约束。它还供给了一个16位宽的内部DMA以完结快速数据吞吐和硬件IP校验和核算支撑。关于需求SSL、TLS 以及其他与加密相关的协议的安全和身份验证功用的运用,供给了一个安全引擎模块。 该引擎可履行RSA、Diffie- Hellman、AES、MD5 和SHA-1 算法核算,以缩短代码巨细、加速衔接的树立和吞吐,并削减固件开发的作业量。经过SPI或并行接口与单片机通讯,数据传输速率为14 Mbit/s(关于SPI)至160 Mbit/s (关于16 位解复用并行接口)。供给了专用于LED 衔接、活动指示以及发送/接纳/DMA 中止的引脚。供给了一个通用24 KB片内RAM缓冲区,用于履行发送和接纳操作。主单片机还能够用它来进行惯例存储操作。通讯协议(例如TCP)可运用此存储器保存或许需求从头发送的数据。在终究产品易于出产性方面,ENC624J600 系列的每个器材都预编程了仅有的非易失性MAC地址。在大多数情况下,这使终究器材省去了串行编程过程,图2给出了器材的一般框图。
图2 ENC624J600的框图
3、外部数据存储器FM1808
FM1808是依据铁电存储器原理制作的并行接口256Kbit铁电存储器,FM1808的首要特性如下:选用先进的铁电技能制作;存储容量为256Kbit;读写寿命为100亿次;掉电数据可保存10年;写数据无延时;存取时刻为70ns;低功耗,作业电流为25mA,待机电流仅为20uA;选用单5V作业电压;作业温度规模为-40℃~+85℃;具有特别优秀的防湿润、防电击及抗震功用;与SRAM或并行EEPROM管脚兼容。
二、硬件电路规划
1、AT89S52与以太网操控器衔接电路的规划
本体系里,P0口被作为低8位地址/数据复用,当作数据线运用时用来衔接NC624J600的8位数据接口。当作为地址线运用时,为了给ENC624J600供给15位地址的低8位,要选用复用技能,对地址和数据进行别离。因而P0口衔接到74ls373的D0~D7,把低8位地址暂存,随后有地址锁存器的O0~O7给ENC624J600供给15位地址的低8位,而高7位由P2口经过74ls245供给,如图3所示。
要使与单片机的接口具有高度的灵敏性,ENC624J600器材供给了两种挑选:依据串行外设接口(SPI)规范的串行接口和灵敏的8/16位并行从端口接口。在任何给定时刻只能运用一个接口。本课题中,AT89S52单片机和ENC624J600的衔接挑选PSP接口,如图3所示。要挑选PSP接口,则在上电时经过INT/ SPISEL引脚上的SPISEL功用由硬件挑选I/O接口。要完结此操作,需在向器材供电且器材退出上电复位状况后将施加到该引脚的电平约锁存1至10μs。假如SPISEL被锁存在逻辑高电平状况,将使能串行接口。假如SPISEL被锁存在逻辑低电平状况,则使能PSP接口。
图3 AT89S52与以太网操控器衔接电路的规划
2、AT89S52和与外部扩展存储器FM1808的电路规划
AT89S52与FM1808的衔接与AT89S52与NC624J600的衔接相似,P0口被作为低8位地址/数据复用,当作数据线运用时用来衔接FM1808的8位数据。当作为地址线运用时,选用复用技能,对地址和数据进行别离,给FM1808供给15位地址的低8位,而高7位由P2口经过74ls245供给,如图4所示。
图4 AT89S52和与外部扩展存储器FM1808的电路规划
3、电源电路规划
电源模块是一块电路板最为根本的组成部分,只要安稳牢靠的电源为板上芯片供电才能够保证各功用模块的正常作业,因而在电源模块的规划时首要应该开端核算电路板一切元件的功耗,然后在保证功耗的前提下挑选相应的芯片进行直流电源模块规划,尽量做到体积小,重量轻;性价比合理;能长时间安稳、牢靠地作业。
本适配器所需求的电源有3.3V。体系需求3.3V电源供电的芯片以太网操控器等。考虑到体系或许作业于高速通讯形式,耗费电流会非常大,所以选用1片UC385芯片,每片UC385输出电流可达800mA,能够彻底满意体系的需求。详细电路如图5所示 。
图5 电源模块规划
三、软件部分规划
1、主函数
上电先查询ARP,若未获取MAC,则发送ARP恳求。若有新的数据,若TCP应对没有完结,则应对TCP,完结TCP三次握手。然后依据恳求类型呼应HTTP。
2、TCP应对部分
1) 三次握手阶段
所谓三次握手(Three-way Handshake),是指树立一个TCP衔接时,需求客户端和服务器一共发送3个包。三次握手的意图是衔接服务器指定端口,树立TCP衔接,并同步衔接两边的序列号和承认号并交流 TCP 窗口巨细信息。
图6 三次握手(Three-way Handshake)
榜首次握手:客户端发送一个TCP的SYN标志方位1的包指明客户计划衔接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
图7 榜首次握手
第2次握手:服务器发回承认包(ACK)应对。即SYN标志位和ACK标志位均为1一起,将承认序号(Acknowledgement Number)设置为客户的ISN加1以。即X+1。
第三次握手,客户端再次发送承认包(ACK) SYN标志位为0,ACK标志位为1.而且把服务器发来ACK的序号字段+1,放在承认字段中发送给对方。而且在数据段放写ISN的+1
图9 第三次握手
其实在握手和完毕时承认号应该是对方序列号加1,传输数据时则是对方序列号加上对方带着运用层数据的长度。
在传输TCP分包的过程中也是需求发送一分包,承认一分包的,而TCP承认包只要54字节,便是只要头部信息。因而在传输TCP分包序列号一向不变,承认号按发送数据的长度递加即可。
3、 HTTP
1)恳求
衔接成功树立后,开端向web服务器发送恳求,这个恳求一般是GET或POST指令(POST用于FORM参数的传递)。GET指令的格局为:GET 途径/文件名 HTTP/1.0文件名指出所拜访的文件,HTTP/1.0指出Web浏览器运用的HTTP版别。现在能够发送GET指令:GET /mytest/index.html HTTP/1.0,
2)应对
web服务器收到这个恳求,进行处理。从它的文档空间中查找子目录mytest的文件index.html。假如找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了奉告浏览器,Web服务器首要传送一些HTTP头信息,然后传送详细内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分隔。常用的HTTP头信息有:
① HTTP 1.0 200 OK 这是Web服务器应对的榜首行,列出服务器正在运转的HTTP版别号和应对代码。代码“200 OK”表明恳求完结。
② MIME_Version:1.0 它指示MIME类型的版别。
③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
④ content_length:长度值 它指示HTTP体信息的长度(字节)。
3)封闭衔接
当应对完毕后,Web浏览器与Web服务器有必要断开,以保证其它Web浏览器能够与Web服务器树立衔接。
4、提交表单GET/POST
GET恳求的数据会附在URL之后(便是把数据放置在HTTP协议头中),以?切割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。假如数据是英文字母/数字,原样发送,假如是空格,转换为+,假如是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其间%XX中的XX为该符号以16进制表明的ASCII。
POST把提交的数据则放置在是HTTP包的包体中。在FORM(表单)中,Method默以为“GET”。
本文中登录时提交表单数据选用的是POST方法,而提交操控信息表单时用的是GET。以下是用抓包的方法显着看出他们的不同之处。
图10 POST方法
图11 GET方法
图12 GET方法是提交的数据直接放在URL中了
5、整体软件规划
AT89S52单片机首要对ENC624J600进行初始化,首要应查询ESTAT寄存器的CLKRDY位,保证在装备MAC和PHY寄存器前有满足的延时;PHY寄存器用来设置通讯形式;编程ERXST和ERXND指针对接纳缓冲器进行初始化,当编程ERXST指针时,相同的值会主动更新ERXWRPT寄存器,接纳硬件将从ERXWRPT中的地址开端写入已收到的数据,为盯梢接纳的数据,ERXRDPT寄存器也需求用相同的值编程;为了能最大极限地下降主操控器的处理作业量,ENC624J600装备了不同的过滤器,可主动回绝不需求的数据包,一切的过滤器都由ERXFCON寄存器进行装备,能够运用ANDOR位对几个过滤器的测验成果作逻辑/与0或逻辑/或0运算;因为未被用作接纳缓冲器的存储空间都作为发送缓冲器,所以不需求对发送缓冲器进行特定的初始化,通常将存储空间分配为大的接纳缓冲器空间和较小的接纳存储空间。
在初始化完结后,即进入主循环程序,单片机将重复检测ENC624J600是否接纳到以太网帧(或许数据缓冲区B中有数据需求发送),当有数据接纳(或许发送)时则依据标志位进行相应的子函数处理,将数据存入数据缓冲区(或许发送至以太网上)。主程序流程如图13所示。